Software Craftsmanship is a metaphor for software development: software as a craft and developers as blacksmiths. In other words, Software Craftsmanship is about professionalism in software development.
The Software Craftsmanship manifesto:
- Not only working software, but also well-crafted software: regardless how old the application is, developers can understand it easily; high an reliable test coverage, clear and simple design, business language well expressed in the code.
- Not only responding to change, but also steadily adding value: constantly improving the structure of the code, keeping it clean, extendable, testable, and easy to maintain; always leave the code cleaner than we found it.
- Not only individuals and interactions, but also a community of professionals: we are responsible for preparing the next generation of craftsmen; writing blogs, contributing to open source, making our code publicly available, becoming part of our local communities, and pair programming with other developers.
- Not only customer collaboration, but also productive partnership: software craftsman are not factory workers, they want to actively contribute to the success of the project, questioning requirements, understanding the business, proposing improvements and productively partnering with the customers or employers.
The Software Craftsmanship attitude:
- We own our career. "Who is in charge of our career and our professional future?"
- Keeping ourselves up to date: books, blogs, technical websites
- Know who to follow: help us to filter the entire amount of information we have online or in physical books.
- Practice, practice, practice: TDD, Katas, pet project(s), open source, pair programming
- Socialise: follows the manifesto "Not only individuals and interactions, but also a community of professionals"
- Deliberate discovery: the biggest mistake that we, software professionals, can make is not accepting that we don't know what we don't know.