The app for independent voices

Today's conversations about AI-assisted programming are strikingly similar to those from decades ago about the choice between low-level languages like C versus high-level languages like Python. I was in college back then and some of our professors reassured us that the same issues had come up in the assembly-vs-compiled-languages debate from their own student days!

(If I were to guess, the switch from machine code to assembly even earlier must have led to similar discussions as well.)

The trade-off is always the same: productivity versus control. And the challenge is how to switch to the new paradigm in a way that enhances your skills (at least the ones you care about) instead of offloading too much and letting your skills atrophy.

Some approaches prove too hasty. Vibe coding is turning out to be a dead end because it offloads too much, just as WYSIWYG editors were a dead end for building web apps. But that doesn't mean we were forced to stick to raw HTML/JS: frameworks turned out to be the way forward.

When a new paradigm comes along, it takes months if not years of practice to figure out how to make it work for you. There are always many people dismissing the new thing too quickly. I was one! There are some embarrassing mailing list posts from the early 2000s in which I complained about Python and kids who can't code like real programmers do 🀦

While it's good to be open-minded, I'm not saying everyone needs to jump on the bandwagon. After all, low-level programming languages haven't gone away.

Of course, some people claim that AI is unlike previous waves of automation and can replace programmers. Maybe. The reason I disagree β€” and see AI as parallel to previous waves of productivity improvements in software engineering β€” is fourfold. (1) It's a matter of accountability, not just capability. (2) Writing the code was never the bottleneck. (3) I think we're underestimating the ability of experts to stay on top of even rapid AI capability increases by using these tools to dramatically expand what they can build, how well, and how quickly. (4) As these productivity improvements take shape, the potential growth in demand for software is practically infinite, unlike trades where there is a fixed amount of work that needs to get done. For example, the idea that a car would contain ~100 million lines of code would have seemed head-explodingly implausible in the early days of programming.

Many people have observed that software seems to be one of the only fields that is undergoing a rapid transformation due to AI. The usual reason they give is that capability improvements in AI coding have been particularly rapid. I think this is only part of the story. The bigger factor is structural. Software has a history of repeatedly undergoing seismic shifts in the technologies of production, so it has never had time or the cultural inclination to ossify institutional processes around particular ways of doing things.

Dec 30
at
3:39 PM

Log in or sign up

Join the most interesting and insightful discussions.