The hard part about coding.

Typing is not the hard part about coding. This is why AI-assisted programming is not an edge over regular programmers.

The hard part about programming is structuring your application. Choosing the right data structures, patterns, and technologies. Getting this right is the primary component that drives how much your team can output, not how quickly they can knock out code.

With this in mind, the problem with the current state of AI coding is twofold:

  1. It doesn’t do the hard part well at all. You can describe the application as much as you’d like but the devil is in the details. The difference between a seasoned engineer and a rookie is the seasoned engineer understands that details impact what the high-level can look like. AI should be able to do this but it doesn’t. Every time i’ve asked it for advice on structure, it provides basic generic architecture that I know is very limited.
  1. The code it does produce isn’t good. It’s not faster, it’s not more succinct, it’s not more readable, none of the things you’d expect from something that’s read every codebase on the internet. It produces very basic, often wrong, code. This is another indication that LLM’s aren’t “understanding” anything. Not only have they read every codebase and should have a good sense of what better and worse code looks like, but they’ve read every manual, every piece of documentation, and as part of reading all those codebases, have read the entire source code of every package a codebase could use. And yet the answers every LLM gives is equivalent to the most generic, rookie upvoted, stack overflow answer.

But it does produce code. And that’s just about all anyone cares about. I don’t think they’ll go away, there are too many lazy programmers who do it just for the paycheque, but the advantage of programmers who care over lazy programmers will become much much larger.

Now that’s not to say that LLM’s and “agents” are totally useless, i think they are a great tool but code generation is not what they are good at. In my experience, they are absolutely off-the-charts insanely good as tutors for “old”, well known subjects. They are knowledgeable and patient. For example, I can ask it to repeat itself 10 different ways when learning about algorithms, not something i’d do with a friend or even a tutor. They are an amazing way to learn conceptual topics quickly and in a comfortable environment. That being said, you should still check with the source every now and again because they do make shit up from time to time.

As a starting point to this idea out, go learn about processes vs threads and how parallelisation is possible in a single threaded environment with event loops. Great stuff.

Now is a better time than ever to really learn how to program well. Understand every piece of the stack you work with, go deep on the tools and the tech and the machinery. This will give you an edge to really get the most out of advances in technologies whilst the llm-crowd will be stuck with the incremental gains. I’d argue that you shouldn’t use LLM’s for auto-complete either, doing something you’ve done before is the perfect time to get better. You know how to do it one way so now you can tinker with an even better way. Doing the same thing a bunch of times is absolutely critical to learning and improvement, as proven by just about every trade (including “intellectual” trades).

So learn, get better at the hard stuff, it’ll give you more of an opportunity than ever.

- Red

Index - Twitter