What do companies really want in terms of skills when they are looking for DevOps / SRE professionals?
I’ve analysed 50 job postings to tell you what companies want when they are hiring for DevOps and SRE (Site Reliability Engineer) positions.
DevOps and Site Reliability Engineering are in my opinion very related “sciences”. In this post, I am going to treat them as the SAME thing for my researching purposes.
You can argue that being an SRE and being a DevOps are different but in my opinion, these two positions are very related and most of the time companies don’t really know what they want and they just go with the flow. Meaning: “if Google invents a new term (SRE) and says that an SRE must do this, this and that, this probably should be a good thing and my company need this kind of person. So let’s open a position, call it SRE and put the same requirements everybody is asking for.”
Most of the time this is what happens so here I’m ending my explanation on how I decided to treat DevOps and SRE as the same thing in my research (In fact they are VERY similar positions).
Ok, lets explain how I did the research:
I’ve searched for the job positions on these sites:
Random Google search (just typing the position name)
The way it works is:
I’ve read the entire job description and its requirements. I took notes on which requirement (or skill) the position was asking for.
If a job post says it requires Python programming OR Java OR Go I will give one point for each mention.
If another job post only says Python as a requirement I’ll give one point for the Python mention leaving Python with 2 points (2 mentions), Go with 1 point (1 mention) and Java with 1 point (1 mention). Very simple huh?
You got the point? 1 mention, 1 point. Very very simple. =P
I separated the requirements in some subjects related to the DevOps / SRE position:
- PROGRAMMING LANGUAGES - AUTOMATION - CLOUD - CONTAINERIZATION - MONITORING - LOGGING - CI / CD (Continuous Integration / Continuous Deployment) - OPERATING SYSTEM(S)
Let’s go to the results:
We can see that on this requirements there is a BIG winner: Python
Since Python is a multi purpose language and it’s very easy to read I’m not surprised it is the number one choice for companies that want their DevOps / SRE future employees to know. Linux comes with Python out-of-the-box and it’s much more fun to write scripts in Python than it is in Shell Script. Although, notice that Shell Script is still kinda relevant for these positions. So it’s better to know a little bit. There are a lot of legacy scripts written in Shell Script and you for sure will give maintenance in one of those during your career.
If I were an Infrastructure Engineer or Technical Support guy/gal wanting to go the DevOps / SRE way I would start to learn Python ASAP.
Another interesting thing is the rise of Go as a language for DevOps / SRE purposes. Docker was written in Go and the language has a focus for systems programming. We should expect Go rising more and more on the DevOps / SRE space. Better keep an eye on it…
Another BIG winner here: Amazon AWS ecosystem.
A lot of companies run their services on AWS and they want people capable of dealing with that. So better learn the AWS ecosystem as well. It’s the top pick for companies that run their systems on the cloud.
Regarding automation, any tool you learn will be good. There are different tools for automation but most of them do the same type of job. The winner in this case is Ansible followed closely by Puppet.
CI / CD — CONTINUOUS INTEGRATION / CONTINUOUS DEPLOYMENT:
CI / CD
Continuing with the big winners here is another one: Jenkins
When it comes to CI / CD this is THE guy. It’s the leading Open Source automation server and provides hundreds of plugins to support building, deploying and automating any project.
On the monitoring field, I was a little bit surprised on Nagios becoming the most requested tool.
But I didn’t work with Nagios for a long time so maybe I was expecting a new player to stand out.
Maybe this new player is New Relic or Datadog. My conclusion is: if you become proficient in one of those monitoring tools you will be good to go and apply for any DevOps / SRE job. If the company uses another tool you should be able to learn faster because they are very similar.
It was very interesting to discover that most of the companies don’t really specify which database you have to know. Some of them (very few) point out to PostgreSQL or MySQL when talking about relational databases and some of them point out to MongoDB when they are talking about NoSQL databases.
No graph here because the choice is ALMOST unanimous. Linux is THE operating system you must know. And not in a superficial way. Most of the jobs demand that you know deep system (Linux) internals. So push yourself beyond the simple commands. Learn how to use Linux tools like tcpdump, netstat, iptables, uptime, dmesg, perf, ss, strace and so on…
OTHER (GENERIC) SKILLS:
I decided to call it “generic” because they don’t fit in any of the categories above. It doesn’t mean they are dispensable. No way. They are a MUST have.
Large scale storage systems
Cache and its tools like Memcache, Varnish, Redis.
You need to have all of those concepts above inside your brain. You will use them daily.
This may be a very simple research but it shows (at least for me) a pattern when companies want to hire some DevOps / SRE. I decided to do this to help me focus on which technologies I must learn in order to improve my DevOps / SRE skills. It’s very easy to lose focus when you are trying to learn something. There is a LOT of information on the internet and people telling you to do this or do that. You can get so saturated with so much information and be paralysed. Occasionally I struggle with that. Please be careful. Analysis Paralysis is a very bad “disease”. If you want to follow these same patterns and learn what companies are demanding to feel free to do that. I hope this simple research help you to move on and choose what is best for you to learn or start learning. All that being said, my choices are (but of course not limited to):
CI / CD
So….Let’s learn together? =)