DevOps is an extremely valuable approach that is taking the world by storm. As a recruiter, you should know the basics of DevOps so that you can easily distinguish a DevOps engineer from a non-DevOps one.
What does DevOps mean, practically speaking?
DevOps stands for Development and Operations. It is a methodology based on Agile that uses automation to quickly develop, deploy, and modify applications.
DevOps is a collaborative approach between the development team who codes the application, and the operations (or infrastructure/infra for short) team who deploys the application. Its goal: to accelerate the software development cycle.
Consider a software company that uses a more traditional approach to developing and deploying apps.
When the development team has finished coding a product like a web or mobile app, it then builds a package to ship the product out. The infra team then decides how and when to send that package out into the world so that it is available to users. This sending process is what we call deployment.
If this company is not using a DevOps approach, a problem arises when the infra team has a full backlog of other tasks. The infra team decides when to deploy the package, but because it has so many other tasks to complete, it cannot deploy right away.
When there is a bug in the code, the development team must wait for the next time the infra team plans to deploy a new version of the app. If this company rolls out a new version only four times a year, the development team can only do bug fixes every three months. Users of the app may have to deal with glitches that the company is aware of, for several months on end!
This approach is also very rigid from an innovation perspective. It is difficult to think outside of the box to immediately implement a new idea. The development team has their hands tied: they must wait a whole cycle just to test if a simple feature is more successful. The evolutionary trajectory of the app is severely limited; meanwhile competitors who use DevOps are making massive strides in pushing their own apps to the next level.
This story shows us why DevOps is needed. DevOps is not a technology; it is an approach for building software by optimizing the software development cycle. It is a way of thinking that combines performance and agility to develop software fast at the most efficient cost. By adopting this approach, our company will be able to experiment, develop, and ship things much faster.
To further deepen your DevOps knowledge, in January you can follow a one- or three-day training with TechJargon (use the coupon code TechJargon12 for a discount).
A DevOps engineer is an IT engineer with an in-depth understanding of the software development life cycle.
This individual needs to know how to plan using planning tools like Jira.
He or she also needs to know how to build the software of course – Half of DevOps is about development. This includes building different versions of an app that target different demographics, for example, customizing versions for users in different countries. Development also includes coding quick fixes and additions that can swiftly be rolled out.
A DevOps engineer needs to be an expert in automation. DevOps engineers are sometimes called automation engineers as their jobs are to automate the development cycle. Without automation, engineers must manually test each component of the app and complete every step of the development cycle manually, which leaves ample room for human error. A good DevOps engineer is therefore good at automating key steps of the software development life cycle: software testing and software integrating. He or she will test by running the app in an “acceptance environment”, verify nothing breaks, and then deploy the app (continuous deployment, or CD). He or she will also quickly integrate different software together (continuous integration, or CI). This accelerates the automation process; that is, it speeds up the communication between different parts of the software.
A DevOps engineer finally understands why the organization had to move from one development model to another.
The steps of the software development cycle are as follows:
We start with an idea: for example, building the next major social media platform. We plan by using methodologies like Jira and Agile; we build our app, test if it is good, and then deploy it. Afterwards, we closely monitor our app so we can make quick fixes as needed.
Here is a collection of widely used DevOps tools to automate the process:
We need the tools listed above to carry out CI and CD.
The reason why Facebook can ship a different version of its website every day is because it uses excellent automation technologies. Facebook automates the testing of specific versions, using Git to check if Version A is different from Version B for example. If Version A has a problem, Facebook can quickly roll it back to Version B (it is worth noting that if someone calls themselves a DevOps engineer and doesn’t know Git, this is NOT a bona fide DevOps person).
Other popular technology includes Docker and Kubernetes. If we envision our app as a package of code, we need to ship that package to our users. Docker acts as the container ship to deliver those packages. Kubernetes is the steering wheel that directs our ship to its destination using the coordinates we specified. When we have different packages for different demographics, we use different coordinates for where each pool of users is located in our ecosystem of users, and Kubernetes directs the Docker ship accordingly.
What does it mean when a company has a DevOps culture?
It means this company is agile and can deliver products fast using automation.
As a recruiter you should ask hiring managers how strong their DevOps culture is.
How frequently do their companies deploy new apps? What technologies do they use?
DevOps in the real world
When we build a website with DevOps, we don’t want to spend too much time on details. We want to build, ship, and iterate.
Using Git, we can build a very simple website and make it available to the world almost instantly.
Here are our steps in the software development cycle:
This whole process takes around 30 seconds. The fourth step is to monitor our app:
When we want adjustments, we use a CI/CD process so that whenever we change a feature, it is available to the world within seconds.
What if we want different versions for different demographics? We can think of Git as a tree with branches: each branch is a different version of the website.
When we deployed the first version of our web app, we first stored it somewhere an automation tool can pick it up: GitHub. We push all our different versions (branches) to GitHub where they are available 24/7. To deploy a specific branch for a demographic, we select, automate, and render the website for that demographic. If a version has a mistake, we can immediately roll it back to the previous version (which is stored in GitHub) without the glitch.
Here we introduced the basics of DevOps as an approach and a mindset, plus the skills that DevOps engineers should have. For more tech knowledge that will boost your success as a recruiter, sign up for a training or peruse our free learning materials.
You may have recruited Java developers before, This array of positions already gives you an idea of why it goes beyond the mere programming language.
Read MoreDec 02, 2020
5 min read
These strategies were mined from Davy's own experience hiring developers, combing through their past experiences with smart questions and technology.
Read MoreDec 02, 2020
5 min read