The time to figure out how to use generative AI and large language models in your code is now.
Mea culpa: I was wrong. The artificial intelligence (AI) singularity is, in fact, here. Whether we like it or not, AI isnโt something that will possibly, maybe impact software development in the distant future. Itโs happening right now. Today.
No, not every developer is taking advantage of large language models (LLMs) to build or test code. In fact, most arenโt. But for those who are, AI is dramatically changing the way they build software. Itโs worth tuning into how theyโre employing LLMs like ChatGPT to get some sense of how you can use such tools to make yourself or your development teams much more productive.
AI-driven ambition
One of the most outspoken advocates for LLM-enhanced development is Simon Willison, founder of the Datasette open source project.ย As Willison puts it, AI โallows me to be more ambitious with my projects.โ How so? โChatGPT (and GitHub Copilot) save me an enormous amount of โfiguring things outโ time. For everything from writing a for loop in Bash to remembering how to make a cross-domain CORS request in JavaScriptโI donโt need to even look things up anymore, I can just prompt it and get the right answer 80% of the time.โ
For Willison and other developers, dramatically shortening the โfiguring outโ process means they can focus more attention on higher-value development rather than low-grade trial and error.
For those concerned about the imperfect code LLMs can generate (or outright falsehoods), Willison says in a podcast not to worry. At least, not to let that worry overwhelm all the productivity gains developers can achieve, anyway. Despite these non-trivial problems, he says, โYou can get enormous leaps ahead in productivity and in the ambition of the kinds of projects that you take on if you can accept both things are true at once: It can be flawed and lying and have all of these problems โฆ and it can also be a massive productivity boost.โ
The trick is to invest time learning how to manipulate LLMs to make them what you need. Willison stresses, โTo get the most value out of themโand to avoid the many traps that they set for the unwary userโyou need to spend time with them and work to build an accurate mental model of how they work, what they are capable of, and where they are most likely to go wrong.โ
For example, LLMs such as ChatGPT can be useful for generating code, but they can perhaps be even more useful for testing code (including code created by LLMs). This is the point that GitHub developer Jaana Dogan has been making. Again, the trick is to put LLMs to use, rather than just asking the AI to do your job for you and waiting on the beach while it completes the task. LLMs can help a developer with her job, not replace the developer in that job.
โThe biggest thing since the World Wide Webโ
Sourcegraph developerย Steve Yegge is willing to declare, โLLMs arenโt just the biggest change since social, mobile, or cloudโtheyโre the biggest thing since the World Wide Web. And on the coding front, theyโre the biggest thing since IDEs and Stack Overflow, and may well eclipse them both.โ Yegge is an exceptional developer, so when he says, โIf youโre not pants-peeingly excited and worried about this yet, well โฆ you should be,โ itโs time to take LLMs seriously and figure out how to make them useful for ourselves and our companies.
For Yegge, one of the biggest concerns with LLMs and software is also the least persuasive. I, for one, have wrung my hands that developers relying on LLMs still have to take responsibility for the code, which seems problematic given how imperfect the code is that emerges from LLMs.
Except, Yegge says, this is a ridiculous concern, and heโs right:
All you crazy mโโs are completely overlooking the fact that software engineering exists as a discipline because you cannot EVER under any circumstances TRUST CODE. Thatโs why we have reviewers. And linters. And debuggers. And unit tests. And integration tests. And staging environments. And runbooks. And all of โฆ Operational Excellence. And security checkers, and compliance scanners, and on, and on and on! [emphasis in original]
The point, to follow Willisonโs argument, isnโt to create pristine code. Itโs to save a developer time so that she can spend more time trying to build that pristine code. As Dogan might say, the point is to use LLMs to generate tests and reviews that discover all the flaws in our not-so-pristine code.
Yegge summarizes, โYou get the LLM to draft some code for you thatโs 80% complete/correct [and] you tweak the last 20% by hand.โ Thatโs a five-times productivity boost. Who doesnโt want that?
The race is on for developers to learn how to query LLMs to build and test code but also to learn how to train LLMs with context (like code samples) to get the best possible outputs. When you get it right, youโll sound likeย Higher Groundโs Matt Bateman, gushing โI feel like I got a small army of competent hackers to both do my bidding and to teach me as I go. Itโs just pure delight and magic.โ This is why AWS and other companies are scrambling to devise waysย to enable developers to be more productive with their platforms (feeding training material into the LLMs).
Stop imagining a future without LLM-enabled software development and instead get started today.


