Good engineering as a way into AI coding tools
A blog post lead me down extreme programming's memory lane. It's actually a good way to think about AI coding tools.
I don't remember where I stumbled on this, maybe Mastodon, but I've had this post in my reading queue for a bit: You’re probably listening to the wrong people about AI coding.
A lot of less experienced and mediocre engineers likely think these tools are brilliant. They’re producing more code, feeling productive. The problem is they don’t see the quality problems they’re creating.
This is compared to the experienced coder.
They’ve lived with the consequences of bad code and learnt what good code looks like. When they look at AI-generated code, they see technical debt being created at scale. Without proper guidance, AI-generated code is pretty terrible. Their scepticism is rational.
Then, this paragraph really caught my eye:
I’ve regularly seen sceptical experienced engineers change their view once they’ve been shown how you can blend modern/XP practices with AI assisted coding.
I got caught up in this "modern/XP practices" phrase. I was like, "are we talking about Extreme Programming here?" I hadn't really thought about that in a while, or considered it "modern." So I went and looked it up to remind myself and found this Martin Fowler post on extreme programming from a decade ago.
XP was one of the first agile methods, indeed XP was the dominant agile method in the late 90s and early 00s before Scrum became dominant as the noughties passed.
For a lot of folks today, "scrum" is synonymous with "agile," for better and for worse. But there's a whole world of agile techniques out there. Falling down this XP rabbit hole was a good reminder of this for me.
So what, exactly, is XP? According to Fowler:
It popularized many practices that have since been widely used in software development, including: continuous integration, refactoring, TestDrivenDevelopment, and agile planning.
I would add "small, frequent changes" to that list too, and then other than TDD, just call this "good engineering" today.
To bring it back to AI, where we started above: AI will change how we write software. It's already doing that, but then, good engineering practices endure. Those good engineering practices can serve as a framework for understanding how best to use LLMs and other AI-based tools.