Skip to content

The Demise Of Human Coding, Rise Of AI Copilots, And Why I Think It Will Be A Good Thing For Everyone Involved (Yes, Including Programmers)

Just a thought in a Github repo, written by: Daniel Rosehill

30-10 (Oct)-24

alt text

"Coding" - the process of a human manipulating digital data in a computer system - is (like the underlying technology itself) a radically new process in the grand scheme of human history.

The first programs were written in binary instructions in the 1940s, less than one hundred years previous to the time of writing.

In today's era of coding fervor - where there's a VS Code Extension for everything and a new frontend framework released every week - it may seem hard to envision that things were so ... primitive ... so recently. But's true. You can meet some of the first generation of programmers and can actually still earn a very good living maintaining legacy systems running COBOL.

Human memory, however, is short-lived. And with such spectacular advances as have happened within less than a century, the idea that humans should archichtect software, firmware (etc) is now very deeply entrenched.

alt text

If Coding Is "Unnatural" Why Should Humans Be The Ones Doing It!?

Here's a thesis that I haven't seen advanced much, so I'll go ahead and put it out there into the ether:

As anyone who works with YAML knows - among many other languages - the process of "coding," whether at a high or low level, can be darn ANNOYING!

Many programming languages which are regarded to be advanced and modern are still type-sensitive enough that a single unnecessary whitespace can render the file useless.

Think about how easy it is to create an unnecessary whitespace (a whitespace is simply an empty space). Have to run out the door and accidentally nudge the spacebar on your way out? Whoops, you've just entered a white space character. Now you have something to fix.

If you're reading this anywhere besides Github (which is highly unlikely, but humor me for a moment), then you might be wondering: "jeez, I had no idea that programming was such a pain in the backside. If that's the case how does anything get built!?"

From what I can tell (I'm a dabbler, not an expert, but mostly just a guy with opinions on the internet):

  • One of them is using linting tools to programatically detect (and in some instances, but only in some, remedy those simple problems).
  • The other method could be crudely described as trying to mold their brains to be more like the computers with which they are interfacing

AI Code Generation As A Powerful Force In Democratising Coding, Unleasing Creativity

alt text

If we extend the thesis that the process of programming computers (widely defined) is not a natural fit for the cognitve rhythms of most mortal humans, we could advance some additional theses that might strike some as a little more controversial:

  • By unintentionally gatekeeping programming by selecting for certain neurotypes we're excluding from participation many who may have amazing ideas for leveraging technology but who are unequipped to realise them.
  • Coding might be a lot more efficient if we let the coding be doen by computer systems for whom working with other computer systems is natural. Because ... they're both computers.

What We Have Today Is A Good First Start. Thinks Will Get Better.

Artificial inteligence assisted code generation (Github Copilot et al) draws predictable criticisms that are domain-specific versions of other criticisms.

Much as general purpose large language models (LLMs) frequently offer imperfect or factually incorrect responses to human queries for information, code-generation fine-tuned LLMs (including language-specific variants, sadly) often turn out code that:

  • Doesn't work
  • Is illogical
  • Is buggy

Code generation LLMs are also blighted, frequently, by the more general problem of context maintenance in LLMs.

Context is another major problem with today's crop of assistants. With narrow context windows, even small code repositories can easily fall out of the context window. This is an untenable situation for programming assistance in which - from a tokenisation standpoint - the knowledge the LLM needs to retain is sizeable. Asking an LLM to "fix this Python file" may be actually asking it to parse 2000 lines of code to answer a specific problem on one line.

But progress in the AI and LLMs is rapid. Technologies like RAG are fast-maturing. And there is plenty of reason to be highly optimsitic that the copilots of today and

AI Code Generation Allows Humans To Shift To Higher-Order Thinking. Everyone Plays To Their Strengths

alt text

Just as the challenges that AI code generation tools face aren't unique to the domain, neither are the opportunities they promise.

Much as writing tools can enhance the efforts of human writers (and researchers) without threatening them with redundancy, code generation tools can also complement rather than displace a human workforce.

As increasingly accurate and useful models for code generation, debugging and Q&A come to market, humans can shift to much more visionary and strategic roles in an organic co-creation process that plays to the strengths of both participants (human and AI) maximising the cumulative value brought by both.

AI code generation is maturing. It can remove barriers to entry that serve the interests of nobody. Make programmers more productive and effective. And lead to better outcomes for everyone who derives benefit from the many promises that technology offers.