Joseph
Yiasemides
Keeping It Simple

Working with A Large Code Base

The bigger a code base, the better the tooling we need. Think about Hack at Meta, Bazel or Protocol Buffers at Google, and Kafka at LinkedIn. Big tech is big on their tooling. It helps them scale to giant code bases and giant teams.

Navigating Cities of Code puts forward the idea that a code base requires us to adopt more sophisticated techniques and practices at increasingly larger LOC. It suggests what some of those techniques and practices could be. Documentation, testing, and expressive strong static types are some concrete examples 1. The idea is great 2, but in the author’s personal experience, some of those suggestions are ambiguous and narrow/specific.

If we just observe the industry, we can see that tooling is hugely important, and that the degree of tool-building is of upmost importance as a code base grows. At one end of the scale, big tech has entire departments dedicated to internal tooling. A significant part of their organisation works on improving software development for the rest of them. On the other side of the spectrum, it’s common for smaller shops to have at least a platform team.

Tool-building should be more common and widespread in day-to-day development. Most of the industry produces two artifacts: code and tests. Tools are a third important and valuable artifact 3. Just like expressive strong static types and tests help a team to scale to a bigger code base, so does dedicated tooling.


  1. Expressive strong static typing is my own addition.

  2. That is, the idea that a bigger code base simply can not be navigated in the same way as a smaller code base, and that there is in fact a succession of techniques and practices that must be employed at larger and larger LOC.

  3. As I learnt working alongside the team at feenk. This is a big part of their work on the Glamorous Toolkit.

Back