DevOps engineers are a special breed. Part of this is because of their unique challenges, but also because their exact definition can vary.
There a few common things though. DevOps are usually the ones that keep things running on the right track, have knowledge of specific platforms and can communicate these changes to various teams.
All of this requires a specific set of skills. And these skills can be tricky to come by. This is why DevOps engineers are quite sought after, and respectively, well-paid. On the average in the UK a senior DevOps engineer can net about 42 000 Pounds a year, Glassdoor data shows as of Sept. 1st, 2017. And big tech companies usually offer a lot more, but they also require a lot more top skills.
So, what are those mythical skills? Well, first, let’s get on the same page about what defines a DevOps engineer. This is a person who has one main goal: to improve the user and work experience by using processes from both development and operations. Often DevOps Engineers are also important to keep the company culture, to help with communications with the teams and the suppliers.
From here you can add a lot of different requirements which would be specific to each company and setting. There are still some essential skills that all DevOps engineers should have if they want a good job with room to grow and opportunities to follow. And with that
Here are the 10 critical skills for DevOps engineers
Top SysAdmin skills
A good DevOps engineer must be able to set up and administer servers with ease. The bigger server farm, the bigger the challenges, but also the prospective salary. Depending on the company, the ideal DevOps engineer will be a great Windows or Linux administrator and in some cases – both. Experience is key, but also continued knowledge of the newer versions of the platforms.
A lot of tasks in everyday work can and should be automated. DevOps have a key role in this. As a result, a good DevOps engineer must have experience with automation tools. This includes knowledge for Chef, Fabric, GIT or another specific platform that is used or can be used by the given company. Writing automated scripts on Python, Ruby, Bash, Shell, Node.js and etc. is also a key skill here. Automation with Ansible is another possibility.
Speaking about scripting, there’s also the skill of programming as a whole. This is where the Dev in DevOps really kicks in. A lot of the DevOps’ job is writing code. The more experience and knowledge, the better. It may be yet another script, but it also might have something to do with the overall product, or the development of an app, administration, the cloud, even security. A DevOps engineer should love to code and know how to get the most out of it.
Virtualization is another must in the skillset of the top DevOps engineer. VMware, KVM, Hyper-V and etc. These should be more than just something you are “OK with”. Hypervisors, Virtual machines, object storage are things you should know well even if you might rarely have to use it. When you do, you will be on fire and that’s the time where the knowledge will help you out a lot.
How can a DevOps engineer be helpful if not in the full loop of things? This is where monitoring comes in strong. And it’s about a lot of monitoring. A whole lot: status based, data-driven, last-mile, SaaS monitoring, log management and etc. Platform monitoring is important, too. Especially when you have to work with cloud systems.
Speaking of the cloud, you guessed it. It’s also on the list. A lot of companies apply Amazon Web Services or Microsoft Azure cloud solutions for their infrastructure. This means that the ideal DevOps engineer should be quite well-versed with these platforms. It’s not enough to know how to set up a server. Now DevOps must know how to design and deploy applications that use the cloud. Engineering is key.
So, a lot of work has been done. Great. But there’s still a lot of work to be done. The successful DevOps engineer will now move on to testing. This includes choosing the proper tests, running them, analyzing the results and fixing what needs to be fixed… or communicating the issue to the responsible team to fix it. Testing is also useful when working on complex systems.
Then comes the network. You might have made a great product or an application, but what good is it if the network is wonky? So, the proper DevOps engineer will also turn their attention to the network and make sure it’s well planned, well deployed and tested. Never forget the network.
Also, never ever forget the security. In the digital age it’s not a matter of “if”, but “when” there will be a cybersecurity issue. A good DevOps engineer will know that and work on ensuring the product, application and network are ready for this. This includes proper cybersecurity measures, defenses, and awareness in the team. Good security is vital not only for the company and the clients but for the overall reputation. You do not want to be on the news after a breach because you failed to put even basic security features.
Soft skills for DevOps Engineers
Even the best DevOps engineer in the world can’t achieve all of this goodness above alone. The team is vital. And in order to work great with the team and outside partners, soft skills are key for all proper DevOps engineers. This is why DevOps engineers shouldn’t really neglect soft skills. Here we include people skills, communication and organization skills, flexibility, time management, the lot.
Bonus: Tools, tools, tools
And because you might need more, here are some additional tools that can help most DevOps engineers. Of course, their specific deployment will vary for each company, platforms, and goals.
- Source Control (like Git, Bitbucket, Svn, VSTS etc)
- Continuous Integration (like Jenkins, Bamboo, VSTS )
- Infrastructure Automation (like Puppet, Chef, Ansible)
- Deployment Automation & Orchestration (like Jenkins, VSTS, Octopus Deploy)
- Container Concepts (LXD, Docker)
- Orchestration (Kubernetes, Mesos, Swarm)
- Cloud (like AWS, Azure, Google Cloud, OpenStack)