Flickr is considered to be one of the first companies to adopt the DevOps model. But today, most modern tech companies implement at least a few DevOps elements and are trying to find DevOps engineers.
In the context of software development, DevOps is an approach that focuses on collaboration. Software companies are often divided into silos of expertise, such as a development team and an operations team. The DevOps principle pushes development, operations, testing, and other support teams to work together.
In terms of business benefits, DevOps offers:
- Higher quality software and apps
- Better user experiences
- Improved operational efficiency
- Reduced costs
In this Forbes column, hiring a DevOps specialist is described as “like changing gears” — improvements were felt at every part of the engineering process, and senior engineers were able to return to focusing entirely on the product, instead of being dragged down by routine work.
This mirrors much of what we’ve experienced at Acropolium as we’ve grown. The best DevOps engineers can streamline product development, smooth communication between distinct project teams, and save the company money. In fact, there’s an evaluation of how much time can be saved in a five-person team thanks to DevOps at the end of the article, so don’t skip it.
Still, hiring for DevOps is not an easy task. DevOps functions happen in the background, ensuring that all systems are constantly being monitored and are operational. When there’s an issue, DevOps engineers need to be good problem-solvers. DevOps also involves automating repetitive tasks for developers and upgrading system infrastructure in line with development requirements.
This article for company decision-makers provides an overview of DevOps responsibilities and gives advice on hiring options in-house or outsource to a reliable vendor.
When do you need to hire a DevOps engineer?
The short answer is, you should be searching for a DevOps engineer when you need to save time on repetitive manual processes in software release management, project builds, and testing.
If you’re just starting out, your product will be small enough for you to develop and test features manually. However, as the codebase becomes more complex, builds, in particular, take longer. This extra time naturally costs money.
At Acropolium, for example, we grew to a point where builds were taking up to half a day or longer. We implemented DevOps practices and automated processes, and now a build takes up to just 30 minutes and requires no manual intervention. Everything is tested, built, and uploaded. This saves us up to one man-day per build. Considering that we have one build a week, we save four man-days a month. This is almost equal to 20% of a developer’s time — time that we can spend on improving the application itself.
Continuous monitoring is another important function in DevOps. When an app is in production, you need tools that monitor and define uptime, performance, number of queries, transactions, and operations.
Of course, basic DevOps tasks can and should be implemented by developers. This will help save time and effort in the future. But if you’re still building a proof of concept or minimum viable product, you probably don’t need DevOps just yet.
Hire in-house or use DevOps as a managed service?
Just as with any other engineering or development requirement, you can run DevOps through an in-house hire or as a managed service through outsourced teams. Both solutions have benefits and drawbacks.
DevOps as a managed service
Technical expertise. This is an easy one. DevOps as a service usually gives you access to greater expertise because you’re working with a team or a company rather than an individual. Quite understandably, it’s difficult for one person to match the expertise of a whole team that specializes in DevOps.
Controlled costs. Hiring is a long-term commitment to a person rather than to a project. In contrast, outsourcing is well suited to work on projects. The upshot is that if you’re trying to implement DevOps for a key project, it will be more cost-effective to outsource.
In addition, one of the major advantages of DevOps outsourcing is the cheaper cost of labor in countries outside North America and the larger EU economies. Outsourcing companies have flourished in these countries, meaning that they can offer strong expertise in technical areas.
Expert solutions. This can be considered an extension of technical expertise. DevOps companies train their engineers to be experts, and engineers regularly work on a variety of projects. This means that they have more experience in solving DevOps problems for clients — experience that they will bring to your company too.
Security risks. This is a common issue with all outsourced projects. You’re trusting an outside source with information that should ideally stay within the organization. As DevOps has such a broad scope, this risk is even greater. You can mitigate it to some extent by setting up the right legal and technical protocols for your collaboration and choosing a reliable vendor.
Business expertise. No one knows your business and your clients like you do. Often, there’s not enough time to pass on the intricacies to an outsourced team. One solution is to choose a vendor who has previous experience working in the same sector.
Hiring DevOps in-house
Business knowledge. While this might not be an immediate gain, an in-house hire always benefits from working within a business. A DevOps engineer who works for you directly can gain an in-depth understanding of your product, customers, and markets.
Communication and collaboration. DevOps requires more communication and collaboration than an organization that keeps its operations in separate teams. An in-house engineer is more likely to be able to create this shift effectively.
Higher expenses. A long-term hire for a highly skilled position is always going to be more expensive than outsourcing. In addition, you’ll have to invest in the tools an in-house DevOps engineer needs. Finally, mistakes made in hiring are costly.
Lack of expertise. It’s not always easy to find DevOps engineers in local job markets, and even if they’re there, they’re in high demand. With an in-house DevOps hire, you’re also limiting yourself to candidates who are willing to work in your city or country. Outsourced teams are more familiar with working remotely, which opens up the choices available.
But before you decide whether it’s going to be an in-house or outsourced expertise, take a look at the skills a DevOps engineer should have.
Requirements and skills for a DevOps engineer
DevOps engineers need to have an eclectic mix of technical and organizational skills that help them understand every stage of a project, from product development to deployment and maintenance.
A DevOps job description has skills that are essential for both software development roles and IT operations. For example, an experienced developer who understands deployment and network operations may choose to become a DevOps specialist. The same is true for a seasoned systems administrator who has adequate coding skills.
In essence, a DevOps engineer needs a “big-picture” understanding of both software development and the importance of the IT infrastructure that supports it. They also need great communication skills to fulfill their managerial and administrative responsibilities.
With such specific requirements, it’s not easy to define how to hire a DevOps engineer. Still, here’s a sample list of skills and knowledge that most DevOps engineers should have:
An understanding of the software development life cycle (SDLC)
Naturally, a DevOps engineer needs to have a good understanding of the SDLC framework used in your company. The SDLC is at the heart of meeting customer expectations, and the primary goal of DevOps is to align development and operations to meet business goals.
Mastery of continuous integration and continuous delivery (CI/CD)
CI/CD is central to bridging the gap between development activities and IT operations. A DevOps engineer enforces CI/CD by setting up automation in application building, testing, and deployment. This solves the issues that crop up when integrating new code for both development and operations teams.
A DevOps engineer has to introduce continuous automation and monitoring through the entire application life cycle. This process is known as the “CI/CD pipeline” and is considered to be the pillar on which modern DevOps operations are built.
Coding and debugging skills
It should be clear by now that DevOps is all about automation. A DevOps engineer needs to be able to look at the CI/CD pipeline, for example, and automate many of the processes involved. The aim is to reduce the time taken for repetitive processes, which leads to faster development and deployment and fewer errors.
Familiarity with DevOps tools
There are a number of tools for all the functions that DevOps covers. Here are some examples:
- Project management: Asana, Jira
- Version control: Git, Bitbucket
- Build tools: Gradle, Maven, Grunt
- Development environments: Vagrant, Cloud9 IDE
- Continuous integration: Jenkins, TeamCity, CircleCI
- Configuration management: Ansible, Salt
- Monitoring: Nagios, Prometheus
- Container management: Docker, Kubernetes
Software security skills
The ability to forecast cyberattacks is a valuable DevOps skill. Ideally, DevOps will implement security tests early in the development cycle, making it possible to identify and eliminate issues at every stage.
Cloud computing skills
Most projects are moving to cloud services and tools, with the result that the cloud is generally where applications are tested, debugged, deployed, and released. Cloud development also makes it easier to share resources and collaborate. Therefore, a good understanding of working with cloud services such as Microsoft Azure and Amazon Web Services is essential for DevOps engineers.
Communication and management skills
DevOps is just as much about management as it is about technical expertise. DevOps requires both development and operations teams to break out of their silos to work with each other and towards more agile development processes. That’s a big ask, and a DevOps engineer will need good communication skills to get this point across.
A DevOps engineer must also understand the requirements of clients and customers and take ownership of what needs to be done to meet these requirements. Consider the DevOps engineer to be a manager who understands all the technical needs in the product cycle, from development to deployment. Managing these expectations requires a personality that’s at ease with responsibility.
How to run a DevOps interview
Before starting the DevOps interview process, define your project requirements. As we’ve seen, DevOps demands a wide range of skills, and you may want more. You’ll also have your own tech stack, tools, and company culture, which an engineer will have to adapt to. Two important questions are:
- Which DevOps tools will you need to integrate into your existing SDLC?
- Do you need someone to implement DevOps from scratch or alternatively take over DevOps tasks that your development team is currently handling?
The next step is to set a budget. DevOps engineers are in high demand, given the variety of skills required and the value they can bring to an organization. Your project requirements will help determine the budget as well. If you’re hiring DevOps engineers in-house, don’t forget to factor in the costs of DevOps tools.
DevOps interview questions
Once you’ve put out a job ad and shortlisted candidates based on how they match your project scope, it’s time to do the interview. DevOps is a substantial investment and, in many ways, an overhaul instead of just another engineering hire. This means that it’s crucial to ask the right things. Below are some common questions, but this is not an exhaustive list. Ideally, you should test your candidates on all the different skills that we’ve outlined for DevOps.
- Which DevOps tools do you have experience with?
- Why are configuration management processes and tools important?
- Can you explain the concept of infrastructure as code? How does it relate to configuration management?
- What’s the difference between automation and orchestration? What are some orchestration solutions you’ve used?
- What does “shift left” mean in DevOps?
- What are some common KPIs which measure the success of DevOps?
- What approaches would the candidate offer to speed up the development process of one of your existing solutions?
When it comes to DevOps, personality traits and communications skills are just as important as technical expertise. Aim to match your candidate with project requirements and your company culture.
- Which factors contribute to the ideal DevOps implementation?
- How would you train a developer in DevOps?
- What would the perfect release be like? What is your role?
- How do you diagnose and fix production problems?
- A deployment has failed. How would you handle the situation? Who would you involve in resolving issues?
- How would you communicate the DevOps strategy in our company?
But the most important thing you need to do when interviewing DevOps candidates is find skilled people who can conduct such interviews professionally.
Hiring the right DevOps engineer is close to finding a needle in a haystack, but we hope this article will help you out at least a bit. Alternatively, you can always resort to using DevOps as a managed service, and Acropolium is an excellent partner for that.
At Acropolium, we’ve been providing outsourced DevOps expertise and implementing DevOps since 2003. Our engineers have worked with clients in a wide variety of business sectors to develop unique solutions and streamline development.
In almost all our projects, even if we start them from scratch, eventually comes a stage when we need to involve DevOps to improve automation, save time, launch some processes without human intervention, and even locate errors.
Our ideology is to introduce some elements of the DevOps culture from the start of a project. Yes, this means some overhead at the beginning, but starting from the second or third month of work for a five-person team, it starts paying off. Everything runs like clockwork, and the team focuses on their tasks instead of fixing what goes wrong.
Without a professional DevOps engineer automating the deployment process, this five-person project will waste approx. 532 out of 1,800 man-days a year on manual deployment. That’s 25%-30% of the total project time. Imagine how much more productive and focused on developing new functions these employees would be if they didn’t need to manage non-automated builds.
At Acropolium, we can manage your entire DevOps implementation or provide experts who can work alongside your in-house engineers. If you’re searching for DevOps engineers, just contact us to start the conversation.