Babacar, a Margo consultant, gives us his definition of Craftsmanship. An interesting view which focuses on the main principles of Software Craftsmanship, an essential everyday tool for today’s developer.
Although it isn’t a methodology, Software Craftsmanship offers a very different approach for developers and companies. It strongly recommends the adoption of certain technical practices and disciplines, mainly as defined by Extreme Programming (XP).
Offering a high level of synergy with Agile and Lean principles, it promises to take our activity up to a higher level. Professionalism, technical excellence and customer satisfaction are the main aims of Software Craftsmanship.
It is designed to provide ways to improve as a developer and guidelines for delivering better projects.
The Software Craftsmanship manifesto is organised around the 4 main principles set out below:
“Not only working software, but also well-crafted software”
Keeps the changing cost of entry or of corrective maintenance for the application as cheap and quick as possible, with relevant, comprehensible, simple tests that express the business requirements.
“Test-Driven Development” and “Behaviour-Driven Development” are proving to be very good methods for moving towards well-designed software.
“Not only responding to change, but also steadily adding value”
Adding value to a package doesn’t stop at development and corrective maintenance. It includes improving the structure, re-working and testability of the code.
For an application to be open-ended and long-lasting, code quality is fundamental.
At a time of falling budgets, re-writing a package after a few years in production does not give a great return on investment.
“Not only individuals and interactions, but also a community of professionals”
Learning requires sharing too. Software Craftsmanship encourages developers to provide feedback, to work in pairs, to try to implement good practices in their teams and organisation.
“Not only customer collaboration, but also productive partnerships”
Collaborating with the customer and helping them to define and prioritise their requirements is now essential.