Software Craftsmanship — Introduction to Software Craftsmanship

Ali Süleyman TOPUZ
3 min readAug 6, 2023

--

Introduction to Software Craftsmanship

Software development is a multifaceted domain, constantly evolving in its methodologies and best practices. While the last few decades have witnessed significant shifts in how we build software, the underlying principles of professionalism and quality have always remained paramount. Enter the world of Software Craftsmanship — a philosophy and practice that puts the craft and the craftsman at the heart of software development.

Defining Software Craftsmanship

Software Craftsmanship is an approach to software development that emphasizes the importance of the code itself, the professional who crafts it, and the community that supports this craftsmanship. It isn’t just about writing code, but writing code with care, precision, and pride.

At its core, Software Craftsmanship is about:

  • Mastery: Continuously improving one’s skills, always striving to become a better craftsman.
  • Professionalism: Taking responsibility for one’s work, ensuring that software is well-crafted, and fulfilling the needs of the user and the business.
  • Community: Sharing knowledge, mentoring newcomers, and building a community where software developers can learn and grow.
  • Pragmatism: Recognizing that while perfection is a goal, the journey towards it involves making informed, practical decisions that deliver real-world value.

Emergence of Software Craftsmanship

The idea of viewing software development as a craft is not entirely new. The early days of programming, often seen through the lens of individual hackers and hobbyists building systems, can be viewed as a craft. But as the software industry grew, there was a shift towards formal processes and methodologies.

The 1990s and early 2000s saw the rise of Agile methodologies. Agile was a reaction to heavy-weight methodologies that were deemed too rigid and out-of-touch with the realities of software development. The Agile Manifesto, penned in 2001, emphasized individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan.

Software Craftsmanship can be seen as a further refinement of the Agile philosophy. While Agile methods focus largely on the process and the customer, Software Craftsmanship puts a renewed emphasis on the code itself and the professionals who write it.

Building Upon the Agile Manifesto

The Software Craftsmanship movement acknowledges the value of the Agile Manifesto but argues that being Agile isn’t enough. It’s entirely possible to be Agile — delivering software quickly and responding to change — without delivering well-crafted software. Speed without quality results in technical debt and software that’s difficult to maintain.

The Manifesto for Software Craftsmanship builds upon the Agile Manifesto by emphasizing:

  • Not just working software, but well-crafted software: It’s not enough for software to just work; it should be built with care, quality, and a view towards maintainability.
  • Not just responding to change, but steadily adding value: While adaptability is crucial, it must be coupled with a continuous delivery of value without accumulating technical debt.
  • Not just individuals and interactions, but a community of professionals: Beyond individual expertise, a community that supports learning and growth is vital.
  • Not just customer collaboration, but productive partnerships: It’s about forging deep relationships with customers and stakeholders, ensuring that they’re part of the journey in crafting excellent software.

Conclusion

Software Craftsmanship is a call to arms for developers and teams who want to elevate their work from just ‘code’ to ‘craft’. By placing an emphasis on mastery, professionalism, community, and pragmatism, it seeks to create a world where software is not just functional but is built with care, pride, and a deep sense of responsibility. As we continue to navigate the ever-evolving landscape of software development, the principles of craftsmanship serve as a timeless guide to quality and excellence.

--

--

Ali Süleyman TOPUZ
Ali Süleyman TOPUZ

Written by Ali Süleyman TOPUZ

Software Engineering and Development Professional. Writes about software development & tech. 📍🇹🇷

No responses yet