Zero to DevOps: The Road Ahead

Road Ahead.jpg

The internet is full of stories detailing how people went from varying industries with no prior coding experience to landing fantastic roles as developers and software engineers. It is a path well trod and one with endless resources to help others get there too.

Conversely there are far fewer resources laying out the steps to becoming a DevOps engineer. It is for this exact reason I started Zero to DevOps , outlining my journey to switch careers will hopefully end up as a useful resource for others who would like to do the same.

Additionally I believe writing this whole story down will help add direction to what I’m doing and cement what I learn along the way.

The first thing to delineate is what exactly DevOps is, what a DevOps engineer does and therefore what I need to learn.


What is DevOps?

A quick google of this question will immediately show you that it is somewhat of a controversial debate. Promptly pointed out in any discussion is the well worn “DevOps is a cultural philosophy and not a job role”. Despite this statement being trotted out at every possible opportunity it is fair assertion, DevOps is born out of a philosophical approach to bridging software development and the IT operations that deploy it.

Agile Admin has a good overview of the DevOps approach defining it as:

“ DevOps is the practice of operations and development engineers participating together in the entire service lifecycle, from design through the development process to production support. ”

DevOps therefore is concerned with decreasing inefficiencies in the relationship between operations and software development. It is an approach that aims to ensure that developers and the operations side have a complete understanding and input in the entire workflow. This enables them to design processes and code that works harmoniously and reduces friction.

efficient.jpg


DevOps Job Role

Even though DevOps started as just a philosophy it has also evolved into a specific role that is regularly talked about and advertised for on job boards, the DevOps engineer. There are 3 specific aspects that this role entails:

Infrastructure Automation - Infrastructure as code, App deployments, OS configuation

Continuous Delivery - Automating building, testing and deploying apps quickly

Site Reliability Engineering - Managing and monitoring systems

Infrastructure automation and continuous delivery are both encapsulated in the building of automated CI/CD pipelines.

CI-CD.png

There are a lot of technologies used by DevOps engineers to facilitate building these pipelines and to create automated systems. Each part of the pipeline has it’s own tools:

DevOps Tool.png

Over time a DevOps engineer will become familiar with most of these tools. However it is unrealistic to expect myself or anyone looking to switch careers to learn all of these tools before getting a role in DevOps. Therefore I need to be efficient in my learning choices in order to maximise DevOps knowledge, skills and employability.


What Should I Learn?

Luckily one of the few resources I could find online on the topic of switching from a non-IT role to DevOps is extremely in depth on this exact topic. An excellent series of blog posts on medium outline precisely what an aspiring DevOps engineer should learn:

How To Become A DevOps Engineer In Six Months or Less

In his medium posts Igor Kantor discusses the best tools to learn when trying to break into a DevOps career, firstly he sets out a foundation layer of the skills needed:

Devops Foundational Knowledge (Igor Kantor)

Devops Foundational Knowledge (Igor Kantor)

The skill base you need for DevOps is experience in an OS, a Scripting language and a cloud provider. Currently I have a good foundation in Python having spent the last four months learning and writing in it. I have also written a few scripts to automate tasks at my current job.

Somewhere along the way I decided to start HarvardX’s ‘CS50: Introduction to Computer Science’. This is a great course to take for someone with no formal education in computer science. I’ve already learnt a lot and I would definitely recommend the course to anyone also looking to make a career switch into any IT role (though don’t be under illusion that it’s easy).

I’m aiming to finish CS50 including my final project in the middle of November. As soon as the digital ink dries on that beautiful (online) diploma. I’m going to take as many Linux Udemy courses as possible, dual boot my laptop with CentOS and then live in the OS as much as possible going forward.

Me for the next 6 to 8 months

Me for the next 6 to 8 months

With so much to do it’s going to be sink or swim, so taking Dory’s sage advice will definitely be necessary.

Following the barrage of Linux learning it’ll be time to move onto AWS. This is the largest cloud platform and offers the most ‘bang for your buck’ in terms of employability and in demand skills. My aim is to quickly get the foundation level ‘Cloud Practitioner’ certification offered by AWS. Following this I will immediately begin studying for the rather more difficult ‘Solutions Architect’. Don’t think I am under any illusions about how hard this will all be, it’s going to be more than tough. My brain is in for a great time!

Once I have this foundation it’s time to begin learning the tools that make up the bread and butter of DevOps.

What To Learn Devops - CICD Tools.png

I plan to use the above order of learning provided in Igor’s posts. I do already have experience in Git and GitHub, however it is definitely something I want to know inside out before applying for any jobs. I feel it is important to have familiarity with Git before learning the rest of the tools so I will be brushing up on it in and around learning Linux and AWS. In fact a DevOps engineer friend of mine had the exact same opinion, you should have already experienced Git while you’re learning to code (in the foundation layer).

As suggested I will be learning the tools highlighted in blue first. There are a lot of good learning resources for these online such as A Cloud Guru, Udemy, LinkedIn Learning or plain old Youtube. It’s good to get as much hands on experience as possible and build out a few projects so I will be taking every opportunity to do just that.

After learning the fourth tool in the list I will have a good base of Python, Linux, AWS, Terraform, Git, Docker and Jenkins. I believe this will be enough to start applying for junior DevOps roles. I will go more in depth for my plan to learn all of these tools in the near future.

It is hard to timeline this, I plan to take stock in mid April 2021 and see where I am overall. Until then I’ll be posting monthly updates of what I learn, in between these I’ll be writing a few more in depth posts of what I’ve found out along the way.

Previous
Previous

Is It Worth Learning C?