A few years ago at my last company, there was a big push to try and get the software engineers to learn DevOps. The driver was down to just how difficult it was to hire decent DevOps engineers.
It had got to the point that projects were getting delayed by several months as there was no capacity to take care of the infrastructure. Projects that were critical to the business had to hire expensive contractors in order to get the work done.
As a lifetime learner, I don't shy away from learning new skills and took on the challenge of learning DevOps. I already knew my way around AWS, having set up several projects manually in the past, I wasn't starting from zero.
Many companies do still set up infrastructure manually but this can become a nightmare when you need to set up the same infrastructure on multiple environments. The solution was to use Infrastructure as Code (IaC) to provision all of the resources in AWS. There are a few ways to do this but we chose to use Terraform for this.
One of the benefits of learning a new skill on the job (in addition to getting paid for it) is you have access to all the code that others have produced before you. As I mentioned in my previous post, as a child I liked to take things apart to see how they worked.
I did exactly the same thing with the Terraform code that we had at the company. I went through each module to see how it was structured, compared it to the resources on AWS and looked up anything I didn't understand in the Terraform documentation.
I also took a few courses on Udemy and Pluralsight to make sure I had covered everything.
Within a couple of weeks, combined with my previous knowledge I knew enough to be able to write my own Terraform modules and provision my own infrastructure in AWS.
Many of the engineers who took the time to learn DevOps became the go-to people in their teams for infrastructure work. Some even switched over to focus more of their time on DevOps as they enjoyed it so much.
However, not everyone was as happy to learn DevOps. The reasons given ranged from:
- That's not my job.
- I have enough to learn already.
- I need an official AWS certification before I can do anything.
I am not going to tell anyone that they have to learn something. All I can do is share my reasonings behind why I chose to learn DevOps and hope it nudges people in the right direction.
I have never been happy being a cog in a machine.
I want to know enough about everything so that I can build and run the machine myself. If you only know a single piece of software engineering then you will always be stuck as a cog, as you are reliant on others to create the whole application.
A frontend developer needs a working backend application to do their job. A database administrator needs an application to use the database. DevOps need an application to use the infrastructure they have built. Most "Full Stack Developers" only focus on frontend and backend and completely miss out infrastructure and DevOps.
If you know a little bit (or a lot) of everything then you can start with an idea and build out the whole project. Sure it will be a lot quicker if you have help but it is possible.
Even if you don't have dreams of building your own SaaS business one day, knowing DevOps has other benefits as well.
- 💰 Higher Salary - many companies will pay more for a developer who also knows DevOps.
- 👍 Better Engineer - understanding what is possible on the infrastructure side will help when comes to designing software as well.
- 💼 Job Security - there is currently huge demand for DevOps engineers which makes it easier to find a job.
Out of the excuses given for not learning DevOps, there is one that is very valid.
I have enough to learn already.
Unless you want to become a DevOps engineer, I would hold off until you have a good foundation first. I have included monitoring and DevOps in my Backend Developer Roadmap but they are at the bottom for a reason.
If you are still learning and feel that adding even more to your plate would be too much then stop. Eventually, you will reach a point where you know everything else pretty well and have the capacity to take on more, it just takes time.
DevOps is one of these skills that is easier to learn on the job than by yourself. Until you are responsible for an application that you need to deploy to production it is easy to make lots of mistakes.
You will need someone with experience to review your IaC to make sure you aren't doing anything stupid like adding a database to a public subnet or opening up too many ports.
I do think all backend developers would benefit from having at least a basic understanding of DevOps at some point in their careers.
If you would like to learn DevOps, Zero to Mastery has a great "Become a DevOps Engineer" (affiliate link) career path that covers both AWS and Terraform.
📝 Article - Your Computer Should Say What You Tell It To Say. When you visit a website your browser sends a User Agent string that tells the website what OS and browser you are using. This is so websites can be customised for the best experience. Google want to take this further and force browsers to send a cryptographically secure message from your computer that will uniquely identify you and the software you are running. It is worth reading this so you are aware of what is being proposed.
This paragraph from the article sums it up nicely:
Putting handcuffs on every shopper who enters a store would doubtless reduce shoplifting, and stores with less shoplifting might lower their prices, benefitting all of their customers. But ultimately, shoplifting is the store’s problem, not the shoppers’, and it’s not fair for the store to make everyone else bear the cost of resolving its difficulties.
💬 Discussion - Zoom terms now allow training AI on user content with no opt out. Who needs privacy eh? If you are using Zoom at your company you might want to make people aware of this!
👾 Demo - Water. I sometimes forget that browsers can access the hardware on your phone as well. If you look at this on your mobile you can move the water around by moving your phone! I just thought this was really cool.
📝 Article - Terraform best practices for reliability at any scale. If you are learning Terraform I would give this a read. It is these best practices that can be difficult to learn if you are studying DevOps by yourself.
"Anyone who isn’t embarrassed of who they were last year probably isn’t learning enough"
My weekly newsletter is written for engineers like you, providing you with the tools you need to excel in your career. Join here for free →