Robert “Uncle Bob” Martin, one of the 17 original signatories of the Agile Manifesto, is also among the leaders who initiated the Software Craftsmanship movement back in 2009. He was concerned that agile practitioners were focusing more on iteration management activities and less on engineering best practices, hence the motivation of Software Craftsmanship manifesto to kindle the enthusiasm in software engineers to create high-quality products.
The Manifesto for Software Craftsmanship says:
As aspiring Software Craftsmen, we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work, we have come to value:
Not only working software,
but also well-crafted software
Not only responding to change,
but also steadily adding value
Not only individuals and interactions,
but also a community of professionals
Not only customer collaboration,
but also productive partnerships
That is, in pursuit of the items on the left, we have found the items on the right to be indispensable.
Whenever I read the Manifesto for Software Craftsmanship, I see a focus on quality along four critical dimensions:
Product Quality: “Not only working software, but also well-crafted software” provides a clear-cut direction on product quality in terms of design and code quality. It goes beyond that to cover several aspects of product quality that are necessary for any product to be valued as well-crafted by end users as well as maintainers.
Business Quality: “Not only responding to change, but also steadily adding value” is all about delivering business value. The quality of how a project team steadily adds value by delivering the most valuable features on time is more important than responding to change and establishing a comfort factor. This approach values the budget approved by project sponsors. This is what I refer to as delivering business quality.
Professional Quality: “Not only individuals and interactions, but also community of professionals” summons the need to build the culture of knowledge communities or communities of professionals. When we limit ourselves to “individuals and interactions,” we tend to limit our contributions as well as learning opportunities. When we become part of knowledge communities, we open up immense opportunities for sharing as well as learning. Sharing and learning are very critical to improve professional quality.
Engagement Quality: “Not only customer collaboration, but also productive partnerships” enables us to think in terms of engagement or relational quality. Customer collaboration cannot be confined to ensuring success at the project level. It has to be extended further to cultivate productive partnerships. That is the way to ensure engagement quality.
Undoubtedly, the Manifesto for Software Craftsmanship is here to stay, and will propel the agile movement for years to come.
Raja Bavani is technical director of MindTree’s software product engineering group in Pune, India.