In my past two blog posts I have mentioned the Agile Manifesto and my intention to share some reflections on this important statement of the values behind an Agile development methodology. As I hone my plans for the next mini-arc of blog posts I want to write – about ‘a scrum in the life’ of one of the products I am working on currently (should be starting this one at the end of the week) – I wanted to share a few thoughts about the manifesto to set some big picture context.
First, a few disclaimers. There are many places on the web you can find the Agile Manifesto and reflections on it from people deeply involved in the Agile community. I have a link on the sidebar of this blog that points to ‘the original’ but there are plenty of other sources as well. The link I posted on the sidebar will also lead you (if you want) to more information about the original authors of the statement and the story of how and why they created it. I had not yet begun my software career as this group met to write the manifesto in February 2001, and I did not start working in an Agile environment until 2006, and so I am well aware that there are plenty of folks out there with deeper involvement in Agile than I have.
One such person in my current firm is a guy named Chris who has been instrumental in helping our company think about applying Agile as we develop software. Although we had started to experiment with Agile before Chris was hired, his influence in our approach and in my own thinking has been significant. Although I borrow ideas from many sources and reflect on what I’m hearing and learning from others, the thoughts you’ll find here are my own. Nevertheless I like to give credit where it is due and Chris is certainly one of the people whose passion for Agile has most impacted my own thinking. He doesn’t tweet that often, but you might want to follow him yourself (@ChrisFunck).
With that in mind, let me quote the short text of the Agile Manifesto here:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
And here are the five things that resonate most with me from this statement:
- This is a community statement. Agile as an approach doesn’t just talk about collaboration (across teams and with customers) – it grows out of community. People working together around shared values and with a shared vision is a key feature of the Agile approach.
- This is a practical statement. Part of why it has been easy for me to weave some thoughts about the manifesto into my recent blog posts is that Agile is about doing software development in the real world and not just theorizing about how it might be done in the abstract. Its goal is always working software – a very practical goal indeed and one that is easy to measure against.
- This is a flexible statement. Collaboration and responsiveness are at the heart of Agile, as teams work together and with customers to solve problems. Agile allows different expressions in different contexts rather than insisting upon procrustean rigidity that assumes all problems can be forced into one solutions mold. [And if you don’t know who Procrustes was check this out: http://en.wikipedia.org/wiki/Procrustes.]
- This is a gentle statement. The Agile approach is not about dictating methodologies or demanding adherence to the dictates of folks outside the product development organization. The manifesto talks about “uncovering better ways” to build software through the open-ended process of interacting with others and about balancing what might seem like conflicting pairs of values (collaboration or contracts, responsiveness or planning). This gentle approach is a great fit for companies and individuals committed to learning and growth rather than those who think they have already mastered things.
- This is a values statement. Some approaches to software development are about defined practices and specified rules while Agile emphasizes core principles that can be applied across many different situations. Whether you use kanban or scrum, story points or planning poker, lean or extreme, or some combinations of all of these, Agile focuses on the values supporting your approach to software development rather than advocating strict rules that all organizations must follow. I much prefer a methodology based on principles and values to one structured around rules, and so does the company I where I work, and so Agile is a good fit for me.
As you can see, there is a lot I like about the Agile approach – including this expression of its core values. These principles will pop up in other blog entries from me (as will a reflection at some point on the twelve principles of Agile development), but I wanted to take this opportunity to share some of the key reasons why I find this approach to software so appealing. Personally I find the practical values embedded in this manifesto a helpful guide in many areas of my life beyond software development. A gentle and flexible community sounds like a great place to work and a fun place to live. I’d like to foster this more myself. Of course, in truth it’s not that simple.