We're launching a series of weekly posts dedicated to IT jobs. Each week we'll be providing a comprehensive overview of skills, specialties and experiences required to become a well-paid and in-demand specialist in web / mobile development, software engineering, QA an testing, systems administration, Big data and other IT related domains.
IT Job of this week is a DevOps Engineer. To read more about DevOps and its six best practices, please proceed to our earlier post in the Intersog blog.
DevOps Engineer: Salaries
On average, today's DevOps engineers earn the following depending on seniority level and geography (all rates are gross and per annum):
Ukraine: $14,400 - $32,400 (sources: dou.ua, Intersog)
USA: national average - $100,000, Chicago, IL average - $98,120 (sources: Glassdoor, PayScale)
Canada: $71,000 - $77,000 (source: Glassdoor)
United Kingdom: $62,000 - $70,000 (source: Glassdoor)
Germany: $64,700 - $78,000 (source: Glassdoor)
DevOps Engineer: Skills & Responsibilities
The main goal of DevOps engineers is to effectively maximize predictability, efficiency and security of a software development environment. If we look at a software development lifecycle, DevOps specialists do the following across different stages:
Project evaluation stage:
DevOps engineers receive basic information about required coding and changes to be made to existing IT infrastructure.
Project design stage:
DevOps engineers determine key infrastructure requirements.
Project development and testing stage:
They deploy a software product and support methods and tools for software development, back-end integrations and load testing for determination of operating environment's readiness.
Project release stage:
That's where DevOps specialists are most involved in. At the final stage they focus on efficiency and quality of a software product's shipment to the customer. In particular, DevOps guys make sure known bugs and errors will not migrate to the next project level and eliminate local optimization to avoid global project degradation.
Traditionally, programmers have no or little idea about how their application will be deployed to production and how it'll integrate with a dozen of other applications. Therefore, software teams need specialists able to read and understand code well enough to be able to clean trash from configuration residue packages (left by programmers), build workarounds if necessary, put services together, deploy an application to testing environment and automate QA, release and upgrade processes.
DevOps responsibilities normally include:
- Deployment of a software release (provided by programmers) to production
- Integration of development processes with custom delivery
- Standardization of a software development environment
- Setup of infrastructure in accordance with a software project specificity
- Preparation of a production environment and its adjustment to frequent changes expected during a project
- Bugs detection and fixing
- Automation of workflows, data syncing, etc
- Reduction of cost of infrastructure by optimizing platforms usage on projects
- Providing different accesses for developers (e.g. repository, VPN)
- Monitoring of systems design and their architectures, etc.
In the course of work, DevOps engineers use tools that help automate and manage IT resources allocation. Examples of such tools are: configuration management tools, virtualization tools, automation of operating processes, Cloud tools of resource distribution, etc.
"I've eventually migrated to DevOps from a software development team. During my work I interact mainly with developers, operations and QA teams. If you want me to describe DevOps job in a phrase, I'd say DevOps engineers build a set of tools to facilitate work for Dev, Ops and QA teams." Nick, DevOps engineer at Intersog
Pros and Cons
The main advantage for any DevOps engineer today is an increased interest in DevOps practices from corporate IT leadership. According to EMA, around 30% of businesses either have already deployed or are planning to deploy DevOps in the months to come. This is a good indicator that the profession is being in demand and good specialists won't have troubles finding a decent and well-paid job.
According to our DevOps engineers, they appreciate the fact that they're always 100% busy at work, unlike some mobile developers or system administrators. They also like a factor of suddenness that's always present in their job. Sudden changes make their work more challenging and less routine. Another feature they like about DevOps is a broad specialization. And their most favorite feature is a tangible result. Our DevOps engineer Nick says that building complex systems and supporting them in real life is much more interesting for him than writing /cleaning a code and testing something in nearly lab conditions. In other words, it's much more interesting to ride a real horse, then wash, feed and stroke it than watching a spherical horse in the vacuum.
One of the biggest disadvantages of this profession is irregular working days and too many unexpected things which can take DevOps engineers off their planned schedule. Unexpected night shifts and over-time work - brace yourself for this if you're planning to pursue a career in DevOps.
How to become a DevOps specialist?
Most of DevOps engineers are either former system administrators who learned different programming tools or former software developers who learned secrets and tricks of IT operations. Basic technical background is desired; good understanding of processes automation and system administration is a plus.
"You should have a library of all available technologies in your head, from signal coding methods to the latest trendy Open Stack product," says Nick, Intersog DevOps engineer."Also, it's important to put yourself to developers' shoes instead of blaming project mishap on them."
DevOps engineer has the following career paths:
- You can keep growing as a DevOps specialist, go deep to specialization and acquire skills in related technologies
- You can become a software developer / programmer if you have a system administration background or a system administrator if you come from software development
- You can become an IT security engineer
- You have a plethora of career opportunities within Big Data, software QA and testing, software architecture, business analysis and project management.