Over the last ten years, DevOps has grown from a niche endeavor to a fundamental pillar of high-performing engineering teams.
Hiring DevOps engineers has become tricker, however, as demand has skyrocketed, with all kinds of different roles and responsibilities trying to lay claim to ‘DevOps’ status.
So how do you know if your candidate is the real deal and has all of the skills you need?
In this blog, I’ll briefly explore the skills to look out for when hiring DevOps engineers you can depend on to meet critical product roadmap deadlines and ultimately grow your business.
Why Is DevOps Such a Game-Changer?
DevOps is a practice and philosophy that breaks down the silos between development and operations in the service of faster, higher-quality and more customer-centric software delivery.
The technical benefits are:
- More frequent code releases, while maintaining quality and security
- Much greater reliability and stability
- Greater scalability due to widespread automation
- Accelerated innovation and faster time-to-market
The DevOps methodology has been a major factor in the rapid acceleration in the frequency, quality and speed of software delivery seen at the likes of Amazon and Netflix.
That’s why this role is so crucial and why demand is so high. In fact 43% of hiring professionals have difficulty filling DevOps roles. So, how can you determine who is going to make the cut?
At Andela, we have plenty of experience hiring DevOps engineers. This is our list of the top technical and business skills to look out for in a worthy candidate.
Version control systems help engineers track the changes they make in their code base over time to reduce development time and increase the rate of successful deployments.
These tools enable teams of engineers to collaborate on code at speed and scale, as well as automatically test, analyze and deploy their code once they have written it.
Your DevOps candidate will need technical fluency in version control skills and familiarity with whatever version control tools your organisation is using (e.g. GitHub, Beanstalk, AWS CodeCommit etc.).
Originally focused on streamlining business processes, Agile is an iterative approach to project management that helps teams deliver value faster in the context of changing needs and requirements. The emphasis is on delivering small chunks of manageable change so teams can remain flexible (or ‘agile’) rather than on ‘big bang’ releases.
While DevOps and Agile don’t fully overlap, in many ways DevOps takes Agile processes and philosophy and applies them to the world of software development.
DevOps engineers with a strong grasp of Agile will bring many useful and practical skills to the table such as competence with sprints, backlogs and user stories that help to create a consistent delivery flow.
Public Cloud (AWS, Azure, GCP)
These days it would be extremely rare to find a DevOps team that isn’t using the public cloud.
The two are a match made in heaven: the on-demand, scalable, distributed nature of the public cloud dovetails perfectly with DevOps’ emphasis on automation, virtualization and infrastructure-as-code.
DevOps engineering talent should have substantial cloud experience with your cloud provider of choice, as well as cloud-native tooling, cloud orchestration, automation at scale, infrastructure-as-code, cloud security, and configuration management tooling such as Puppet or Vagrant.
Continuous Integration / Continuous Delivery (CI/CD)
Continuous Integration / Continuous Delivery (CI/CD) supports one of the main goals of DevOps: to streamline the delivery pipeline to release small chunks of code frequently, reliably and with minimum fuss.
CI is the practice of ensuring that every code commit is automatically built and tested, while CD is the process of creating an automated release pipeline (with the necessary infrastructure, tests and environments) so that any code committed is ready to be deployed at the push of a button.
When combined, the groundwork is laid for a continuous throughput of new, functioning code from the dev environment to production, which turbocharges delivery speeds.
Your DevOps engineer should be familiar with the core CI/CD processes of automating pipelines, automating testing, optimising processes as well as using CI/CD tools (such as Jenkins, CircleCI, Bamboo etc.).
Knowledge of a variety of languages
DevOps requires not only a solid knowledge of operations but also of development.As such, knowledge of the different languages required for writing automation scripts and coding applications is a crucial skill for your prospective DevOps hire.
Alongside scripting it’s necessary to have skills in programming languages such as Java, C/C++ and Go so your candidate can contribute to building features and applications.
You will struggle to hire DevOps engineers that are proficient in all of these languages, but they should be comfortable with at least a few scripting and programming languages.
Databases are the oft-overlooked bottleneck in the software development lifecycle and the technology that DevOps engineers are often least familiar with.
But, without bringing them within the purview of your DevOps estate, they will trip up your smooth delivery.
Accordingly, your DevOps engineer should be comfortable with integrating database changes into the larger DevOps process. This is in order to automate and streamline database changes so that they do not act as the weakest link in your delivery pipeline.
This may involve eliminating tightly-coupled databases with a microservices architecture as well as bringing databases within the scope of the skills mentioned above: version control and CI/CD.
At the end of the day, DevOps is really about organizing teams, breaking down silos, and maximizing collaboration at speed.
That’s why it’s critical that your DevOps hire not only be technically proficient but also have a wide range of interpersonal, business and remote working skills.
This is particularly important when you are building a remote engineering team, where that extra clarity around communication and collaboration is required in the absence of in-person standups and meetings.
When features are being developed at pace amidst daily standups and lengthy backlogs it becomes just as important to be able to manage one’s time correctly as it is to deliver technical excellence.
If an engineer gets bogged down in a niche technical concern while the rest of the team is speeding ahead, it disrupts the streamlined delivery flow that DevOps is designed to facilitate.
Proper time management implies proper organization.
A single DevOps engineer is a small part of a wider cross-functional team that must move in sync. If that engineer is well-organized this is a massive boon for his colleagues and helps to eliminate the many tiny delays, bottlenecks and misunderstandings that can, in the end, lead to big drops in output.
Detailed tracking processes
The skill of process tracking is incredibly helpful to help with proper time management and organization.
Familiarity with relevant software can be a plus here, ranging from Kanban-style apps such as Trello, to enterprise-grade tracking and project management software such as Jira.
A first-class DevOps engineer is someone who maintains an exquisite balance of technical know-how, a collaboration mindset and interpersonal excellence.
If you’re looking for DevOps excellence, check out our database of vetted, global engineering talent that can seamlessly integrate with your existing team!