A non bullshit guide for noobs and alike....
So you wanna become a DevOps engineer? I'm glad to hear that, because I'm gonna tell you everything that you need (and don't need) to become one. Now, in this day and age if you typed the sentence "What is DevOps" in google you would get garbage like this:
"DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes."
What does that even mean bro?
Hundreds and hundreds of articles online that talk about philosophy and changing culture, like we were some tech priests running around and telling everyone what they should do lmao, and to top if off those posts actually don't tell you what you do on a day to day basis.
Anyone in this field would probably laugh at that definition, because it's as far away from what they do at work as it can be. Don't get me wrong, that sentence is actually correct, but it gives you the wrong picture. Let's proceed.
DevOps is a term that's made form two words, Development and Operations, so it gives you a hint that you should know how do program (at least to a certain degree) and do a SysAdmin job. The actual name "DevOps" was invented by a small Belgian dude, check it out here.
It became famous sometime after 2010, when the server infrastructure become more complicated (hello aws, gcloud, azure) and there was a need to create a job role that would handle that complexity. Since no one actually went to school to become a DevOps engineer, you had people from the classic SysAdmin field and regular developers flocking to this new exciting opportunity.
New tools starting popping up like Chef, Puppet, Ansible, that were specifically made to help people manage a large number of servers, and all the components installed on them. And this field was actually intended for people that have a good degree of experience (either as a SysAdmin or as a dev), not for noobs as the knowledge needed spanned two separate fields (dev and ops).
Now, if you go to the DevOps subreddit, every other question revolves on "What's the best course on how to become a DevOps engineer and what certifications do I need"? Where do people get those ideas, was I also that dumb before (yeah, I probably was...)
Let me make it as clear as possible, you don't need ANY certification to become a DevOps engineer, none!
Now, repeat that in your mind at least 20 times until it becomes clear.......
You finished, good.
Getting a certificate will only benefit the person or the institution you're paying, and not you. Many people who will disagree with that statement are probably the people working in those institutions or noobs or devrels.
This also applies to courses, cause there is NO single course that will teach you what you need to know to do your job, so please stop looking for it :)
Also, almost every blog post out there starts with "The 10 most useful tools that you need to know bla bla bla". Let me tell you a secret, most of those tools can be learned in a couple of weeks. Yes, it's shocking I know. People online just like to push them on people cause of marketing and other stuff, but they should be on the bottom of your list. Cause every startup uses different tools all the time, and those tools change over the course of time.
Since we covered what you don't need lets shift our focus on the things that you will need in your job, and will actually help you:
1.) Programming (development)
Yes, even in this day and age of OpenAI (which can help you, and I hope you're using it), you're expected to be at least a competent developer, from writing a simple bash script to actually coding an non trivial api, webapp, cli etc. If some one told you, that you wouldn't need to know how to develop things just go to our main index page and take a look at a couple of job adds. Did you read that part "..Proficiency in Python or Go. Experience with PHP will be a plus...", now did that make you uneasy, well I'm sorry about that. That's just the reality of things, read it and weep. You might not NEED to use it in your job, but most startups will demand that of you (and rightly so). If you don't have any preferrences on which language to learn first, go with Python.
2.) Linux
Yes, the bread and butter of the DevOps industry and virtually EVERY app that runs on the internet today. Since everything runs on Linux today, you're gonna need to know some things about it like CPU, RAM, DISK, I/0, inodes etc. There's a great book on that subject and it's called https://man7.org/tlpi/, the first 10 chapters are a must. And you're gonna need to learn about the dreaded TERMINAL, through which you will run your commands to manipulate any server out there. (Learn the command line the Hard Way), also install tmux while you're at it, it will make your life a bit easier and more interesting.
3.) Networking
And not networking in the sense of "Hey lets go to this awesome conference and meet new people", but networking in the sens of computers communicating together. So get familiar with TCP/IP, HTTP/HTTPS/TLS, ftp/ftps, ssh, how do networking interfaces in servers work, what's the difference between public and private ip addresses, how do packets get from one server to another (hint, routing), and for debugging checkout out tcpdump, and maybe wireshark if you don't like looking at cryptic lines fly by in your terminal (iykyk).
4.) Learn the basics of Kubernetest
Again, If you don't believe me, checkout the jobs on my site, virtually everyone asks for candidates that have experience with kubernetes. Now you don't need to be an expert, especially if you're just starting out. But to keep it simple, containerize an simple hello app, and try to get it running in a k8 cluster. You can do it on your own laptop or if you wanna be fancy on a remote server (https://kind.sigs.k8s.io/). I'll go over learning kubernetes in another blog post, but feel free to checkout their official documentation, and learn all the basic components, my recommendation is the book "Kubernetes Up and Running".
5.) DEBUGGING
One of the ways you can spot a noob is the way they do debugging. Usually a more senior dev can quickly debug problems cause he/she has more experience and knowledge. They just did a lot more stuff, hence they know more. But if you want to get a leg up and do it more "logically" and formally I would definitely recommend the blog posts and books from Brendan Gregg. He formally defined a lot of debugging techniques that are in use today, and can help you debug apps and various systems, just to name a few like the USE method. Checkout his book called "The System Performance", there you can find all those methods that will make your jobs WAY easier in the long run. A lot of times at your job you're gonna need to find where an outage happened, and your job will be to find the root cause, fun times.
6.) Become more likable as a person
But you said, I came into engineering just so that I don't have to talk to other people. Hate to burst your bubble, cause this will make or end your career. I know a lot of engineers that have poor people skills, and just suffer cause of it. You don't need to become a motivational speaker or a talk show host, but you'll need to navigate a lot of people without pissing them off (especially those that are higher up the food chain). As a DevOps engineer you'll have to make changes that many people won't like, for instance telling a dev that his workflow just isn't good! How are you gonna do that? And also, if you don't have anyone on your side from the higher management position like an VPE, CTO or even the CEO, you won't make any lasting changes. Sorry to break it to you, but that's how the real world works. So learn how to communicate to people, and try to be a pleasant human being first.
That's it folks, that's real world advice on how to start your DevOps career in 2024, the main motivation for this blog post was all the nonsense out there that people write that simply doesn't make sense.
Live long and prosper
Tom