Have you ever come across these sayings, well mostly complaints, when it comes to adopting agile?
- Agile does not care about proper documentation
- Agile has no regard for processes and regulations
- Agile has no regard for the companies plan and purpose
- Agile does not care about the legal processes and clients are not held accountable.
- Etc., etc.
These are some of the most common complaints that companies and people have levied against agile and agile methodologies. Will it then surprise you to learn that what is most complained about with regards to agile actually come from the Agile Manifesto and the four values? It is these values which are mostly misunderstood.
So, then, what is the Agile Manifesto and these four values and why is there so much confusion? Let's look at these four values and try to understand the confusion.
The Agile Manifesto and the Four Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
What many people often forget and overlook is this: while things on the right are important, the things of the left have a higher priority. If there is one thing you take away from this, it is this, it's not about choosing one over the other to the exclusion of either one, but about setting priorities. These priorities will ultimately determine better quality, faster time to market and happier customers.
Let's look at these four points briefly.
Individuals and Interactions Over Processes and Tools
This is all about people. People deliver software, people deliver products. People come up with the ideas, people create the stuff that you and I love and use. Process and tools are there to aid people not to replace them.
However, we should not forget that processes and tools are there to make life easier and to keep things on track. Yes, it is often a huge complaint within large organizations that processes (a.k.a red tape) hampers progress. But the thing to remember is that just the right amount of process and the correct tools to help people achieve the best outcome.
Don't forget the processes and tools, but remember that people—individuals—are more important. When human beings interact with one another you will be surprised as to the achievements that can be realized far more than any process or tool will do.
Working Software Over Comprehensive Documentation
This is often a big one. "Agile is against documentation". No. It's just that a working piece of software is way more valuable and important than a 1000 page user manual.
This does not mean that documentation is bad. I completely agree that documentation is important. The key here is "over comprehensive documentation", not no documentation. But you cannot sell documentation to a customer. Working software brings more value to a customer than documentation.
Many agile shops and teams avoid documentation. But this is because of a lack of understanding and bad planning. Documentation is often the last thing to be considered. When, in fact, it should be one of the first. But the process of creating great valuable working software should not be overshadowed by the insane idea that documentation is more important.
Customer Collaboration Over Contract Negotiation
How often are we more worried about legal contracts, processes, and legal documentation that we forget the people behind those contracts? We forget that clients are also people.
Yes, contract negotiation is very important, but not more important than collaboration. An iterative approach and face to face discussions with customers has a better chance of delivering quality software earlier than a contract that is signed earlier and often cannot be changed.
The inability to change contracts is often the thing that brings many projects to their knees. Changing them is often a big process costing loads of time and money, which leads to projects failing or going over budget and time.
Collaborating with people, brainstorming is way better in understanding a problem than some signed documented contract or requirement. Documented requirements are important. But not the most.
A signed contract often brings in a false sense of security, but in reality, we don't know what we don't know. An iterative discussion and customer collaboration process is often the best way of finding out what we don't know.
Responding to Change Over Following a Plan
How often have you ever had anything go according to plan? Not often right? In fact, there is always a workaround—a hack. So many times we have to implement plan B, or Plan C, or .... plan Z.
Following a plan is important. We do not want a bunch of uncontrollable cowboys running amok. But being flexible and responding to changes gets value and working software out the door sooner.
Those who succeed more often are those who are flexible and have the great ability to respond to change faster and more often. Yes, plan ahead, plan for the unexpected.
But what is the unexpected? If you can plan for it, then surely it is not unexpected since you have planned for it, you expect it.
We are not fortune tellers, but human beings have a great ability to be flexible and are able to respond to change easily. Just look at how we respond to life in general.
Check out this short video:
Agile is not about doing some things at the expense of other things. It's about doing the best for the software or product and customer. It's about bringing the greatest value. It's about what is more important and not about ignoring things that have less importance or less priority.
So don't hate agile just because you don't understand it. But rather embrace it and you will find that it actually works far better and brings more value.
Do you have any ideas or thoughts? Let me know in the comments below.