Craftsmanship in general is associated with high quality. A software craftsman has to produce high quality deliverables which meet or exceed the expectations of the consumers. Software craftsmanship has more art it to it than science. It has more emotions and passion attached to whatever the craftsman is delivering. Software Engineering on the other had takes a systematic, disciplined and quantifiable approach to software development. It is more mechanical and lacks the emotional, people angle to software development. Agile practices have shown numerous times that with the right set of people, process and tools, it is easier to get closer to the holy grail of better software development.
Practices such as XP, placed a lot of focus on craftsmanship by suggesting what the customers and developers should be doing on a minute to minute basis. It laid down a series of values, principles and practices to help software development be a social activity rather than a solitary job. Practices like XP once again ignited the fact that software development is an art and not a mechanical process. It is a craft and people who are emotionally attached to this craft would become true software craftsmen.
Often software craftsmanship is related to work of a blacksmith. A blacksmith requires a lot of technical knowledge but that technical knowledge is only one aspect. He also requires tools, a practiced skill and an eye for aesthetics so that he knows that what he is producing is clean and beautiful. Similarly a software developer has the right tools and follows the best practices to create software. However, what makes the developer into a craftsman is the passion for doing things right, clean and beautiful.
I am reminded of story that I heard when I first joined Xebia. During the induction program the speaker mentioned that his father was a car craftsman. A car craftsman? Such was the persons passion about cars that whenever a car drove into his garage for service, then not only he would rectify the problem but also clean the car thoroughly and take care of other minor repairs as if it his own car. At first my reaction was that this sounds like gold plating. You should only do what you have been asked to do. However, the passion of this car craftsman made sure that the best reward for his craft is to see the satisfaction in the eyes of the beholder. He was fascinated by the reactions that he got when people got their car back. Needless to say that his passion for cars had a viral effect and his workshop was buzzing with activity all year round. Similarly software craftsman would deliver the best to his clients in terms of a well made software and make sure that his passion for work attracts not only repeat business but new clients who would want to have a better software delivered to help them with their business.
In a series of posts on Software Craftsmanship, we would like to embark on a journey of process, practices and tools which would help us become a software craftsman. One of the other key ingredients i.e the passion for software development is something that we expect from you!