Software Craftsmanship by Pete McBreen challenges the traditional view of software development as an engineering discipline. Instead, McBreen argues that software development is a craft, where developers should see themselves as craftsmen rather than engineers or factory workers.
The book emphasizes skill, mastery, and continuous learning, promoting an apprenticeship model for developing expertise. It serves as a call to action for developers to take responsibility for their craft and strive for excellence beyond just meeting deadlines.
- Unlike traditional engineering, software development is highly flexible and creative.
- Engineering focuses on rigid processes and repeatability, while craftsmanship emphasizes skill, experience, and adaptability.
- The best developers hone their craft through practice, mentorship, and continuous learning.
- The factory model of software development (rigid methodologies, mass production mindset) fails to deliver quality software.
- High-quality software comes from skilled individuals, not rigid processes.
- Agile methodologies align better with craftsmanship than traditional waterfall models.
- Master-apprentice relationships help junior developers learn by working alongside experienced professionals.
- Companies should invest in mentorship and knowledge sharing rather than relying on formal training alone.
- Continuous learning and practical experience are essential to building mastery.
- Software craftsmanship prioritizes well-structured, maintainable, and readable code.
- Developers should refactor continuously to improve codebases.
- Testing, peer reviews, and continuous feedback loops are core practices.
- A craftsman cares deeply about the quality and impact of their code.
- Good developers own their work—they don’t just write code; they build solutions that last.
- Software should be designed to be extended and adapted rather than discarded and rewritten.
- Companies should hire and nurture craftspeople, not just programmers who follow instructions.
- A craftsmanship culture promotes collaboration, creativity, and continuous improvement.
- Encouraging self-directed learning and experimentation leads to better software.
- Short-term thinking (rushing to meet deadlines without considering long-term code health) leads to technical debt.
- Craftsmen balance business needs with technical excellence.
- True professionals push back on bad practices and advocate for sustainable development.
Software Craftsmanship promotes a shift in mindset—developers should view their work as a lifelong craft rather than just a job. The book advocates for:
- Mastery through experience and mentorship
- Code quality, maintainability, and long-term thinking
- Rejecting the factory model in favor of a craftsmanship approach
By embracing craftsmanship principles, developers can create software that is not only functional but also elegant, reliable, and sustainable.