Don't grab the brass ring, grab the copper pipe
We’ve been talking here about the changes that are happening to coding itself, as generative AI emerges more fully. I see lots of analogies to the disruption that happened when the internet started to emerge. Not the dot-com boom, but before that, when it was starting to be clear that the internet would be big (and, just like AI, there was a period where folks legitimately wondered if the internet mattered. I remember a friend’s dad saying “of course it does. People like to communicate, and this makes that easier”. If you wonder if Gen AI will matter, replace “communicate” with the word “think”).
In that earlier period, there was a lot of ambition but also a lot of challenges. There were plenty of companies that were “too early”. I forget who said it, Paul Graham maybe, that many of the dot-com ideas were good ones, they just only work now. People built companies before basic infrastructure was ready: we didn’t know how to do payments, scaled datacenters or databases, no one had broadband (much less mobile), web apps were hard to build (and browsers sucked) etc. It was hard to do much that was meaningful, but we are an imaginative bunch here in the tech business, so lots of folks tried to build things far out on the horizon - the brass ring - instead of building out the missing infrastructure - the copper pipes of plumbing (Pex now, I guess).
Today, the brass ring is some kind of assistant AI that’s so smart you just tell it what you want and it goes and does it. Maybe that’s close, it’s hard to say. But there are real challenges right now with building that: we don’t have good models for data privacy, jailbreaking is still a concern (so careful giving it your cc info!), stochastic noise makes the models unreliable in any chained task, and there are lots of places where we still have unreliable or difficult plumbing that lets these agents get access to useful tools. We can build connectors, but the models have to be able to find and use them reliably. We also have challenges with how we interact - the models can only generate, so understanding quickly (without reading pages of text) where the errors are and directing that generation only in that spot (so the model doesn’t regenerate the whole artifact every time like image gen does) is still an unsolved UX problem. If we did manage to build these capable agents, we need to solve hard problems in monitoring and regression testing as well, to make sure we can run them safely at scale.
All of this is not to say we shouldn’t reach - we should. But as a developer, it’s not going to get you far if you are reaching with everyone else towards something that’s not ready. It can be much better to pick some piece of plumbing, some hard technical obstacle like the above, and go after it. In the internet transition, there were many companies that were successful with this strategy. It’s true that the big money and success is with large consumer disruption and usage, but we also have to build the rest of the stack to make that possible. We want the brass ring, but we need the copper pipes, too.