This is probably the single best advice there is regarding agile software development, offered by the authors of The Pragmatic Programmer under section “The Essence of Agility”. Having worked in agile and pseudo-agile teams myself, I believe this is a valid point conspicuously disguised as a rant. Teams often tend to follow some off-the-shelf agile model as a written-in-stone guidebook, and in doing so inadvertently move away from the very essence of agile.
Just the following four deceptively simple values should apparently put one on a path to true agility:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
In my experience, I’ve found #2 and #3 to be the most difficult to comply with as they often involve setting expectations with the client which can be tricky, unpleasant, or downright impossible.
These four values should guide not just project managers and analysts on a team but also developers. The art of creating good software doesn’t only lie in writing clean code but also in enforcing inclusive and structured communication patterns.