avatar

Lukas Rychtecky

Posted on 3rd July 2020

How we keep our quality

news-paper News | Software Development |

Keeping the quality high is not an easy job. It gets more complicated when you have many teams where each team adapts to the customer’s needs and processes. A checklist is a tool that helps us a lot. Continue reading if you would like to know how The Craftsmanship manifesto and checklists are related.

Craftsmanship

A typical reader could be anyone who is interested in software development. The reader could be a programmer, team leader, scrum master, or manager. No technical knowledge is required.

The Craftsmanship

The Oxford dictionary defines craftsmanship as “The level of skill shown by somebody in making something beautiful with their hands[ODict] or as “The quality of design and work shown by something that has been made by hand[ODict]. In other words it is a product created by someone using best practices.

You probably use a lot of software products every day and not all these products are good pieces of craftsmanship. We don’t even notice the well-crafted software, because it let’s us focus on our work. It’s fast, easy to use, does its job and does it perfectly. In general well-crafted software is much easier to augment, scale, deploy, release, etc.

The Software Craftsmanship was created and signed in 2009. Its origins are in Agile manifesto software development. Let’s cite The Craftsmanship Manifesto:

  • 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

That is, in pursuit of the items on the left we have found the items on the right to be indispensable. [CraftManifesto]

The following picture is the result of the SCTAGS survey on the Software Craftsmanship mailing list. People submitted three tags describing their view of the Software Craftsmanship movement (September 2009).

Words of Craftmanship quality
Source: https://groups.google.com/forum/#!topic/software_craftsmanship/qkZfcn3NYho

The checklists

A checklist is a type of job used to reduce failure by compensating for potential limits of human memory and attention. It helps to ensure consistency and completeness in carrying out a task.

In many industries checklists are used to avoid failures, aviation is a typical one. For example, pilots use preflight checklists to ensure that no important tasks are forgotten. The reason is simple, because failure to correctly conduct a preflight check using a checklist is a major contributing factor to aircraft accidents [Aviation]. These checklists are generally updated or revised after aircraft accidents or any other issues. The checklists contain specific tasks for a current aircraft, and also contain general tasks related to all aircraft.

In Flexiana we have been inspired by the aviation industry and started to design our own internal checklists. First we started to design checklists for the development part of Flexiana. We have put together The Craftsmanship Manifesto and the following list of topics:

  • Preparation Clean Code
    • Code Standards
    • Tests
    • Code Integration
    • Deployment
  • General Explicitness
    • Shared Knowledge
    • Security
  • Development Methodologies
    • Code Review
    • Delivery
    • Commit Messages

This checklist is really abstract compared to checklists from the aviation industry. Software development is not a single exact process that could fit every project and team. We have made the checklist abstract enough in that way, so every team can take it as a template and customize it.

Man checks items in checklist

Team checklist review

We have made the checklists abstract for a purpose. The reason is that every team, client, project, etc. is different. So instead of giving the checklist to a team we give the checklist as a template to the team. Together with the team we read the whole checklist and discussed every topic in general and in the context of the team. After the discussion the team took the checklist as a template and customized it.

For example one of our team works on a project that is not the usual  web-based project. The product is installed on machines not connected to the Internet, so Continuous Delivery to production is almost impossible. So this topic is a bit irrelevant, but for the staging (or testing, if you want) environment is still actual.

Every team has these kinds of special cases. And every team has autonomy to change or upgrade the checklist whenever they find the checklist obsolete or unsuitable.

Conclusion

We have described how checklists help us to keep the quality of our work high. Every team creates its own checklist from the template and customizes it. If you want to read more about checklists see another blog post How to create efficient and effective checklists in order to improve workflow?


Bibliography

[ODict]: https://www.oxfordlearnersdictionaries.com/definition/english/craftsmanship

[CraftManifesto]: http://manifesto.softwarecraftsmanship.org/#/en

[Aviation]: Commercial Aviation Safety, McGraw-Hill Education, S. Cusick, A. Cortes, C. Rodrigues, 2017