DevOps is one of the most mentioned terms in IT these days. It is usually associated with digital transformation strategies and with methodologies like Continuous Delivery or agile development.
In a previous post (The legendary origins of DevOps movement) we talked about the origins of the term but, in the same way as with most tech buzzwords, it’s complicated to find an accepted definition for the term and it’s actually frequent to find different contradicting or simply plain wrong uses of it.
A big part of this confusion is due to mixing up what DevOps is with the necessary requirements or benefits obtained when implementing it. With no intention of being excessively strict on a term whose frame hasn’t been quite established yet we will at least try to shed some light on the concept.
DevOps according to Wikipedia
We will start with the closest to an accepted definition we can currently get, what does Wikipedia say about DevOps? “DevOps is an answer to the interdependence between software development and IT operations. Its purpose is to help an organization to produce software products and services in a faster, higher quality and lower cost way.
Companies with a high release frequency may require knowledge of DevOps. Flickr developed a DevOps system in order to fulfill a business requirement of ten daily deployments. These type of systems are known as continuous deployment or continuous delivery and are usually associated with lean startup methodologies. Work teams, professional associations and blogs have been using the term since 2009”
Everything is clear isn’t it? Or do you think as well as I do that there is an overflow of concepts? Let’s narrow it down to three main ideas:
- DevOps is a software development methodology.
- DevOps is based on integrated team work between software developers and system administrators.
- DevOps allows us to develop software in a faster, higher – quality, lower – cost way with highly frequent releases.
With all this in mind let’s have a closer look at some of the different views on DevOps.
Is DevOps a culture?
No, DevOps is not a culture in itself but it does require a strong cultural and structural change in order to be implemented. A cultural change towards cooperation, communication and in its end to the complete integration of the old development and system areas.
This cultural change is so complicated to achieve in some organizations that there are many who directly related it to DevOps, but let’s remember: DevOps is a software development methodology and a cultural change is not a way of developing software in itself.
Is DevOps a new race of orchestra men?
Another common misconception is to mistake DevOps for models some startups throw themselves into in their beginnings, models in which all the members of the technical team must know about development, systems, databases, performance tuning… even about office cables, buying computers or configuring other employees’ business phones, sounds familiar?
That model can work for a while but it doesn’t go any further. DevOps doesn’t consist in increasing the number of responsibilities for developers, making them wear different hats (two in particular, one for development and another one for systems) but in replacing those two hats for just one: a new DevOps hat.
Is DevOps a profession?
According to Rob Steward, product development vice president of Progress Software, “A good DevOps organization will free up developers to focus on doing what they do best: write software. DevOps should take away the work and worry involved in deploying, securing and running the software once it is written”
If this is the case then what is a DevOps engineer? Didn’t we agree that DevOps allows developers to just develop? Then why is there such an increasing demand for profiles with the specific skills to set up DevOps’ teams?
The answer is simple: for a developer the transition to a DevOps model is immediate while a computer engineer needs a new set of skills. These skills, according to research done by Puppet Labs, follow this order: scripting, people skills, process reengineering and lastly experience with specific tools. A profile that is not easy to find.
So No, DevOps isn’t a profession and there aren’t any strictly DevOps profiles or DevOps engineers but “computer engineers with specific abilities that allow them to integrate into DevOps teams”.
DevOps: a digital product development model
To conclude let’s stick to a simple definition of DevOps all of us can agree on: DevOps is a software development methodology based on the integration of developers and system administrators that allows developers to focus only on development so that they can deploy their code in seconds.
DevOps is particularly useful in the new digital transformation and digital product development setting in which the final user and/or internal business client demands TTM (time-to-market), more flexibility, higher quality, lower costs and highly frequent releases.