More and more companies set forward DevOps transformation course to catch up with modern tendencies in IT. It is no surprise then that DevOps engineers, who are seen as introducers of those changes, are heavily recruited for. A competent DevOps can propel the whole development process by establishing measurable goals on the company’s way to success.
Definitions and visions of DevOps’ scope of responsibilities are somewhat generic and to a large extend depend on the purpose, why are you hiring a DevOps engineer. It could be infrastructure development to estimate potential workload, describe infrastructure in code and choose the best platform to host it. Or designing cloud-based environments as a cloud solution architect. As a CI/CD developer, DevOps creates pipelines to build, test and deploy code on target environments. The list goes on to include SRE, DevSecOps, release managers, automation engineers, monitoring masters, etc.
All these tasks are different, yet fall under definition of DevOps and belong to its ecosystem. What skills and personal attributes should a candidate have to successfully handle this scope of work? And, in a broader perspective, what makes a great DevOps engineer and how to become one?
Usually DevOps is seen as a T-shaped systems engineer who can support the transformation of people, process, and automation in an organization. As most of the candidates come to the profession from system or software engineering, they already have a solid technical background to build further skills on. Generally, a DevOps engineer is expected to have a comprehensive knowledge of the different tools and technologies used across the entire software delivery lifecycle. Specific requirements may vary depending on the infrastructure size and the technologies employed, however, the key criteria will include:
- experience in administering large operating systems (Linux and Windows);
- skills of working with virtualization systems (VMWare, KVM, Xen) and cloud services to automate deployments of operating systems, applications and databases;
- understanding of containerization technologies (Docker) and tools for its orchestration (Kubernetes);
- database administration skills;
- expertise in networking services, hardware environments and data storage systems;
- understanding concepts and technologies of fault tolerance and load testing;
- skills of working with configuration management tools (Terraform, Ansible, Chef, Puppet, SaltStack) and CI systems (TeamCity, Jenkins);
- knowledge of some programming language (C++, C#, Java) would be a further advantage.
Apart from strong technical competencies, successful candidates should also have a set of personal attributes, or soft skills. After all, DevOps builds upon collaboration. Personable people are more likely to bridge differences between dev and ops, and tune up effective communication across various departments, so that people working towards a common goal would succeed in making the best software product possible.
Today, the DevOps toolset evolves as rapidly as ever before. To keep up with market needs, engineers can no longer rely on the ways things used to be done some time ago. Therefore, self-education and curiosity for trying emerging technologies would be strong advantages on the way toward a successful career in DevOps.
And finally, one should not forget about the value of experience. Mistakes are inevitable and can occur even in the most stable systems. But it is how you deal with these stressful situations that really counts. The knowledge, which is hard-won from mistakes and painful efforts of complex transformations, is a precondition to become a fully-fledged specialist.
In short, these skills and qualities make the required minimum to become a good DevOps. Anyone with a strong technical background, a well-rounded knowledge of automation tools and a passion for trying new things stands a good chance to join the community and help companies along their DevOps transformation journey.