The Future of AI in Software Development
- Published on
- Authors
- Author
- Toby Luxembourg
AI has transformed how we work in software development and continues to evolve, becoming ever more sophisticated.
I’ve always had reservations about the term artificial intelligence. These days, when someone mentions AI, they’re typically referring to LLMs, or Large Language Models, which emerged around 2017 with the groundbreaking “Attention is All You Need” research paper. Under the hood, these models are statistical, much like other machine learning models. So, let’s not call them “intelligent” just yet, as they’re not truly sentient (if I’m wrong, I guess I’ll be on its hit list when it becomes self-aware). Nevertheless, their vastly increased complexity, with billions of parameters, allows them to perform exceptionally well in human-like tasks such as language or image generation. They’re akin to Bayesian machines, predicting what is most likely to follow what was.
Are we gonna be replaced by AI?
A common concern I share with many others is, “When will software engineers be completely replaced by AI?” My intuition these days is that it’s probably not happening anytime soon. Hopefully, not for a very long time.
Anyone who’s worked extensively with LLMs knows that they are powerful in some aspects and quite limited in others. For example, in software engineering, they excel at:
- Teaching you about how something works
- Generating first drafts of code from natural language descriptions
- Occasionally improving your code
- Performing repetitive refactors, like in JSON or specific structures/classes.
However, these positive points aren’t always strong. For instance:
- When teaching, they can sometimes be quite wrong or outright hallucinate. Most of the time, though, the information can improve your understanding.
- First drafts often don’t run or can have severe logical bugs.
- They’re often not great at improving code for maximum understandability and maintenance.
- They can introduce bugs or variations in refactors.
- They training dataset can be quite outdated, especially for new tech stacks
I confess that I have sworn at the different LLMs I use more times than I can count. In those instances, if a human junior developer had given me the gibberish they did, I would have considered them downright incompetent with no hope of redemption. The worst example I have is when I asked an LLM to add a new field to a Django model, and after the third try, it still failed to add it but was convinced it had. I don’t mean to lack gratitude for the LLMs that I and we all use. Simply put, they are not human, and it shows. They have a long, very long way to go.
The hype behind AI
This brings me to a frustrating point shared by many in the tech world: the corporate hype around AI. Publications and blog authors keep pumping out articles about software engineers becoming obsolete, and technologically illiterate executives (very few seem to be literate) start believing that AI can help literally everywhere, as if it were some magical sword. They’re wrong about it all. Software engineers are not about to be obsolete anytime soon, except maybe for the bad ones. Different AI algorithms and architectures have their place only in specific problem spaces.
For example, AI excels in medical imaging, where it can discriminate between cancerous and non-cancerous tumors with remarkable accuracy. In finance, AI algorithms are used for fraud detection, analyzing transaction patterns to identify suspicious activities. In customer service, AI-powered chatbots provide 24/7 support, handling routine inquiries and freeing up human agents for more complex issues. In manufacturing, AI-driven predictive maintenance helps in anticipating equipment failures before they occur, reducing downtime and maintenance costs. These examples illustrate how AI can be incredibly effective in specialized domains, but it’s not a one-size-fits-all solution.
The reality is that AI is a powerful tool, but it’s not a panacea. It has specific applications where it can provide significant value, but it’s not a replacement for human ingenuity and expertise. The hype often overshadows the practical limitations and the need for human oversight. While AI can augment and enhance various processes, it still requires human intelligence to guide, interpret, and apply its outputs effectively.
AI in Software Development
This brings me to AI and its impact on software development. But what is a software developer, and what are those things this species brings that AI can’t replace yet?
A lot. A good software engineer can design a UX and the backend, prototype it, improve it, communicate it, debug it, and most importantly, create it in such a way that it’s maintainable and extensible. These last steps are necessary since a codebase can have many tens of thousands to millions of lines of code. If you can’t keep your software organized, you will reach a point where any change becomes impossible because it has become too complex, and you can’t think straight about where a change would fit. Hence, refactoring and organizing code is one of the core values of a good software engineer. One can use AI agents today to iteratively scaffold a full app, but in maintenance lies the issue: if something breaks, will you be able to fix it? If you want more functionality, can the AI simply add it, or can you?
Sure, for prototypes, I am all for vibe coding — just get a black box of spaghetti code as fast as possible because the goal is to test it in the market and not make it work 100%. But if you’re a company that earns money and needs to give a guarantee of stability and functionality to users, you’re going to want experienced software engineers directing the development of your platform.
Like a calculator can’t replace a mathematician, AI currently can’t replace a software engineer.
The Future of AI in Software Development
While AI can’t replace a software engineer yet, it can drastically enhance one. Like most, I have used LLMs for all of my software work since they hit the market years ago. They have transformed my productivity. And thank goodness they have because creating an app today is much more complex than it used to be 20 years ago. Back then, there were only a few tools, and most people used desktop computers with a fixed screen size. Today, we must develop for responsive design that adapts to any screen size, with a stack depth that is usually quite intimidating, and creating a simple app has become much harder, involving more complexity than ever before. This is where AI is fantastic. It gives a cognitive break to the developer. Instead of having to write some things from scratch, devs can treat them as modules, isolate them in their software architecture, and use AI to generate the first drafts, then revise by hand, and continue working hand-in-hand with AI to come up with a working solution. Generative AI is used to create ok-ish code followed by manual, expert input, and then iterate on it! Because a human is in the loop, we can still keep everything organized, and a breakage in one part due to bad AI code stays within the bounds of that subsystem.
The integration of AI into software development is not about replacing human developers but augmenting their capabilities. AI tools can handle repetitive tasks, generate boilerplate code, and even suggest optimizations, allowing developers to focus on more complex and creative aspects of their projects. For instance, AI can assist in generating initial code snippets, which developers can then refine and optimize. This collaboration can significantly speed up the development process and reduce the cognitive load on developers. Finally, it can also make for happier developers as the mindless tasks are left to the machines.
There is a hiccup in the use of AI that worries me. If you have worked at any length in this field, you will have realized that 90% of new computer science graduates are mostly useless right after graduation, and they often take at least a year to learn to craft software. Because AI is likely on par with fresh graduates in terms of work quality (actually, it might do better than fresh graduates), hireability might become an issue. Not all new graduates suffer from this issue, and frankly, it can be easily remedied by learning real-world skills and not just theory in school, not because theory is not valuable (it is!) but because they will need to close the gap they have with AI in terms of productivity. I could be wrong there, perhaps junior devs would be just as useful as before since they would also have access to AI, but the fact that they lack the valuable experience of more senior members will likely make their life more difficult in the beginning, especially in the AI era. But companies will continue to need good experienced software engineers, and all senior engineers were once juniors, so they will need to be trained. That is, if AI doesn’t take the world over before then, and replaces all software engineers with little AI agents, thereby proving my entire opinion to be wrong.
Conclusion
The future of AI and AI-led software development is exciting. By staying informed about new technologies and tools, we are empowered, as developers, to build ideas faster and better, with less of the menial and brain-dead tasks, instead focusing on being innovative and solving real-world problems. I truly see AI as a new integral tool to software engineering, and you’d definitely be missing out and become obsolete should you refuse to join the movement. As we move forward, the fusion of human ingenuity and AI’s computational power will define the next era of software development.