< expLog

Building Developer Tools

2021-07-17 – This series is a work-in-progress: please consider this a v0. Feel free to send any feedback – good or bad – my way @kunalbhalla!

This is a series on the meta of building developer tools, which was first motivated when I realized I had unconsciously been following a consistent framework for identifying and building tools. It seemed like a good idea to make it concrete – both for sharing and collecting feedback.

I've spent a large part of my career building tools. I like to spend at least half of my available time on making it easier to do the work before actually setting about doing it, and it naturally seemed like a good idea to capitalize on this trait, as building tools is something that allows me to help make everyone's jobs easier.

For the sake of style and brevity, these posts are highly prescriptive. Remember that these are heuristics based on my own experience at a large tech company; with this in mind, you should make sure to apply these in your unique context.

That being said, I'd like to paraphrase Fred Brooks by saying: all computer scientists are toolsmiths. This thinking leads me to believe that some of these ideas are generally applicable; after all, we build tools for communication, commerce, art, and just about everything else.


These posts can be read in any order. Important advice is occasionally repeated.


Thanks to Kent Beck, Aditya Athalye, and Joe Thomas for patiently discussing several aspects of this series with me and giving their valuable feedback. Thanks also go out, of course, to everyone I've worked with and learned from while building – and using – developer tools over the years!


Add your comments to this Twitter thread, or feel free to drop me an email.


  • 2021-07-21: Applied feedback from a real Editor!
  • 2021-07-20: Exercising Grammarly, one post at a time.
  • 2021-07-19: Fixed several typos.
  • 2021-07-17: Added a new model & acknowledgments, more polish.
  • 2021-06-24: Some polish.
  • 2021-06-22: More drafts on inspiring tools and resources.
  • 2021-06-20: Added a draft around model measurement.
  • 2021-06-19: Played around with models for personal productivity.
  • 2021-06-18: Iterated on models to estimate the added value of a toolsmith.
  • 2021-06-17: Added a draft around execution, as well as leverage.
  • 2021-06-16: Added a draft around identifying opportunities.
  • 2021-06-12: Added a draft around traps for tool builders.
  • 2021-05-29: Added a draft on characteristics of well-built tools.
  • 2021-05-27: Started visibly publishing drafts online.
  • 2021-05-22: Revamped expLog to have a nice place to publish.
  • 2021-01-xx: I started outlining this note after spending a lot of time working on, talking about, and giving feedback on developer tools.