The word craftsmanship brings many connotations to our minds. These can include the memoirs of holidays spent in regions where handmade items not only cultivate the heritage of local groups, but also – to our huge delight – remind us of those happy moments of summer rest during a whole year. On the other side, craftsmanship is the special skill someone uses to make something beautiful with their hands, or a very detailed work that has been done using a lot of skill, so that the result is beautiful. It is a kind of dance with precision, patience and care in whatever a craftsman or a craftswoman does. Those might be the reasons why we admire the creation processes and their results.


As a professional working with Development Teams for a few years now, I began to wonder: can craftsmanship be observed in the professional context of software development projects? How does it relate to Agile and Scrum practices? Is coding a kind of craft?

Craftsmanship, code and Agile

A term software craftsmanship described by Sandro Mancuso led me to enriching the perception of how Development Teams work, or what they should strive for technically. The concept aims at reaching precision, presenting highest professional programming standards, and keeping right business goals in mind. In fact, I believe it may be considered to be a complement to Scrum Guide, as it truly resulted in a much deeper understanding of the Developer role and its working environment, which is simply indispensable to a Scrum Master or Agile Coach work.

Software craftsmanship ideas bring a solid analogy to the structure of the Agile Manifesto. It goes beyond reacting to change in dynamic business environments though, and it highlights the professionalism of code creators. The part of the original Manifesto is quoted here:

Not only working software, but also well-crafted software

Not only responding to change, but also steadily adding value

Not only individuals and interactions, but also a community of professionals

Not only customer collaboration, but also productive partnerships

Examples of legacy code, refactoring, code smells or unknown code can threaten the product development in its entirety. Therefore, the code should be well-maintained and predictable. It should be improved continuously, tested regularly, and be easily modified. In order to do so, Developers should grow constantly, be open to new solutions, share their knowledge and experience as well as inspire one another. The teams should also work hand in hand with business stakeholders and be able to speak their language. Full partnership illuminates the foreground, as business value and user’s needs are common goals for both sides.

While reading through the Manifesto, one may be overcome by an irresistible urge to refer to Scrum values such as: commitment, focus, openness, respect, and courage. The truth is it adds up quite pragmatically.

Pexels.com

Building the right mindset

Software craftsmanship is a mindset, similar to an Agile one – not easy to build, but bringing an enormous dose of satisfaction, increasing business chances and improving mutual understanding of the project goals. How can an Agile Coach or a Scrum Master support the craftsmanship development especially in teams that struggle with organisational or technical maturity?

First, it seems to be common knowledge that some engineers like to look up to senior colleagues who bring talent and experience to the teams. We need to understand that the likelihood of an Agile Coach/Scrum Master receiving the Tech Lead-like respect within the team is relatively low. Nothing is lost though! Promoting growth, knowledge and experience sharing, building allies with supporters of various improvement ideas, and – last but not least – underlying the importance of growing skills among team members will definitely set up proper working conditions for the craftsmanship to flourish. If possible, employing more senior Developers with the right mindset, and working hand in hand on the organisational culture gives even more hope for valuable partnership for all teams (even those challenging ones).

In everyday work, ask the right questions focusing also on improving coding techniques, e.g. What can we do to make sure we are on the same page regarding the product vision as the business is currently seeing it? How can we settle tribal knowledge in our organisation? What have we all learnt during this Sprint [techie examples]? There is a strong chance such prompts will ignite detailed discussions among Developers, which will lead to implementing new ideas to manage their responsibilities. Again, the tech side allies may have the opportunity to contribute, and strike up conversations further.

Frequently, fresh ideas require both embracing a change and a green light from the organisation. As an Agile Coach/Scrum Master you should actively support their implementation. Examples include and are not limited to: TDD, automated tests, CI/CD or refactor. Make sure the management sees the value of product development quality and its benefits.

The soft skills’ role in craftsmanship

In many cases, soft skills may occur to be a missing puzzle in many situations. Mancuso says that a Developer who avoids no coding related work is not a real craftsman/ craftswoman. A Developer working with contemporary business has to understand the client’s needs, be up to date with changing priorities, be aware of improvements and emergent practices. Such expectations mostly boil down to communication skills. A Developer heading towards craftsmanship will very likely need to grow their soft skills toolbox, therefore, the last (but definitely not least) tip recommended is that as an Agile Coach/Scrum Master, be there to support them with various techniques and confidence in the right direction towards professionalism.

Software craftsmanship definitely helps in setting high standards on product development. When accompanied by Agile frameworks, Development Teams acquire the helicopter view on the product development, business optics as well as technical precision in their code. Creating a culture where the product is built with passion, the iteration is taken for granted, frequent feedback loops exist, and change is embraced is undoubtedly the result of a common team effort. Software development may be then considered to be this beautiful handmade memoir, a craft that compiles the heritage of our professional paths and successful projects.

References:

Sandro Mancuso, The Software Craftsman: Professionalism, Pragmatism, Pride 2015 Scrum Guide, 2020
The Longman Dictionary of Contemporary English definition of “craftsmanship” Author’s own experience