What is Craftsmanship and Why is it Important?
March 30, 2016
As software engineers, we're driven by the opportunity to solve big and hairy problems, to create elegant solutions, and to build things that provide enduring value. Like any other trade involving craftsmanship, we take a lot of pride in how we build.
In general, craftsmanship is defined as a skill in a particular craft. At LinkedIn Engineering, we are working to codify that in more detail. It’s about the ability to create something elegant and high-quality that delivers a lot of value while also being able to perform and scale up gracefully, and uphold the security and privacy of our member’s data. An important point to note here is that when talking about craftsmanship, we consider both code and data artifacts as important. Data must also be treated as an artifact with dependencies and it must go through the same rigorous testing and dependency management as code artifacts do.
So, why is craftsmanship important to us?
Craftsmanship helps us build better products and better engineers. We believe that world-class products require world-class engineers. We are committed to ensuring that each employee has the opportunity to transform while at LinkedIn and that they learn new skills that prepare them for more responsibilities and bigger roles. Craftsmanship is one of the most fundamental drivers of career transformation for engineers.
Developer happiness is another really important result of great craftsmanship. When you’re building something as a team, the artifacts built by some engineers become the building blocks for something larger that others are building. This means that how well some engineers build their artifacts impacts what other engineers can accomplish. If engineers follow common best practices and produce artifacts with great craftsmanship, it reduces the friction with other engineers in “producer-consumer relationships.” Much of their work will then contribute directly to making real progress towards the mission and vision of the organization rather than dealing with the friction in the environment. A greater sense of accomplishment translates to happier developers.
The most important reason for exhibiting great craftsmanship, however, is because it is the only way to scale an organization. In the 1990s, Robin Dunbar, a British anthropologist, found that the number of people with whom you can maintain stable social relationships—where you know who each person is and how each person relates to every other—is about 150. This number is called Dunbar’s number. When an engineering organization grows beyond this size, you can no longer rely on stable social relationships to get your work done with an acceptable level of quality.
Beyond this point, further growth is only possible if the ecosystem supports discoverability and frictionless producer-consumer relationships. Discoverability is achieved via world-class visibility and discovery (search) tools. You need to be able to discover the relevant artifacts (previous work) that your organization has created in the past that will become building blocks for the next big thing that you’re going to create. You also need to be able to consume these artifacts in a frictionless way, which is only possible if the creators of the artifacts followed common best practices and exhibited real craftsmanship.
Craftsmanship can be very difficult to practice, especially when it comes at a big cost. When your deadlines are staring you in the eyes, it takes a lot of courage to make the tradeoffs that are sub-optimal in the short term but optimal in the longer term. Craftsmanship is not something that individuals will consistently practice unless it is part of the DNA of the organization. You can’t build something amazing on top of poor quality building blocks. Nor can you delay that release by a few weeks to get better craftsmanship if your boss does not support it.
Craftsmanship is something that either is in the DNA of the organization or does not exist. To see how craftsmanship is carried out at LinkedIn, read this blog post about how we radically improved our software development and testing process in order to release Voyager, our latest flagship mobile app.
So, how do you know if you’re exhibiting craftsmanship? The only answer I have to offer is that you’ll know it when you get there. When you step back, take a look at your work, and feel that pride of accomplishment, you’ll know you’ve achieved true craftsmanship.