Is AI the End of Coding Careers? Here’s What a 20-Year Developer Thinks

As a developer with over two decades of experience, I want to explore whether AI will take over programming jobs and if there’s still a future in this field.

Where AI Shines?

The AI tools I refer to are classified as Large Language Models (LLMs). These models have been trained with vast amounts of data available on the internet, including copyrighted material (though that’s a topic for another day).

That’s why these models are great at reasoning tasks that have many examples already available on the internet. This means if your day-to-day tasks are mainly API parsing or CRUD operations, AI can potentially make you obsolete. (This is speculation, though, because based on my experience, these tools haven’t been that effective.)

Since its launch, I’ve been a paid user of ChatGPT and have experimented with JetBrains Assistant and GitHub Co-Pilot. Despite this, I haven’t solved any complex, real-world problems with AI.

The tasks that I have successfully used AI for within the programming context are:

  • Refactoring an existing code piece
  • Helping to understand complicated code
  • Writing bash scripts/python scripts for small and defined tasks
  • Suggesting terminal commands for bulk operations
  • Generating boilerplate code
  • Writing a unit test case for an already implemented function (though I don’t rely on the output)
  • Writing pieces of code that have been written millions of times and have many examples on the internet (e.g., sorting algorithms, string operations, etc.)

But these are tedious tasks and have no real impact on the profession itself. It may be very impressive to see a weather API being called in demos with a line of instruction, but that isn’t the daily programming task for a majority of programmers.

Where AI Fails?

(and will continue failing)

Solving Real problems

Programming is one of the biggest costs, and many tools and startups aim to simplify it. These tools allow you to define the data models and can produce listings, filters, edit, operations, and all related screens with little to no effort.

However, if you’ve ever used one of these tools, you know they all fall short and require custom programming. The same applies to AI. You can complete (at best) 80% of your project without understanding what it’s building, but you won’t be able to finish a project that meets all your needs. Thus, fantasies like “write me a stock control system” will never be possible.

Knowing what to build

Developers are typically briefed on problems and must come up with ideal solutions. This involves understanding the client’s needs, defining the project’s scope, and determining the specific functionalities required. It requires nuanced communication, empathy, and the ability to interpret sometimes vague or conflicting requirements.

These inherently human skills are not something AI will master. Successful requirement gathering lays the foundation for the entire project, and misunderstandings or mistakes here can lead to significant issues.

Developers excel in this area by asking the right questions, understanding context, and negotiating priorities — skills crucial for delivering a product that truly meets the client’s needs. A generic AI system cannot design a solution that fits all constraints and nuances of a specific problem. Hence, the entire software development process cannot be fully entrusted to AI.

So a non-programmer creating a solution without any human programmer’s involvement is not and will not be possible. You might argue that just an architect or a senior dev would suffice, requiring fewer people, but this brings another problem.

Code Quality and Reliability

Maintaining code quality has always been a challenge. Many books have been written, and many development approaches have been tested to tackle this issue.

The introduction of AI makes this problem even more critical and challenging. AI-generated code will inevitably contain subtle performance issues and bugs that are difficult to reproduce and, most importantly, critical security threats.

Human oversight and extensive testing are necessary to ensure that the code works efficiently, securely, and maintainably.

Deployments / Infrastructure

If you’re not developing a console application you would at some point need to deploy it, create the relevant infrastructure, create the databases and the environments.

AI can only give suggestions on what to install, how to structure your infra (again if it’s a commonly known problem) but it will not be possible to relying purely AI on the infrastructure setup and deployment.

Relying AI on these aspects can bankrupt a company or cost exorbitantly more to have the required system.

Large Context Projects

These systems are inherently limited by the input size they can receive. You can’t use ChatGPT to reason about your whole project. GitHub Co-Pilot and JetBrains AI Assist claim to tackle this problem, but they are far from achieving this.

A small to mid-size project with a small team of three developers will produce thousands of lines of code in six months. Reasoning on this codebase and adding new functionality without breaking anything is not a near-future possibility.

In large context projects, adding new functionality can contradict existing functionality because of the business rules. If you ask AI to generate code, it won’t be able to reason with the real use case since its context will be just the code.

Programming that requires visual input / output

I haven’t seen convincing examples of AI handling this, even for toy projects. Even with rapid development, I don’t think AI will be able to replicate a given design.

I remember using Squarespace to create one of my company’s websites, which involved selecting a theme, adding pages and sections, and uploading assets. Now, websites like Framer and Webflow, which started on the same premise, have evolved into tools for designers. I don’t think any ordinary non-technical person will be able to generate something meaningful from these tools.

So maybe frontend development will be less in demand, not because of AI, but because of tools that have been evolving over the last 10 years, enabling designers to generate websites without additional development.

Is there still a career to pursue in programming?

I strongly believe that to be good at something, you need to be terrible at it for many years, continuously make mistakes, learn from your mentors, and strive to be better. This is a process and it takes time. But you need to start somewhere.

When I started programming, all I had were help manuals (not even Google or Stack Overflow) and a couple of people better than me who were kind enough to teach me.

I started with small projects and made many, many, many mistakes. I developed websites with 5000 lines of code in a single file, created spaghetti code and learned why encapsulation is a must, messed up production, and realised why having multiple environments is essential. Basically, I was a junior developer for a long time, and the environment was forgiving enough for me to learn along the way.

Nowadays, for junior developers, the landscape is both more challenging and more promising.

On one hand, AI can serve as a mentor, providing guidance and offer solutions which can speed up the learning process exponentially. On the other hand, the reduced demand for junior developers in some areas makes it harder for newcomers to gain practical experience on the job.

My advice to young developers is to focus on learning programming fundamentals rather than becoming proficient in specific tools or languages. The technologies you use throughout your career will inevitably change. (I’ve witnessed the death of Flash, Objective-C, and WPF during my career.) However, the core principles of programming remain constant and will continue to be valuable.

Navigating Market Cycles: The Pessimist’s Trap

It’s easy to fall into a pessimistic mindset during downturns in the tech industry. Market cycles are a natural part of any economic system, characterised by periods of rapid growth followed by corrections.

Potential Pitfalls to Navigate

However, be mindful of these pitfalls:

During these downturns, job cuts, budget reductions, and a general sense of uncertainty can make the future look bleak. However, it’s essential to remember that these cycles are temporary. Historically, the tech industry has always bounced back stronger, often spurred by new innovations and increased efficiency.

The current hype around AI and its potential to replace jobs may contribute to a pessimistic outlook. Yet, just as previous technological advancements have transformed industries and created new opportunities, AI is likely to do the same. It’s crucial to stay adaptable, continuously learn, and focus on the enduring principles of software development. By doing so, developers can not only survive market cycles but thrive when the next wave of growth begins.

Conclusion

While AI will undoubtedly transform the landscape of software development, it will not render human programmers obsolete. Instead, AI will handle routine tasks, freeing up developers to tackle more complex, creative, and high-quality work.

By focusing on core programming skills and embracing continuous learning, developers can thrive in this new era.

Written By Emrah Ozer
Polyglot & multidisciplinary developer for over 20 years, lifelong learner, co-founder of Rightsoft. Follow me on twitter @emrahozer