We choose to think of Software Development as a Craft. Usually when we associate Software Craftsmanship with Code Quality and Agile (more specifically XP practices). That is a very narrow view. In fact Craftsmanship is about our innate desire to do a good job - there is a craftsman or craftswoman in all of us. This leads me to the question, what is the general philosophy behind craftsmanship and what does it mean specifically to software developers?
In his book, The Craftsman, Richard Sennet takes a philosophical view of craftsmanship through the ages in order to understand what happens when people try to do a good job. I will attempt to relate this view to Software Craftsmanship in particular. There are many lessons to glean from studying the history and philosophy of craftsmanship to answer the many questions that are relevant to our craft. For example; the struggle between practical and perfect, how do we achieve the right balance, the concept of "fractured skill" where we become only specialised in only a subset of the skills necessary to create the whole, the role of failure in learning, choosing the right tools and skills to learn? I will try to wet you appetite for exploring craftsmanship from a different perspective so that we can better understand Software Craftsmanship.
Mash is a pragmatic software craftsman always looking to improve his software creation skills and helping others do the same. He firmly believes that a well-rounded software craftsman must have a keen interest in all aspects of software creation, including; process, people, technology, user experience, development, operation, maintenance, and social impact. He relishes the daily challenges that Codurance brings to him–stretching his existing knowledge and expertise allowing him to constantly grow as a professional.
Mash is an advisor and a leader. During his diverse career, he has succeeded in invigorating large ailing software projects as well as creating highly effective software teams and departments. His broad and deep technical knowledge, organisational skills, craft focus, and empathy to people involved have been integral to his success. He has worked in many roles for charities, investment banks, consultancies, government, media and cloud providers. He prides himself at being a hands-on software developer and believes that software development skills are very hard to learn and the best way to maintain them is to apply them.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.