I had a conversation today where someone asked me, "What is software craftsmanship ?". The discussion went far, inspiring me to write this post and share my thoughts on the topic.
To explain it in simple terms, I often use an analogy. Imagine creating a delicious croissant that your computer would relish, exclaiming, "C'est trop bon !".
You might be wondering, "Is he simply saying that software craftsmanship is all about writing good code ?" Yes, that's what I mean. Then you might ask me, "What exactly constitutes good code ?". What makes code "good" is akin to what makes a croissant delicious – it depends on the baker, and individual tastes, and the same goes for writing good code.
At its core, software craftsmanship is an approach to software development that emphasizes the developer's skills, dedication, and professionalism. It's not merely about writing code, but about crafting high-quality code. Software craftsmanship is a commitment to quality. It's about paying attention to details and delivering software that's reliable, maintainable, and efficient. It's about promoting a culture that encourages continuous learning, collaboration, and pride in delivering valuable code.
Quality in code means it's reliable, maintainable, and efficient. The key ingredient for me is simplicity. It's about writing clean code, which is easy to understand and well-organized. This involves adhering to fundamental principles, like the "single responsibility" pattern, keeping functions short and straightforward, and using meaningful variable names instead of vague ones like "value" or "a". It also involves crafting modular, independent, and reusable components that make the code easier to maintain and enhance. Having a comprehensive set of automated tests is also crucial to identify issues early in the software development process.
But software craftsmanship isn't just about the code. It's about the process and the culture. It's about embracing continuous learning, as technology is always changing and evolving. It's about fostering collaboration, as the best solutions often come from collective effort and shared learning. It's about taking pride in your work because you're not just writing code, you're creating something of value.
So, when someone asks me, "What is software craftsmanship?", I tell them it's a commitment to quality. It's about investing the time and effort to do things right, to learn and grow, and to create the best product possible. It's about being a professional in every sense of the word.
That is my point of view about software craftsmanship. What's yours? I hope you'll enjoy this perspective, and it marks the beginning of a long series exploring the art and nuances of software craftsmanship.