24 May 21 TechOps
Written by Jamie Thuillier, Cloud & DevOps Consultant at Burns Sheehan.
The world at large has been changing pretty significantly over the past year, for reasons not uncommon to anyone, however it’s a different “world” that I want to touch upon in this discussion. “DevOps” isn’t a new world, the concept of it has been in fruition for a few years now with technology and business infrastructure getting up to speed, however the continual evolving nature of DevOps remains rife. Whilst there is a responsibility and stable need for businesses to remain current with their technology, the market - now more than ever - is showing that there is also a great need for engineers to be continually learning and developing.
One area that the market seems to be “hot on” right now, is the ever-growing requirement for DevOps/ Platform Engineers to have some development/programming skills. The days of a DevOps engineer coming from an infrastructure background, rooted in Linux, without any sprinkle of development seem to be diminishing for those forward thinking companies, who are increasingly searching for multi-faceted engineers to lead them on their technological journey. I was curious to find out more about why this need in the market has become so pertinent, how it has affected engineers from those more traditional backgrounds and what the future looks like.
I spoke to Ilja Popovs, a Platform Engineer that Burns Sheehan placed at Travelex, before he moved onto WeTransfer where he is currently working on some really exciting projects. Ilja’s background is rooted in infrastructure, and having seen this shift in the market, he has been walking his own “coding path”, hence how this discussion arose.
“Definitely the nature of my role pushed me towards learning to code and develop, but I think it is very lucky and beneficial for me to not stagnate. So, if there was ever an opportunity to advance myself, it’s something I jumped on. Learning new things is always challenging, but that’s what makes it exciting. I’m the kind of person who feeds off other people’s energy, so for me to see that I produce something that is exciting for other people, that is the most rewarding. Seeing either an idea I share, or a tool I’ve created (or even contributed to) being used by my team or other teams in the organisation is what keeps me going.
Fortunately, I’ve been very lucky to work with some very talented people; people who are always happy to teach others, and I think this has contributed a lot to my personal success in learning this new skill. We don’t live in a world anymore where knowledge is unique to one person, everyone is happy to share. For example, the website https://exercism.io/ is a place full of people who want to learn how to mentor and others who just want to learn; so those wanting to learn how to mentor, mentor those who want to learn – it’s the perfect paradigm. Of course, GitHub is a great platform also, where you can get ideas, peer comments, you can review code together etc.”
“Although DevOps has been in place for a few years now, it is not a merger of skills, it is a concept; a framework if you like. However, now we are reaching a point where if “Ops” people can speak the same language as developers, it's really beneficial, because it lessens the operational burden to manage other people’s services. If we can just make tools that would allow other people (developers) to operate their deployed services easily (scale up or down, access logs and metrics, redeploy etc), it can help to enhance their workflow.
Ultimately, as a DevOps Engineer being able to code, we make tools to make others’ work cycle easier and more efficient. The solutions created will be very tailored to the respective company, and ultimately tools are becoming more comprehensive and people want to do more. By way of example, at WeTransfer when I joined, we had a setup where to deploy something, an “Ops” person had to run an Ansible script. Now we live in a world where a developer can issue a CLI command on a tool we created and can deploy the service from their terminal themselves. Ultimately, it’s exciting to be able to do more, so coding really allows you to be in a position where you can provide much more value and it feels like we are now arriving to a place where people work smarter rather than harder.”
“Not so much issues. Speaking from a personal perspective, it has been very beneficial for the company for pretty much all engineers to now be skilled to some degree in writing code. One challenge may be that people now try to over engineer solutions because there’s a bunch of them and we all like to be on a “cool track”, and then try to make something more complex than it needs to be. Generally, though, having multiple engineers being able to think in codified logic has made conversations between teams easier, and made it easier to resolve problems rather than create them. Ultimately, we are all striving for the same goal, so spreading the knowledge between teams only ends up being good.
“It depends on what they want to do. If a person wants to stay exclusively in that narrow field e.g. a data centre engineer or network engineer, then they’ll be fine. If a person wants to be more of a generalist and have a slightly wider outlook, then you constantly need to learn something new, and I’m sure coding will not be the end of it. There are new tools always coming out and we will always need to continue advancing ourselves, as there is no stopping. So the general answer is, it is up to the person.
Going forward though, for DevOps/Platform type roles, I see programming experience being a key requirement for all, because I see it as a very good glue between tools like AWS and classical development. You can create things that ease peoples’ work. I don’t think going forward it will be possible for us to operate in the way we do, if we don’t aid developers in shipping, creating scaffolding for the services, collecting metrics, without those custom tools we create, which are ultimately founded in a need to code/program.
“Potentially, but it is always beneficial to know a bit more. Tools for expressing Infrastructure as Code are getting more and more advanced, and by mastering that, you can get a good idea of what development is because really it’s just a bunch of logic. If you can train yourself how to think and the consequences and order of things, sure there’s no reason why you can’t learn. In addition to tools like Terraform that uses its own language (HCL), there is also the likes of Pulumi which is a framework for expressing infrastructure in Go or Python (and so can provide a little cross over). But let me just say, to enter the space you probably don’t need anything at all, apart from the desire to learn.”
“Keep your mind open. A lot of problems come from people’s ego and just accept that you don’t know everything, particularly if you are wanting to jump into a brand new space. You’ve got to be consistent, doing things often, almost daily, really helps. There’s a lot of people who want to help you to learn and succeed, so find them along your journey.
In this field, a lot of people struggle with imposter syndrome, thinking they are not good enough, because in the span of 30-40 years, we’ve gone from believing coding/development was only something that the absolute elite minds could do, to now something that kids learn at school. So people do question whether they are good enough to learn, there’s a lot of mental challenges, but you just have to believe that you can achieve it. Lastly, try and enjoy what you are doing!”