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.
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.