Could future AI really write full apps and take coder jobs? Let’s realistically understand what AI can and can’t do as of 2024.
You’ve probably heard people talk about ChatGPT and other new AI chatbots. They converse on various topics shockingly well. And yes, they can solve many coding problems, too.
But is AI an existential threat to developers’ careers? Or will it become just another tool to augment programmers’ capabilities?
In this guide, we’ll examine the realities of AI’s current abilities in software development, where the technology still falls short, and how you can future-proof your skills in this fast-changing landscape.
ChatGPT And LLMs: Understanding AI Technology
Chatbots like ChatGPT aren’t “thinking” programs. They don’t understand language or coding. They predict intelligent-sounding responses by finding patterns in giant piles of online text data.
Programmers call them “large language models” (LLMs), a fancy word for a text predictor on steroids.
To put the “large” into perspective, ChatGPT was trained on a 570GB to 45TB dataset of text snippets spanning internet forums, books, and online writing, and a lot of information was pulled right from Reddit.
This huge body of text data allows ChatGPT to generate passages, answer questions, and even write code based on text prompts. Its knowledge comes entirely from these pre-existing texts, not through true comprehension of the world.
So, while ChatGPT seems adept at conversing, its intelligence has limitations.
- It can only maintain context for up to a few thousand words.
- It has no real-world experience.
- It cannot reason or make intuitive leaps.
- It has a hard time understanding complex code.
Yet, this technology keeps advancing rapidly. So, how do ChatGPT and other LLMs perform on coding tasks today?
Can ChatGPT Write Functional Code?
ChatGPT can produce running code in JavaScript, Python, SQL, Bash, and other languages when prompted appropriately. It’s a novice coder, but you can keep prompting it to correct errors to get working code.
For simple coding problems, ChatGPT provides impressive versatility and allows you to save time creating basic code that you’d otherwise manually do. In these cases, LLMs definitely save time for coders.
However, its code is often inefficient or overlooks edge cases because it does not have the full context of the problem. In fact, ChatGPT sometimes even cautions that its sample code requires thorough review before application.
So, we know for sure that LLMs aren’t there yet. But we can only imagine how good they will be because advanced LLMs are just one year old (ChatGPT was launched on November 30, 2022).
“If AI keeps progressing at this pace, in the next 30 years, the majority of the human race is in trouble when it comes to jobs, not just programmers,” said one Reddit user in the /r/learnprogramming/ subreddit.
Development Tasks That AI Can Handle
While ChatGPT cannot fill a senior developer’s shoes, it offers straightforward utility in making coders more efficient. Let’s look at how ChatGPT can augment you as a coder and remove the regular more laborious processes.
Automating Repetitive Tasks
For seasoned developers, writing CRUD apps, simple scripts, and backend boilerplate code ranks among the most tedious aspects of the job.
With AI, you can eliminate this drudgery through automated code generation. Rather than manually coding basic user registration systems repeatedly, an AI model could instantly produce functioning prototypes tailored to each project’s database schema.
AI’s utility for repetitive coding will only grow as higher-level abstractions continue entering common use through frameworks like React and Django.
Natural Language Processing
Product managers often compose specs in everyday prose like “Users should be able to update their saved payment info.” Programming such loosely defined behaviors leaves ample room for misalignment with stakeholders’ expectations.
With powerful LLMs like ChatGPT 4, AI can help interpret free-form client requests to frame thorough technical requirements.
Using client documents and conversations, LLMs can help translate requests to executable semantics for coders. LLMs can help surface ambiguities to address upfront rather than mid-project as you optimize your prompts.
Detecting Bugs
AI models trained on volumes of open-source code can also excel at reviewing software for defects. Researchers at Microsoft have built specialized neural networks to spot bugs, achieving higher accuracy than human coders in some testing.
As a programmer, you could employ this AI coworker to quickly analyze commits for faulty logic, deprecation errors from outdated dependencies, and even security flaws. Rather than manually poring over thousands of lines, you’ll get annotated suggestions on what needs fixing.
Predicting Issues
Beyond reactive bug finding, sufficiently advanced AI can predict issues before they emerge based on the code you’re writing. It can do so by continually checking the code and identifying if it could fail at any point through execution.
Or, for libraries and frameworks with many downstream dependents, AI companions may spot upcoming breaking changes before releases. This helps you smooth transitions and minimize disruptions proactively without additional resource usage.
Better Project And Timeline Estimation
Speaking of resource use, people chronically underestimate how long software projects will take. We either tend to be too optimistic or forget about risks. This causes projects to end up going over budget and over timeline.
AI tools are starting to help by looking at data from past projects to see how long similar ones took. For example, CloudBees takes context from across your toolchains and makes sense of it for you. It can then use the information to estimate software delivery timelines.
Of course, AI cannot predict everything that can go wrong, but considering the amount of data it analyzes before estimating timelines, it can be a great starting point. Over time, as the tools get more data, the estimates should improve.
Optimizing Your Code
It’s great to have a second pair of eyes for your code. It can help you identify issues with code logic, find better and simpler ways to get the same output, and even optimize for speed.
While programmers continually invest effort into refining systems for speed and efficiency, tweaking code through trial and error becomes tedious.
LLMs can provide optimization suggestions to help you quickly optimize and refactor code.
Rather than blind guesswork, you’ll have AI readily pinpointing low-hanging fruit to target for maximum gains. It may advise splitting monoliths into microservices, adding indexes for costly queries, or upgrading frameworks for modern best practices.
The Limitations Of AI Tools In Development
Should developers feel threatened by AI’s utility in automating rote coding and supplemental development tasks?
Current technology has proven inadequate even for moderately complex programming jobs. As such, core aspects of the developer workflow seem destined to stay human-driven for the foreseeable future.
Poor Quality Code
Code produced entirely by ChatGPT or similar models tends to suffer from subtle flaws. While usable, the code does not consider the variety of edge cases you may know, and without logical reasoning, it relies solely upon what you ask it to do.
Here’s an experiment done by a GitHub user. You can see that ChatGPT does a great job explaining and breaking down a problem:
But then goes out to give only partially correct code where it skips the logic for setting the answer to 0 when n is 1.
To make sure all the edge cases are taken care of, the code needed us to add this if condition, as you can see in the screenshot below.
So, the code created with ChatGPT generally results in unstable apps that break in production due to unhandled exceptions.
Until AI radically advances, generated code will remain too shoddy for most real-world applications without heavy oversight and editing.
Potential Security Risks
Alongside stability issues, code written by language models introduces alarming security risks. Since AI cannot always consider edge cases, your code may open up to exploitable bugs and security risks.
For instance, if you’re developing a web app and do not adequately clean user inputs, hackers can exploit those to gain access to your database through SQL injections and XSS attacks.
Can’t Solve Novel Problems
To displace human programmers rather than assist them, AI needs to tackle new problems. Today’s models merely associate prompts with solutions encountered during training. In an independent study, the researchers found that ChatGPT failed in 52% of the coding questions by providing partial or incorrect code.
However, users still picked ChatGPT’s response 39.34% of the time due to its overall comprehensiveness.
Only when models can deduce reasonable solutions and think beyond the basic steps, like people, can they drive development alone. Until then, their value remains confined to accelerating known tasks rather than trailblazing.
AI Has Zero Understanding
Existing AI has no proper comprehension of code or abstract reasoning ability–they simply recognize patterns in the input prompts and provide relevant “sounding” outputs. Without contextual understanding, its solutions often ignore critical constraints or make irrational choices no engineer would.
Consider the analogy of a medical bot trained to diagnose patients by matching symptoms to recorded illnesses. It would perform decently recommending common treatments but could catastrophically prescribe chemotherapy for a mole on the leg just because superficially similar language appeared linking the two.
Engineering, on the other hand, hinges on human rationality and judgment to make coherent designs. So, until better AI is achieved, developers can benefit from AI to augment their existing coding workflows.
The Future Role Of AI In Programming
Though AI currently has major limitations, the pace of growth in this space is phenomenal. AI went from incomprehensible writing to flawless English prose indistinguishable from human-written text within just one year.
In the near future, AI could replace a beginner coder by handling basic coding tasks automatically. In fact, according to OpenAI’s internal evaluations, GPT-4 significantly beats its previous versions on all evaluations, including coding-related tasks.
“It will be a tool in the developer’s kit that will make their job both faster and easier, while at the same time introducing a level of complexity and opacity which will undoubtedly cause new problems,” says Lawjarp2, a Reddit user.
The nature of programming is already evolving, as we see it with GitHub Copilot, Amazon’s CodeWhisperer, and many more.
Coding will transform from manual typing to working synergistically with generative AI systems — with people providing context, vision, oversight, and troubleshooting.
This hybrid model allows AI to handle tedious coding busywork while developers focus on high-level system architecture, complex problem-solving, creativity, and preventing issues.
So, while tasks shift, software builders aren’t getting replaced entirely. The profession, however, will look radically different in several years.
How To Future-Proof Your Career In Code
Rather than panic about the AI takeover, aspiring and current developers should recognize language models for what they are: assistants rather than replacements. Here are tips to keep your skills relevant:
Learn Prompt Engineering
Maximizing the usefulness of ChatGPT and GitHub Copilot hinges on effective prompt composition. Unfortunately, prompt engineering is currently more of an art than science.
But expecting engineers to hand-code everything as previous generations did does not make sense anymore. It’s better to let new developers leverage new tools at hand.
Veteran coders should spend time experimenting with language models using different inputs and build intuition for what works. Remember, every LLM has a unique style, and it’s good to understand them, considering they’re becoming part of daily workflows.
Hone Your Problem-Solving Skills
Human creativity and intuition remain indispensable since software development tackles open-ended problems. Not just mechanically translating tech specs into code.
No amount of raw coding speed can substitute for devising insightful solutions or crafting simple architectures in complex environments. So focus on the know-how, creativity, and in-depth understanding of your industry while offloading rote work to AI counterparts.
Learn To Empathize With Users
Remember that code gets written to serve people’s wants and needs. As AI grows more capable of assuming lower-level programming duties, developers should double down on the strengths machines lack, namely empathy.
Prioritize roles like product managers or UX designers that stress understanding audiences and building for humans. Bring user-first thinking to the forefront even while collaborating with AI coders on implementation details.
Study Machine Learning
For those excited to push boundaries, exploring machine learning offers insight into the latest AI advances with widespread applications. Neural networks now underpin solutions from image processing to predictive analytics.
Grasping how models function, train, and interface with software systems can also help you open up new possibilities in your career. Consider supplementing computer science fundamentals with data science and ML coursework.
FAQ
Will AI replace programmers in 5 years?
No. In five years, AI will likely handle more repetitive coding tasks but not fully replace human judgment and oversight for creating complex software systems. Developers may see their roles shift with AI assistants but will still architect solutions and constraints.
Will AI ever replace developers?
Complete replacement seems unlikely even with advanced future AI, given software’s ever-evolving demands and the creativity intrinsic to solving novel problems. Simple coding eventually gets commoditized, but not high-value strategic thinking. Developers who learn to leverage AI rather than compete against it effectively will remain employed.
At the end of the day, don’t dread the machine takeover. Welcome the AI teammates who will enhance productivity beyond any engineer or algorithm alone can achieve. Software development moves too fast for any single change to dominate forever. And especially in the context of tech, adaptability is the most crucial skill.
So rather than worrying whether code gets written by biological or silicon hands in the long run, cultivate versatility no matter what tools emerge.
What’s your take on AI coding assistants?
The winds of change are undoubtedly speeding up in software engineering. As AI rapidly evolves, what we once considered the domain of human cognition can now be outsourced to machines.
Will we allow anxiety about the future to paralyze progress? Or will we actively reimagine our roles while benefiting from this technology’s exponential power?
The most formidable competitors are usually the ones who adopt the latest tech swiftly rather than fighting change. But the key remains judiciously balancing human ingenuity and machine intelligence as complementary forces rather than opposing camps.
And so, as software continues eating the world, programmers would do well to set aside dread in favor of confidently working on more complex and challenging projects.