There is lots of hype, and many products, frameworks, methodologies, tools, etc. on the market purporting to be “Agile” or “DevOps”. But what do these terms really mean and how does one become more “Agile” or do “DevOps”.
Whilst there are lots of details we could discuss for hours and which hardly anyone will agree on, the fundamentals are simple:
The term “Agile”, in the context of a way of working, was originally coined by a group of software developers and published as The Agile Manifesto in 2001 (https://agilemanifesto.org).
In essence, the manifesto describes several things which this group found to be more effective in enabling teams to develop software, through their own experience in developing software and also helping other people to develop software.
At the heart of The Agile Manifesto (and therefore “Agile”) is the idea that four things are valued highly:
- Individuals and interactions (as opposed to processes and tools)
- Working software (as opposed to comprehensive documentation)
- Customer collaboration (as opposed to contract negotiation)
- Responding to change (as opposed to following a plan)
Please note that they didn’t say “don’t do the other things at all”, only that these four things were more valuable in delivering software effectively.
They backed this up by outlining Twelve Principles which support these four values.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need,and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Therefore, Agile isn’t a methodology, framework, process or toolset, although many different versions of these have emerged as ways to help people work towards implementing the principles and values described above.
Agile is a philosophy or culture about how groups of people can work together more effectively to achieve certain kinds of outcomes.
Although the Agile Manifesto was framed in terms of developing software, many people have found that the same values and principles can be applied to a wide variety of different.
To summarize – “Agile” is a set of values, supported by principles, about how teams can work together to deliver software (or in fact all kinds of things) more effectively.
By all means find tools, processes etc. which support you, your team and your organisation to implement the Agile Principles, whilst always keeping in mind that at its heart Agile is a mind-set based on the values outlined above.
The term “DevOps” is a concatenation between “Development” and “Operations” and is generally considered to refer to removing the barriers between teams developing software (Dev) and those running and supporting it (Ops).
Having started in the IT industry over 30 years ago, it would be easy to see this as simple reversion to the “way things used to be done” … we only had one team which would design, develop and test software and also support and manage it. There was no separation.
And if you look up the term in your favourite search engine, you will be inundated with a variety of tools and discussion on things like “continuous development/integration/deployment”.
Behind all of the tools, processes and methodologies claiming to support “DevOps”, are three Core Principles (also known as “The Three Ways”).
- Systems Thinking (“Flow”)
Encourage and emphasise the performance of the entire system, as opposed to a specific silo or department.
The emphasis here is on understanding and maximum the “flow” of work, throughout the entire system.
- Amplify FeedbackLoops
Enhance and increase opportunities for communication. The more feedback a team gets, the more opportunity it has to learn, grow and improve.
The goal of the Second Way is to increase both the amount of communication and speed at which feedback is received.
- Culture of Continual Experimentations and Learning
Once a team understands the whole system in which they are participating, and have constant and rapid feedback on the result of any change, they can (and should) be encouraged to try out new things.
By using these principles, a variety of “patterns” can be evolved which help teams and organisations to work more effectively. These patterns can be implemented in, or supported by, tools to make implementation easier and more effective.
Underlying the Three Ways is the concept of improving the Flowof work. Flow doesn’t just refer to the rate of things being done, but rather to the overall delivery of Value in a consistent and sustainable manner. Rushing things now may create longer term issue that harm productivity and damage trust between downstream teams and ultimately customers.
This may seem simple and, while it is, the complexity and value lie in understanding each of these principles deeply and then applying them to everything an organisation does.
To summarize – DevOps is a philosophy or culture about collaboration, communication and innovation. DevOps encourages looking at the bigger picture and understanding the impacts of local decisions on the whole system. It also encourages seeking and responding to feedback and experimentation as a way to learn and develop.
As with so many things in life, Bushnell’s Theorem applies. Both Agile and DevOps are fundamentally simple and easy to learn. The real value only comes from applying them and learning through your own experience and mistakes. In this you are in the company of a large, worldwide and growing community.
I look forward to seeing you somewhere along the way on your own Agile-DevOps journey.
Christopher William Young
Maximizing business value through organizational agility
Upcoming courses: http://www.finaplana.ch/courses/
Join our Zürich Meetup group: https://www.meetup.com/Agile-Die-nachste-Entwicklungsstufe/
Member of the Swiss Agile Association: http://www.swissagileassociation.org
XSCALE Alliance Steward – Switzerland: http://www.xscalealliance.org