There is a huge need for engineers in the SRE and DevOps spectrum right now. Anywhere you look, whether it's LinkedIn, Indeed, or another job site, you'll see thousands of job postings. The interesting thing is there are now other titles popping up, including:
- Platform engineer
- Reliability engineer
- Performance engineer
When you look at these job postings, including the job postings for DevOps engineer or Site Reliability Engineer, you'll notice something; they all sort of look the same.
Simply put, because the industry doesn't truly know where to place these engineers due to the fact that they have to know a little bit of everything
So what are they? Developers? Architects? Infrastructure engineers? The answer is yes.
Think about what you would do, or what you hear that you need to do for an SRE and DevOps role:
- Deploy apps
- Ensure those apps are working properly
- Automate deployments
Even though that list is short, let's think about what you need to know to make that happen:
- You need to know cloud and on-prem environments, including virtualization
- You need to know how to write code, understand software development, and understand the architecture behind it because how else can you deploy an app and troubleshoot it if it's down? Oh, and by the way, to do this, you need to understand monitoring and alerting.
- Because apps are both stateless and stateful, you need to understand storage, databases, and how they work.
- If a user is across the world and is trying to use your app, but there's a ton of latency, you need to understand performance and how to ensure that latency is at the minimum (distributed networking anyone?). Oh, and by the way, you'll need to understand networking for this.
- Automation is much different than just writing code and throwing it at some server. In fact, automation rarely means making something faster. Automation isn't just about the code, but about the architecture. Why you're automating it, creating a standard, what the automation can do for you, how it can make engineers's lives easier, and most importantly, how it won't make things worse than manually doing the task.
- When you're doing any of the tasks above, you'll also need to test. How are your QA and automated testing skills?
And there is much more than the list above (I didn't even talk about containerization, orchestration, or systems).
The point is this; DevOps is not a junior-level role. You should be a senior-level engineer and know a really good chunk of the tech in the world today, or at least have the interest in learning it, from a development and operations perspective.
In this section, you'll see three areas are broken down; beginner, intermediate, and advanced. Because no one can know where you are on this spectrum, you'll have to answer that question for yourself. Take a look at all three categories and that might also help you understand where you're at.
At this stage, you're either graduating from school, you've been in a help desk/desktop support role for X amount of years, or you're a junior sysadmin/support engineer.
What you should focus on at this stage is:
- Understanding operating systems and systems
- Understanding networking (check out a Network+ book)
- Dive as deep as possible into troubleshooting, research, and how to find an answer (this includes some monitoring tasks)
- Dabbling at a very high level in the cloud.
If you're in the intermediate category, you're probably a pretty solid troubleshooter, understand the basics of systems and networking, and you're dabbling in the cloud/automation world. You've most likely heard about the cloud, some of its benefits, and how automation can change your life as an engineer.
At this stage, you should be focusing on:
- Getting a solid grasp of cloud technologies, automation, and why it's important.
- Starting to write code and understand it. As different as this was a few years ago, everyone is now a developer. If you want to be in the DevOps/SRE space, you must understand a bit of software development. This includes architecture, how to troubleshoot apps, and understand why apps were written the way they were. Remember, software development is rarely about writing code. Anyone can go in and learn what a variable is, but not everyone that knows what a variable is knows how to find a bug in a piece of code.
- Starting to dabble in containerization (Docker, CRI-O, containerd, etc.) and orchestration (Kubernetes, Docker Swarm, etc.). Not just playing with it, but understanding the importance of it.
- At this stage, you understand and write code, so you can start playing around with how to deploy it (CICD).
If you've reached the senior level, congrats! But guess what? Your journey isn't even close to being over. Whether you're a senior, principal, staff, or even distinguished engineer, you're still learning daily. If you've come this far, you know that the mission of learning is never over. There's always a new concept or a new tool to learn. That's what makes it fun, right?
At this stage, your arsenal should include:
- Software development
- Monitoring with a focus on performance and reliability
In short, you should be a guru. Keep in mind though, you don't need to know everything because that's impossible. At this stage, the biggest thing you absolutely need to know is how to find the answer. Don't feel bad if you don't know everything because I promise you no engineer does, and if they think they do, they need to deflate their ego.
The best way to get into an SRE/DevOps role isn't by cramming daily, doing labs for 10 hours a day, and burning yourself out. It's by studying in an efficient fashion.
Studying with efficiency in mind typically comes down to your environment, distractions, and interest.
There are a few great books out there, including Ultra Learning and Atomic Habits that can help you on the journey of removing distractions and staying focused. The biggest thing to remember is going down the SRE/DevOps path isn't about how much you cram, it's about how efficiently you can learn the information and use it.
The biggest recommendation I have for you is:
- Read Ultra Learning and Atomic Habits
- Learn how to stay focused and keep your mind on the goal. Noise-canceling headphones and study music (some good piano) are great for this.
- Go for runs or lift weights. Working out is a proven way to get your mind right.
- Remove distractions
And the biggest one? Have a goal in mind.