AI resistance considered harmful (for programmers)
There’s now a well-established sub-genre of tech and programmer YouTube: the AI dunker. The AI dunker looks down on LLMs with disdain. “Look at this buggy code the LLM produced! Look at my clean handwritten code. Really it’s just much faster for me to do it by hand. I’m a real programmer. My code is more robust, cleaner, and has no bugs. I can’t believe you fools fell for all this hype. Who are these feeble-minded coders forking over ten bucks every month for Copilot? It’s just VCs trying to make a quick buck. Don’t fall for it!”
AI dunkers are doing newbie programmers a huge disservice. Those who listen to the AI dunkers and internalize their backwards-looking, risk-averse, techno-primitivism will be hurting their learning, growth, and ultimately, their careers. While they’re also doing a disservice to programmers well into their careers, I want to focus on the learners and early-career programmers in this post.
The AI dunkers are only the latest in a continuous line of techno-primitivists.
When compilers abstracted away assembly language and allowed programming in high-level languages, techno-primitivists argued about the loss of control, the loss of performance, and the loss of understanding of how the machine works.
When IDEs and auto-complete made it easier to write lots of code quickly, techno-primitivists argued about the loss of “true” understanding of the language and libraries programmers were using, about writing expedient code, and extolled the virtues of the spartan steel-minded programmer writing code “raw.”
And now, at the dawn of the next step-function in how we write programs, the techno-primitives stand athwart the gates, warning us of the perils ahead and the virtues of past ways.
What should those who are learning programming do instead? They should embrace this new way of programming but do so while prioritizing learning, understanding, and growth through challenge. You have agency– use it! You are not a slave to the tools before you.
First of all, don’t use AI to get answers and move on. Use it to learn and understand. Imagine having a pair programmer mentor with infinite patience and deep knowledge. Ask it to explain existing code. Ask it to review the code you wrote. Ask it for idiomatic ways to rewrite your newbie code. Ask it for five alternative ways to write the same thing and what the tradeoffs are among them. Ask it which standard libraries you could’ve used instead.
The message should be one of encouragement and exploration of these new tools, fully embracing them to become more effective programmers, with a minor cautionary note about their failure modes and pitfalls—not one of dismissive skepticism.