How To Become A DevOps Engineer: Q&A Interview with Bobby Lopez

Some experts say they’re a ‘myth’ while others will go as far as to call them Unicorns…Do DevOps Engineers exist?

If you do a search on the topic you’ll find more questions than answers. So instead of just sharing another opinion, I decided to link up with a DevOps Engineer and do a little Q&A. Enjoy!

J. Bobby Lopez a.k.a. DevOps Engineer

Welcome, Bobby and thank you for being our guest on VMinstall. We appreciate you taking time to share your story. We’re also very excited to learn what it took to earn this illusive career role.

Let’s get started with our interview.

1. Who is Bobby Lopez?

I work as a DevOps Engineer at Ethoca, a brilliant financial services company at the forefront of electronic fraud prevention.

My own story extends back over fifteen years, where I’ve served as a Senior Build and Release Engineer at RBC Capital Markets in Toronto; along with several lead roles in support, operations, tools development that also included business intelligence during an eight-year tenure at VMware Inc.

It all began at the age of 12 when I got my first IBM XT 8086 with a monochrome monitor, a Hayes-compatible 1200 baud modem, and a 20MB hard drive.

It was in my early teens when I started using Linux.

At that time I ran several distributions including Slackware, Redhat, and Monkey Linux. I liked experimenting with different operating systems.

My earliest motivations for scripting involved getting newer games to run on older hardware. And in the DOS 6.22 and Windows 3.1 days, tools like QEMM386 were top-of-the-line. Later this fascination turned to programming with Watcom Basic, Euphoria, C, and Perl.

We did everything!

Then around 2000-2001, I started learning about infrastructure when a close friend and I decided to start our own IT company. Our company offered telecommunications infrastructure design and implementation (including the setup of Cisco Catalysts, Asterisk PBX, and BGP configurations).

We used Debian Linux and Apache Web-server to create and host CGI-based web-applications written in Perl and PHP.

I developed and maintained applications while also setting up Cisco switches and routers, maintaining the company firewall with ipchains/iptables, and setting up our corporate mail servers with Exim/Postfix and IMAP.

We used SNORT as an intrusion detection system and had a bundle of network monitoring in place with Big Brother (BB4), ntop, and MRTG.

What makes you tick?

When I was younger, I was heavily inspired by “white-hat” hackers of the time. People like Richard Stallman, Eric Raymond, and Linus Torvalds.

I subscribed deeply to the Unix Philosophy because it all just seemed to make sense.

Computers were so empowering!

The core of what keeps me passionate about the work that I do is ‘the joy of problem-solving’. I find it enjoyable teaching and learning anything that can increase productivity. I love reducing time-consuming, and labor-intensive tasks to nothing more than a script and a cron job.

On a more personal level, I keep very busy with my family. My wife and I have two kids – a little girl, and another due in April.

Curiosity seems to be a common trait in DevOps Engineers.

VMI: I don’t think Bobby knew developing skills across so many technologies would one day serve as the foundation of a cutting-edge career as a DevOps Engineer.

2. What is DevOps?

The term “DevOps” currently has varying interpretations.

You can find many discussions and opinions on the web debating this very question. If I had to refer the best definition of DevOps I would send people to a Wikipedia article, and then maybe to resources about DevOps posted by Puppet Labs.

For me, DevOps boils down to 3 distinct concepts:

#1. Focusing attention on bridging communication gaps between Development and Operations teams.

This includes implementing tools to support the ongoing improvement of the communication process.

I cannot emphasize enough how the quality and speed of communication between teams is the most important aspect of DevOps for me.

All processes move along faster and smoother when everyone is reading from the same playbook.

#2. The ability to wear multiple hats, and wear them well.

A DevOps Engineer needs the ability to understand system design from an architect’s perspective, software development from a developer’s perspective, and operations and infrastructure from the perspective of a seasoned Systems Administrator.

At the same time, being able to understand release cycles as-well-as feature or bug priorities from the perspective of a product manager becomes invaluable.

#3. The ability to execute – to be able to actually do what needs to be done.

Another definition I see a lot is from vendors trying to pass-off their tools as DevOps but that’s going a little too far.

I admit it’s exciting when folks start talking about Puppet, Chef, Ansible, Salt, Docker, etc. However, as a warning, I’ve seen some engineers and managers who are too quick to address configuration management, continuous integration, and continuous delivery with the latest software tools, well before they clearly understand the scope of the problems they are trying to solve.

3. What special training or education did it require to become a DevOps engineer?

DevOps is more of a mindset or philosophy rather than a skill-set.

Someone interested in getting into the field may want to take RHCE training to get hands-on experience with systems administration or may take courses that dive into various software development paradigms.

However, the typical technical skills associated with DevOps Engineers today is Linux systems administration, scripting, and experience with one of the many continuous integration or configuration management tools like Jenkins and Chef.

On the other hand, I have a friend who is a DevOps Manager, and his company is an all-Microsoft Windows environment with very few open-source tools in place.

Really, whatever skill-sets you have, while important, are not as important as having the ability to learn new skills quickly to meet needs.

It’s all about pattern recognition, and having the ability to merge your experiences with current requirements.

Proficiency in Windows and Linux systems administration, script development, an understanding of structured programming and object-oriented design, and experience creating and consuming RESTful APIs would take you a long way.

Again, however, all of these technical skills mean nothing without the ability to communicate clearly.

Team productivity and open communication is always the most important aspect of DevOps.

4. Are you more Dev or Ops?

VMI: What I mean is do you do more sysadmin work, or do you spend a lot of time working with developers on coding?

This depends on a lot on the job, the company you are working for and the skills of people involved. You really have to be able to alternate between both sides of the fence at any given time.

In the past, I did a lot of development. But now my work is more focused on design and coordination.

I love coding, so once high-level designs are circulated and agreed upon, I am eager to jump into my favorite development environment and start coding, testing, and getting things moving.

Sorry for the buzzwords but these days, infrastructure done right means infrastructure as code.

Tools and platforms like VMware vSphere and Docker make infrastructure management easier – once communication processes are well established.

5. What are the DevOps tools you like to use?

I’m growing fond of Ansible, which we use at Ethoca.

Jenkins is another tool that just works and does what it’s supposed to.

Git, Maven, and Python are also well established.

I’ve also found my background in Perl programming has allowed me to pick up and code with other programming languages very quickly.

And last but not least, I’ve enjoyed using Ruby with mini-test for automation and testing work in the past. I’ve also used other expensive tools, but open-source tools always work best for me.

6. Which scripting languages do you find to be the most important for a DevOps engineer?

As far as scripting languages go, the simpler the better.

Python seems to be very popular, but I am personally very fond of Ruby and Perl (which was an acquired taste).

The language itself isn’t as important as understanding design patterns and development paradigms such as procedural, object-oriented, or functional programming.

The ability to write good, clean, modular code that is well documented and easy to understand is more important than the language itself.

7. What books do you recommend for someone wanting to start learning about DevOps?

It depends on the individuals’ background and experience but assuming some experience with both software development and infrastructure management, I might recommend the following:

The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt and David Thomas

The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win by Gene Kim (well known in the DevOps field), Kevin Behr, and George Spafford

Rework by Jason Fried

7 Habits of Highly Effective People by Stephen R. Covey

8. What is the one most important thing DevOps helps do?

I personally think the most important thing DevOps helps do is to get changes (bug fixes and new features) into production as quickly as possible while minimizing risks in software quality assurance and compliance. That is the primary purpose/goal of DevOps.

However, there are many other positive side-effects to DevOps.

For example, clearer communication and better working relationships between teams which creates a less stressful working environment.

Is there anything else you want to share about Bobby Lopez?

I am fairly active on LinkedIn, but you can also reach me @jbobbylopez on Twitter. I also host a personal blog at www.jbldata.com if people want to read more about what I’m doing or about DevOps tools.

That’s a wrap!

I hope you have enjoyed this interview with Bobby Lopez as much as I did? Please feel free to leave your feedback below. And if you’d like to get the best DevOps training then check out my new guide.