BETA
This is a BETA experience. You may opt-out by clicking here

More From Forbes

Edit Story

Is Coding Education As We Know It Dead?

Following

How Large Language Models Are Changing Programmers

Ever since the sudden explosion of AI awareness, many people have asked me if coding as we know it is dead. The question has come from many sources—parents wondering if their kids should even bother learning how to code, educators wondering if it is worthwhile to teach coding, adults wondering if it remains a core marketable skill for employment.

Of course, no one knows for sure, and opinions abound. However, what I have found is that the definition of coding itself is key to the answer. Some types of coding, I believe, will either go away or become irrelevant, while the essence of software development as an employable industry, I believe, will change but remain.

Some History

Some (recent) history may prove useful. Even before the arrival of ChatGPT or any of the co-pilots powered by large language models and generative AI, low-code and no-code tools have been on the rise. What these tools already offered was a way to automatically generate basic coding blocks for different functions, saving the programmer from having to do a lot of mundane work. While initially resisted by many software developers, these tools have been embraced once developers saw that it freed them up to focus on larger and more interesting problems, such as delivering a good customer experience for their product.

How Is The New AI Wave Different?

Even though no-code and low-code tools have been steadily growing in use, the new wave is different.

  • The user interfaces, previously drag-and-drop or configuration based, have now become trivial. A programmer can now say “Build me a website to do X” and have all the code trivially appear.
  • The new code comes with explanations. The code can be accompanied by detailed text describing how each piece works.
  • Wide range of languages and capabilities. New models like Bloom from Hugging Face, are competent in many computer languages at the same time. They are also capable of creating code for many different basic tasks, while previous tools tended to focus on a specific area such as app development.

So, What Remains?

In order to understand what remains, we need to go back to what coding means. A lot of confusion comes from the fact that this skill means different things to different people. I focus on what it means specifically for an employer of a software engineering team. What is such a company looking for?

I would argue that companies that employ software engineering teams are looking for effective, efficient, and ethical software systems that solve customer problems. Each of these (effectiveness, efficiency, and ethics) require additional competence beyond just code writing. They require the engineer to ensure the correctness of the code and ensure that the code actually solves a meaningful problem in the best way for the company. The latter can mean many things. It can mean that the code works well with existing code in the company, is maintainable with the skill sets available within the organization (AI or human), is testable, follows relevant laws, is secure, etc.

Note that this is very different from the code that today’s generative AI tools may write. Say that you gave the generative AI a question: “Build me a website that does X.” This is a simple question that is easy to answer. Most real-world questions do not look like that. They may look more like “Please find and make the right changes to the large website that the company has had in development for 5 years, most of the code written by people who no longer work here. Ensure that the new code is added in the right places, and doesn't break existing functionality, or create any security risks. Ensure that it is compliant with the privacy and security laws of every country our business operates in. Also, make sure that the visual elements of the new function match the design outlines of our brand. Ensure that the code is SEO-friendly. Etc. etc.”

Does this mean that AI cannot solve the second question? Not necessarily. It simply means that there is always a larger problem and that whatever part of it can be solved by an AI can be integrated into the whole. I would expect larger and larger components of such a complex question to be automated over time, but the umbrella problem would also continue to get larger.

Does The Code Actually Work?

This is another key question and also requires us to examine what “working code” actually means. For example, I recently asked ChatGPT to generate a small piece of code for me. It was technically correct (in that it will always give the right answer). However, as approaches go, it was similar to going from San Francisco to Los Angeles through New York. Yes, it works, but should it have been done that way? Per the definition of efficient, effective and ethical, one could argue this code was ethical (it had no ethical flaws), but was not the most effective. A human will need to decide how to define effectiveness. For example, if the code is simply easier to read by other employees and not notably slower than its more compact counterpart, perhaps it is more effective for the company’s broader objectives than a more elegant and dense code that is harder to maintain.

Implications For Training And Education

Hopefully the above illustrates that coding in a professional setting is far more than what these tools (at least currently!) generate and that the tools are extremely valuable as co-pilots but do not replace software engineering. That said, when we move to training and education, the situation is much more murky:

  • Most training programs for programming (whether they are professional training or K-12 teaching) focus on contained problems. This has been true for many years, and companies have baked the assumption into their hiring practices. This is why a fresh student is not expected to know how a complex system behaves, but a senior technical engineer with a decade of experience is expected to know that.
  • The issue that arises is when the tasks that one used to give fresh graduates (small contained programming tasks) can now be done by machines. What will these entry-level engineers do? How will they learn the skills that the senior engineer has?

This issue would suggest that, while software engineering still has hard problems that humans can solve with the help of an AI co-pilot, it is not at all clear that our education systems are preparing students for this mode of working. This mode of working suggests a strong problem-focused and project-focused approach—where the syntax and details of a particular piece of code are less important than its contribution to the overall solution. In particular, skills like adding to an existing code base (rarely taught in entry-level programming) become more important.

There are ways to integrate this type of skill-building into education programs.

  • Project-based learning is a big opportunity. A full end-to-end project encourages students to think about the core problem and see individual bits of code as a means to an end rather than an end in itself.
  • Open source contributions. There are many fascinating open-source packages out there, many with permissible licenses (like MIT and BSD). Making (even small) contributions to these large code bases gives a learner a very realistic experience of what professional coding is like.
  • Prototyping a “large” system. A great example (if somewhat older) is NACHOS, a prototype operating system that students can “fill in” parts of. The learner gets to add capabilities to a large system but in a constrained and contained way. Similar approaches can be done for machine learning platforms, for example.

I do not believe coding is dead. However, with the advent of large language models, the ways that coding is taught (which was already out of sync with what professional coding looks like) are even less representative now. Coders need to learn how to solve complex software problems with the aid of coding co-pilots. An active conversation between the providers of coding education, and the employers that will hire these graduates, is likely to show the path forward.

Follow me on Twitter or LinkedIn