Stop Coding. Start Writing.
Writing + LLMs = engineering productivity
All code is mediocre. Even the carefully crafted, beautiful, dare-I-say elegant code you spent so much time poring over. For a few shining moments it was perfect, but the world around it changed, and its subtle assumptions were invalidated. Now it is “legacy” and someone, maybe you, will look at it with a mix of disgust and bewilderment.
But the job was never about coding. Yes it was necessary, but it’s hardly sufficient. It was always about those assumptions, the higher order effects of the code and what it implies. It was always about communicating decisions, tradeoffs, and requirements.
Code is what it does. Your perfect algorithm only matters because of its performance characteristics in the hot path. The API you designed has huge implications for the complexity of your clients or your ability to make changes in the future. Your UI was successful because of the delight it inspired. It’s these external concerns, what the code means for the rest of the system, that actually matter. Performance. Security. FURPS. Reading between the lines and thinking six steps ahead. The subtle interactions between components.
LLMs generate code fast. Fast enough that it's probably not worth your time to write code anymore. Sure, it's a BS generator without any actual understanding, and it may not be what you would have done. But it doesn’t matter, as long as the higher order needs are all met.
Common critiques of AI development follow these lines: It’s bad because it didn’t think of <some higher order implication>. And, my friend, you’re going to have to think for yourself. You’re going to have to document it and write tests for it. You always have needed to do this. LLMs are a “calculator for words” and will only respond to what you put in. If you want your app to be secure and performant, you need to tell it about your security and performance concerns.
You need to communicate. You went from working directly with code, to needing to communicate your assumptions, and it feels like an increased cost. The thing is, you’re probably not solo and you always should have been communicating when working with others. But writing a design doc was extra work, in the way of completing your immediate task when the code is already working. Now it’s not a side quest, it’s the main quest. You benefit directly from explaining yourself. Less time coding, more time communicating.
And this is where the real productivity from LLMs come from. It's not just from less time coding, since that was a small part of our time anyways. It's in learning to think about and communicate the implicit requirements. It's in being able to have a conversation with your colleagues about these requirements and the tradeoffs, and not rely on them to devine those from reading the code.
Want to be productive in this new world? To write actual, working software that's not just vibes? Learn to write. Unlike coding, that’s not something LLMs can do for you.
Further reading: