Datasette founder Simon Willison declares that “there has never been a better time to learn to program,” and it’s not because AI is going to do your coding for you.
In fact, it’s the exact opposite. “Large language models flatten [the] learning curve,” Willison argues, making it easier for young developers to get up to speed. But we absolutely cannot and must not forget how to code. Instead, we can use generative AI to augment developer experience, no matter the level of experience.
Celebrating ‘the will to learn’
I love reading Willison’s thoughts on generative AI. He’s one of the most thoughtful developers on the topic. Another great read is O’Reilly Media’s Mike Loukides, who always cuts big topics down to their most essential aspects. On generative AI and coding, Loukides reminds us that “writing really good prompts is more difficult than it seems.” He argues, “To be really good at prompting, you need to develop expertise in what the prompt is about.”
In other words, you need to be a good programmer.
“If you give in to the seduction of thinking that AI is a repository of expertise and wisdom that a human couldn’t possibly obtain, you’ll never be able to use AI productively,” Loukides suggests. To effectively use coding tools like AWS CodeWhisperer or Google Codey, you really need to coach them on the output you’re expecting. And to tell the AI, step by step, how to solve your development problems, you first need a deep understanding of the problem and how to prompt the AI to respond.
A developer will also need to be able to evaluate when the AI gets it wrong. Again, this requires a certain level of expertise. Yes, we want coding assistants to help us become more ambitious in the projects we take on, as Willison has separately encouraged, but no, they’re simply not going to remove developers’ need to figure out code. Nor should we want them to, which brings me back to Willison’s first point.
Using AI to learn to code
For many new developers or experienced developers new to a particular language, framework, database, etc., the learning curve can be steep. For example, “They [might] miss a semicolon [resulting in] a bizarre error message, and it takes them two hours to dig their way back out again,” Willison says. Unsurprisingly, this can lead them to give up, thinking they’re just not smart enough to learn to program.
This is where AI assistants can step in. Willison says, “You shouldn’t need a computer science degree to get a computer to do some tedious thing that you need to get done.” ChatGPT and other LLM-backed assistants can automate that tedium. GitHub engineer Jaana Dogan stresses, “People are too focused on code generation and completely ignore that LLMs are useful for code analysis,” among other things. We don’t need AI to do all the work. Following Willison’s argument, we just need it to automate discrete, boring tasks that won’t make or break an application but could break the developer’s confidence if they’re forced to learn and do all aspects of programming when a coding assistant can take out the tedium trash.
As ever, the way to get started with generative AI and software development is to get started! Start small, automating away simple tasks that you understand but don’t necessarily want to have to write again and again. With the time saved, you’ll be able to focus on learning how to tackle the thornier challenges in your code, which then puts you in a better position to automate that too, as your expertise increases.