DevOps Explained for Recruiters

DevOps Explained for Recruiters
Post Author: Aaron Decker | Photo by Isis França on Unsplash
Date published: January 08, 2020

DevOps is commonly defined as a set of practices to automate processes related to operations in software development.

A DevOps Engineer is somebody who performs this kind of automation. They might write code and build tools to automate deployments or they might configure CI/CD tools like Jenkins, Gitlab, TeamCity, or CircleCI. They might set up servers and infrastructure to deploy code to (and they might automate this process as well with tools like TerraForm).

The purpose of DevOps is to bring together the operations + development parts of an organization. Traditionally there was a "development team" and an "operations team" (and I mean 10 or 20 years ago, DevOps practices are fairly standard now). When the development team working on software was done they would hand it off to the operations team and ops would be responsible for running the application.

You can imagine that the "chuck it over the wall to ops" mentality was not a very great way to ship quality software.

A Refresher on The Software Development Process

Usually when you are working on a software project there are pretty well defined phases. It usually looks like this if you are doing an Agile, iterative process:

  1. Plan / Design the Software
  2. Code it and get a set of working features done
  3. Deploy the code so customers can use it
  4. Monitor and support the deployed application
  5. Repeat steps 1-3 as you iterate on development. Continue to do step 4 always.

The DevOps Engineer is mostly going to focus on Step 3 and Step 4. Modern software projects are deployed with the click of a button, or even automatically, and they might be deployed multiple times per day as people fix bugs. Because of this, it's important that everything around this process is as automated as possible.

A lot of other DevOps responsibilities are focused on supporting running applications. All applications of any importance should be actively monitored for issues, and there are a lot of ways to automate this. That includes setting up dashboards to monitor for things like running out memory, spikes in application slowness (latency), and sending alerts if errors are logged out from the application.

CI/CD - "Continuous Integration" and "Continuous Deployment"

I wanted to just go ahead and explain some terms here so that you can get a good feeling of things you might see on the resume of a DevOps engineer. I'll start with CI/CD systems.

CI, or Continuous Integration is defined as a practice of merging in code to the master branch each day (and running automated tests on it when you do that to make sure it merged OK).

These days we often talk about CI/CD tools that in addition to running automated tests, they will also be capable of doing Continuous Deployment. Mostly that means that when code is merged to a master branch it will automatically be deployed to some testing environment.

People also do automated production deployments using CI/CD tools but usually there is still some human in the loop clicking a button to approve the release of new versions of code to production customers.

These big CI/CD tools and platforms often have APIs so they can integrate with many other systems and they usually have an ability to run scripts written in a variety of programming languages. You can automate just about anything with CI/CD tools so these are a central piece of technology you will find on DevOps engineer resumes.

Big list of CI/CD Tools

  • Jenkins
  • TeamCity
  • Gitlab CI
  • CircleCI
  • Travis
  • Bamboo
  • Codeship

A List of Other DevOps Related Tech

  • Bash: a scripting language commonly used for simple automation tasks.
  • Python: a dynamic programming language that is popular in DevOps scripting, and working with automation tools.
  • Ansible: an automation tool that allows you to connect to infrastructure and run automation scripts.
  • Puppet: an automation tool used to manage infrastructure (e.g. used to set up servers).
  • Chef: an automation tool used to manage infrastructure (similar to Puppet)
  • Saltstack: another infrastructure management tool similar to Puppet and Chef.
  • Terraform: a system for automating creating of cloud infrastructure (on AWS, Azure, or GCP, for example).
  • Docker: a containerization system to help make it easier to deploy applications reliably.
  • Kubernetes: an orchestration system for running clusters of containerized applications.
  • Git: git is used to track and store code changes, but any DevOps person is going to have know git inside and out.

You might have noticed a couple of these tools have to do with "containerization". Docker is a containerization system and it is such a big deal in the industry now, I wrote a whole post explaining it here.

Where do Public Clouds Come In?

AWS, GCP, and Azure have changed the game a lot. Amazon Web Services is continually coming out with services to automate away DevOps tasks themselves. You can think of what happened like this:

  1. First there were Network Administrators.
  2. Then there were DevOps Engineers to automate a lot of this work.
  3. Now there is AWS to automate everything except actually writing the code.

I'm being dramatic, but this is the way things seem to be going. Now there are people with the job title "Cloud Architect" that help set up AWS or Azure infrastructure and build everything using cloud services. I think this is where the devops is increasingly headed.

Summary

The takeaway here is that DevOps is a practice of combining software development + operations tasks. The primary goal is to automate operations tasks using software development practices and tightly couple the operations and development arms of a given organization.

DevOps engineers will likely know at least one programming language pretty well, some kind of CI/CD system, and some kind of infrastructure automation tooling system.

DevOps engineers should also have a good understanding of networking and security since a lot of job is connecting servers to each other and to the internet. Increasingly, I think you will see DevOps engineers specialize in one or more public cloud providers.


Want updates?

Want new posts about tech topics emailed to you? Sign up to the list below 👇

Also, if you are interested in learning technical topics through a video course specifically created for recruiters, don't forget to check out the courses I offer.

The main course "How to Speak Software Engineering Jargon for Recruiters" is specifically designed to help tech recruiters get up to speed fast on technical topics.


Written By Aaron Decker

I'm currently a co-founder and head of engineering at a venture backed startup called Bounty. I tend to think of myself as a backend engineer that can work up and down the stack in Typescript. Previously, I have worked as a Tech Lead and hired teams, and as a Senior Software Engineer at multiple fortune 500 companies building large products. I also did a brief stint teaching programming courses as an Adjunct Instructor at a local community college, which taught me a lot about breaking down complex things into understandable chunks.