What is DevOps?
So what exactly is DevOps? It’s complicated. DevOps is not necessarily a specific set of tools or processes but rather a key set of ideas and practices in modern software development that enable the fast, stable and more frequent releases of software. It achieves this through optimizing the release cycle of the software, improving software development practices, improving automation and bringing transparency to the release process.
But to really understand what DevOps is and why it is so important, we need to look at the ideas and principles that DevOps was built on. This begins by looking a little into the history of software development.

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
by Martin Fowler
DevOps methodologies emerge
Combining the development teams’ agile mindset, capability to incrementally build software and the growth of the internet and SaaS platforms throughout the 2000s led to the formation of DevOps. It took the ideas of agile development, including continuous integration and delivery, but expanded to encompass the whole release cycle.
This goal became known as “DevOps”, a term formed from bridging the gap between the development of software and its operation (i.e. its deployment and monitoring for end users). It aimed to provide the answer on how to deploy software updates that bring value to end users quickly and transparently whilst retaining high quality.
As an extension of the general principles of agile software development, the DevOps methodologies were similar but allowed the whole organization, including developers, project stakeholders, testers and operations, to understand the overall release process and work more effectively together.
DevOps took the CI & CD tools and made them broader in scope to automate the complete building, testing, release and deployment of software (known as Continuous Deployment and confusingly also referred to as CD). This DevOps tooling takes code changes from a developer, feeds them into one end of an automated pipeline and pushes software updates out of the other. This focus on continuously deploying software also led to an evolution in software architecture, where systems were designed to be easily deployable, configurable and recoverable.
Finally, the growth of internet connected products & services also meant that real-time monitoring of production software was possible. This provided a lot of transparency into the released state of the software and gave developers visibility into the impact of any released software updates.
“Real programmers can write assembly code in any language.”
