So, young or old padawan, you’d like to become a DevOps Engineer? Hell, I’d want to be one too, except that to this day I’m not really sure what the requirements are. DevOps is a term like umami, nobody really knows what it is, but the artsy restaurant magazines can’t stop talking about it, and every salesperson or consultant worth of their paycheck is able to include it in their powerpoints. Not to mention HR people and job descriptions, one could even think that continuous deployment is a common phenomenon by reading through them.
Sure, you can agree on Donovan Brown’s definition of DevOps, set goals towards that, and you’d certainly be on the right path. But the engineering part of the title roots it quite firmly on the technical side of things, and the best description I’ve seen is that your aim is to automate the sh*t out of it. What this usually means is that customer has a vision and some requirements of how their software should be run, and a shopping list of services that could maybe be used for running it. As a side note, someone should also figure out how to (more or less) continuously deploy software spewed out by a project.
In my experience, DevOps Engineer in a cloud environment is more of an infrastructure architect, just with a little less emphasis on designing things. You mostly figure out how to get stuff working, and then how to automate the deployment and configuration of various resources with your (or customers) tooling of choice, be that Azure Resource Manager or some abstraction like Terraform on top of it.
Depending on the tooling, maturity of the services, and development culture, you might end up doing some or a lot of scripting. You do get to implement continuous integration and/or deployment -pipelines, probably have to ask some hard questions on branching strategies and things like release isolation, and might even get to dabble with test automation – but I’d still argue that a lot of work and especially challenges have to do with the infrastructure as code -side of things.
If you’re into/have to do more consultancy-kind of gigs, a lot of them nowadays tend to resemble archeology sites: someone has done something, and now someone else needs to figure out why it does not work anymore or build a refactored solution on top of a house of cards (might be a really good set of cards, though). This is where past development experience pays off – debugging pipelines, shell scripts and deployments are not that different from debugging code, except that you lack most of the tools that developers have, and need to rely on things like good old event log (which you can, to my eternal delight/despair, find from App Service via Kudu).
As pointed out in an earlier post, the good thing is that a lot of generic infrastructure knowledge you might have can be carried into cloud environments. Personally, I’ve built on that knowledge first by reading and doing some Microsoft Certificates. For Azure DevOps Engineer, a good path would be to do AZ-400 DevOps Engineer Expert -certificate with AZ-104 Azure Admin Associate. You should also check out GitHub learning labs like DevOps with GitHub Actions, though Microsoft Learning paths might already be updated to use them.
You could do AZ-204 Azure Developer instead of the admin certificate, and while that is an easier route, AZ-104 is really, painfully good for you. For us completionists, doing both is a good option. Also, if you start from zero, AZ-900 Azure Fundamentals is nothing to be frowned upon – it’s a good synopsis of most of the services in Azure.