Nowadays, everybody talks about software craftsmanship and how this state of mind can lead to better software quality. But what are the concrete benefits of having at least a craftsman in a development team ?
Of course, you can expect a craftsman to produce clean code and to slowly improve the code base of your legacy project. This will surely happen on its own code quickly. But more importantly, the goal is to make other members of the team improve their skills by working near a craftsman, by using some of the XP practices for instance. Pairing with an experienced developer is really an excellent way to learn how to deliver better code. Code reviews can also be an effective way to propagate good practices among the team. From my point of view, reading quality code is a prerequisite for writing quality code. Discovering a nice pattern, learning how to test a legacy module, seeing simple refactorings that make the code easier to read, are some examples of easy benefits.
Another aspect that will boost your team is that people will learn a lot by talking with a craftsman. After my first mission, I had the chance to work with Cyrille Martraitre, which is the funder of the Paris Software Craftsmanship community. Before meeting him, I had never heard of TDD, BDD, clean code, SOLID principles and many other things. In one year, I have learned more than in the 4 previous years ! I discovered the existence of meetups, katas, code retreats, the JUG community, and I’ve started to work more on improving my skills. Meeting him made me realize what being a developer can be, and it was so much more interesting than what my job was until then. I’ve recently seen a similar case when a young developer started reading articles, blogs, watching videos from Uncle Bob or conferences… All of this happened after a passionate developer (Dorian Bussi, aka @bussidn) that joined the team a few months back had worked closely with him and had started to share his knowledge during team meetings. Craftsmen like to talk about development and their practices, so they can provide valuable advices to the whole team.
Moreover, if you have several experienced craftsmen in your team, the boost on your team will be even bigger : they can confront their opinions, share the topics they are currently learning… This kind of discussion inside an openspace is very likely to catch some ears, and other developers will be tempted to join the conversation !
Finally, craftsmen can also have an impact on the way developers in the team look at business aspects. As they try to have a better understanding of the business and the expectations of the users, the team will slowly start asking questions to the business analyst, the product owner or even the end user, and they will acquire a better knowledge of the features they are working on. This will also lead to better software, because the features produced will be closer to the expected behaviour, and communication with non-technical people will get easier.
Despite the common opinion people have about developers, programmers are usually very curious and they like to learn. Comfort zone may be a good place to stay for some time, but programmers always want to exit this zone when they start to get bored. So, bringing in the team someone that will push the whole team outside their comfort zone and that will push the quality of the produced code further is an inestimable benefit that can transform a junior team into a truly passionate developers team !