On finding pure wins
Here are some software enhancements I often find effective:
- When some logic can live in a pure function, make one and test it.
- When some data is important and fast to query, put a view to that data in an admin panel.
- Make a separate profile for Claude.
Other interventions often have greater impact, but these particularly interest me in that they tend to make a software system better without significant tradeoffs.1 Nothing in software comes absolutely for free--you could accidentally overwhelm the database, make a brittle test, get the profile wrong, and so on--but with a working professional knowledge of guardrails, troubleshooting, and AGENTS.md, you can make these very safe.
This sort of reasoning is more relevant in an AI-first world, because the cost of implementation tends to be so low that risk and complexity tradeoffs are even more central than they used to be. When you have a magic wand you can wave as many times as you like, it's a lot more important to manage risk and keep track of what you're doing than it is to maximize the non-risk-adjusted value of any particular incantation.2
Developing the knack for evaluating whether something is this kind of "pure win" can be tricky, but the harder part for me has been to train myself to think these terms in the first place. Many of us were trained to deliver impact, in the sense of expected value. We've also had to assess risk, but we had so (comparatively) little engineering effort to spend that we often chose to use it on things that made our lives harder in other ways. As I acclimate to AI-assisted engineering more thoroughly, I feel the impulse to seek impact in these terms fading away. This is ironic, because I'm getting so much more done per unit of time.
I suspect that more ironies are in store, and that a mature state of AI coding will involve much more verification, observability, and concern for encapsulation, even as it lets us move much faster. AI coding, which has a reputation for recklessness and which can indeed feel so reckless, might turn out to be built around the methodical, low-risk accumulation of value to a much greater extent than traditional software engineering.
I discussed this explicitly but briefly in my recent note about observability.↩
Happily, AI software tools tend to be much more benevolent than most fictional wish-granting machines.↩