Building Developer Tools
After spending a large part of my career building tools, I realized I had unconsciously followed a consistent framework for identifying and building developer tools. It seemed like a good idea to make it concrete – both for sharing and collecting feedback – leading to this series of posts. I like to spend at least half of my available time making it easier to do the work before actually setting about doing it. It naturally seemed like a good idea to capitalize on this trait.
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.
With that caveat out of the way, I'd like to paraphrase Fred Brooks by saying: all computer scientists are toolsmiths. This 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. Even though I'm writing from my point of view – as a Sofware Engineer – these heuristics should be helpful irrespective of your current hat: Product Manager, Designer, or something else entirely.
Index
You can also read all the posts compiled into a single page if you prefer. You can read these posts in any order; I've repeated important advice.
- Leverage
Why you'd want to work on developer tools in the first place. - Types of Opportunities
Mental models for evaluating opportunities. - Identifying Opportunities
Finding car-shaped holes in a world full of horses. - A Checklist For a Well-Built Tool
Suggestions for thoughtfully crafted tools. - Effective Execution
Structuring your work in a way to get the most value. - Traps For Tool-Builders
Common anti-patterns that you should avoid. - Meaningful Measurements
Metrics are a double-edged sword; wield them with care. - Snapshots of Excellent Tools
Tools I find inspiring, complete with reasons why. - Books & Other Resources I've Found Useful
Everything from Tufte to Hamming.
Acknowledgments
Thanks to Kent Beck, Aditya Athalye, Joe Thomas, and Lindsey W for patiently discussing several aspects of this series 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!
Comments
Add your comments to this Twitter thread, or feel free to drop me an email.
1/ https://t.co/uXslEdmKgd
— Kunal Bhalla (@kunalbhalla) June 24, 2021
Overview, and some background about why I wrote this in the first place. pic.twitter.com/YuG5SMAX9h
Updates
- 2021-08-07: Fixed some mistakes. Thinking about v2.
- 2021-08-01: One final round of edits before sharing v1.
- 2021-07-30: More edits, starting with Leverage.
- 2021-07-21: Index edited by Lindsey W.
- 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.