If you’re anything like me, a developer who’s used to working in small dynamic teams throughout his 20 year career, the term DevOps can be a little confusing.
As the term became more common place, rather than hailing the arrival of a new approach, I found myself asking; hasn’t it always been this way? Haven’t we always been CD/CI (using Continuous Deployment, Continuously Integrating)? How is it that we can only be XP (Xtream Programmers) now?
As with most terminology, searching for the real meaning of these terms will leave you with various explanations and Google would provide you with numerous generic paragraphs.
Ah well sir, we weren’t previously automating the entire build process. Yes we were (Apache Ant, originated in 2000 and the Make build tool goes back much further).
“Well, we’re using Agile methodologies now and our teams are far more efficient.” Speak for yourself, my teams were efficient before Agile and we used many of the same common sense approaches without calling it Agile. Kanban is great, scrum meetings wonderful yes, yes, but we’ve always had meetings and we’ve always sat around a computer coding in pairs. Only we didn’t find the need to define it as ‘Pair Programming’, write blogs about it and claim it as revolutionary.
DevOps is the meeting point of Development and Operations. If you were previously a developer that worked in a siloed environment, where you were given a specification, went away and programed it for several months and then provided it to your operations team to deploy, then I understand that DevOps would be a refreshing and more dynamic approach. I’ve never seen a team that operated like that but according to Agile proponents it’s the world that we were saved from.
Ok cynicism aside, I do find value in some of these terms and here’s why. The truth is that terms are only signposts, they point in a general direction and they can mean different things to different groups. For me the terms best describe the current generation of tools and exact workflows that we use now. The words themselves are mostly meaningless so let’s not get so hung up on them.
Git, Docker, Kubernetes, Gradle, Jenkins etc… Tools that have made quantum leaps forward in how we develop and deploy, have actually shaped a particular zone of IT.
Where hardware and software previously had a boundary between them, with cloud and virtualization technologies the lines are far more blurred in recent years. Software not only controls the build of software, it also prescribes the requirements for the virtual hardware resources and launches the machines necessary to run the applications. It maintains the life cycle of applications and describes the policies that are implemented when harware fails.
In short DevOps is more of a ‘thing’ these days because of the expansion of IT in general. The problem is that the words we are using to describe very specific concepts are far too generic.