DevOps ‘for Beginners’
This article as PDF
Slides for this article.
- DevOps
- DevOps Engineer
Definitions
DevOps
- Coined in 2009
- A philosophy of integrating Development and Operations
- Often a Cargo Cult
DevOps lore is that DevOps as we recognise it today was born of a conference talk given by John Allspaw and Paul Hammond titled “10+ Deploys per Day: Dev and Ops Cooperation at Flickr”.
A significant problem is organisations that for DevOps cargo cults. Cargo cults arise from a sort of sympathetic magic thinking. Native islanders during the war witnessed soldiers build airstrips, control towers, radar dishes, etc. They saw food and manufactured goods delivered by aircraft. Once the soldiers left the aircraft stopped landing and the flow of goods stopped. The islanders built facsimiles of the radar equipment, built airstrips, and control towers in preparation for the hoped for return of aircraft along with all they brought. Obviously no aircraft came. The islanders reproduced the form without understanding the function.
Similarly organisations often reproduce the form of DevOps (they create a DevOps team with people holding the title DevOps Engineer) but failing to appreciate the function of DevOps these efforts seldom realise the gains promised.
DevOps Engineer
- Job title
- NOT agreed upon, but commonly includes:
- Maintain CI/CD
- Care and feeding of infrastructure
- Communicate/coordinate across lifecycle
- Metrics collection and analysis
- Broad knowledge
DevOps beginner is sometimes seen as an oxymoron. This is, I suspect, because people define “DevOps Engineer” as “someone with broad experience of IT systems over many years”. Under this definition one can only agree. However these same people will often council people wanting to start a career in DevOps to first work in development or operations, which to me sounds like advice on beginning DevOps.
Can you step straight into a DevOps Engineer role? Evidence from people who have done just this suggests it is possible, but also very rare. These ‘Junior DevOps Engineer’ roles are sort of apprenticeships.
Core Skills
Problem Solving
The principal skill of any IT professional, but above all in a DevOps Engineer role, is problem solving .
Not any specific technology (trust me, they all date). Learn to think!
- Identify the problem
- Figure out possible solutions
- Liaise with domain experts
- Plan and execute solution in controlled manner
What this stream is about
- Use the fundamentals
- Teach the ‘hard parts’
- Problem solving
- Research (finding things out)
- Constructive play (experiment)
There are, as people pointed out, plenty a ‘structured video courses’ but these do not teach what I believe to be the important skills. You certainly need to invest time learning at least the basics in a wide variety of the disciplines. Recognise though that it is impossible to be an expert in all areas. Learn enough that you can communicate clearly with domain experts.
The ‘hard parts’ are, by definition hard to teach but important to learn. The best way, IMHO, is practice, practice, practice.
Research: Asking the right (sort) of question. Where to look. How to read.