Is Software Development a “Solved Problem”?

The term “Solved problem” refers to a problem that was once without a solution, but at some point a solution was discovered. The solution may or may not be optimal, but if it’s good enough for the problem domain, the problem becomes “solved”. For example, once we didn’t know how to land a spacecraft on the moon, which was an interesting and challenging problem, but now that we do, it’s no longer as interesting. Landing on the moon may be “out there”, so let’s get back to earth.

The discipline of Software Development, or Software Engineering if you prefer, has developed somewhat organically into something one can learn. A “junior” software developer may know just one programming language and have no experience with real code bases, while a more “senior” developer may know multiple programming languages, has worked on real code bases, which are messier than one would have liked, and also is familiar with many of the so-called “Design patterns”. Of course, I’m oversimplifying – “junior” vs. “senior” is not about counting programming languages, it’s about depth of understanding, problem-solving ability, technical prowess (“knowing” a programming language has many levels), etc.

Here is a simple example. In software development, if you need to sort an array of numbers, you’ll use a well-known algorithm, like Quicksort or Mergesort, to do the job. You won’t even know the exact algorithm, because you’ll use some library that does the work for you; sorting arbitrary numbers is a solved problem. Most developers couldn’t care less about the details; they make the function call and move on. That’s old news.

Now developers have AI at their disposal. You can ask the AI to build a feature in your software system, and it will do so. We know AI builds complete websites, including a back-end, a database, and front-end, without the human needing to write or see a single line of code. Is that kind of ability reserved for “simple” systems like websites? In other words, is software development a solved problem?

As some of you know, I have written tools, most of them with a GUI (yes, I like GUIs), that are open source on my Github account (https://github.com/zodiacon). I have many tools, which means writing all those tools requires a lot of time; I’ve been doing that in my “spare” time for some years now. There are always more features I’d like to add, and bugs I don’t have time to fix (or discover!). In the past few months, I’ve been using Claude Code to add features and fix bugs in my various tools.

The result is very good, even impressive. I have managed to add dozens of features and fix many bugs in a fraction of the time it would have taken me to do the work manually. Tools like Total PE, Total Registry, Object Explorer, WFP Explorer, to name a few, have benefited greatly. Not only that, my WTLHelper library that I created to provide Windows Template Library (WTL) functionality that is reusable across projects grew significantly, including having a good hex editor/viewer control, a Graph control (like Task Manager’s Performance graphs), and even a Graph/Node/Edge control (in the computer science sense). The Graph controls were built without me writing a single line of code, and they work great.

As another example, I always wanted to build a Process Explorer/System Informer style tool, but with my personal “touch”. I did that partially with “System Explorer”, and more recently with “TotalSystem”, an Imgui-based tool, but Imgui is not the best library for this kind of tool (IMHO). I wanted a WTL-based tool, with dark mode (considered “basic” now), and all sorts of information, graphs – the works. So I decided to use Claude to do that without writing code myself (except the base WTLHelper, which I have written already, and Claude improved) and a WinSys library I’ve been working on (and Claude added to as needed). I did that in a few days of Claude working and me guiding. It’s called WinSysLive (https://github.com/zodiacon/WinSysLive), and it’s really impressive (at least I think so). I considered changing the copyright notice to “(C)Pavel Yosifovich and Claude Code” – I certainly can’t claim I’ve written all the code – it was mostly written by Claude. Here are some screenshots:

These achievements convinced me that software development in general is a solved problem. Obviously, I can only speak for myself. The state of AI coding agents, even today (and they will get better), showed me that the way software developers used to work just a couple of years ago is gone. Software should now be designed by humans, possibly requiring a detailed document for complex systems. Just like software development is iterative, so is the new way of working. Humans write a design in natural language, specify constraints as needed, and then hand it off to the AI to implement. If there are bugs in functionality or design, the AI will fix them. The design document may be modified (requirements change), and the AI will update the code. I believe that looking at the code by a human is no longer necessary in the vast majority of systems. There are always edge cases, niche domains, and unique constraints in terms of CPU, memory, etc., which the AI may not get right the first time. It may need a “push” from an expert human. Experts are still needed, but probably less so, although still as valuable as ever, if not more so. In fact, being an expert will be truly unique, as mainstream developers may be “losing their touch”, getting farther and farther from the details. It will be fine for the majority of work. But from time to time, expert help would be required.

Just like Star Trek

I like the Star Trek universe, especially how it’s portrayed in “The Next Generation” TV show. The relatively utopian world portrayed is what humanity should strive for. No more chasing money as a prime motivation. Research, discovery – that’s where the challenges lie. But I digress.

In the Star Trek universe, the Computer entity is just like today’s AI – engineers talk to it to get things done. They can always intervene, but all the basics are covered by the computer without human intervention. Obviously, Star Trek is simplified in terms of computers and software, but the general idea is valid. Programming languages will no longer matter; I would argue that even now they matter less and less, as the AI interacts with the code more than humans. We even have the AI do code reviews on its own code, with a different “skill”, a different part of its brain, so to speak 🙂

What about Software Developers?

Where does that leave software developers? Software developers will become designers, guiding the AI, but staying out of the nitty-gritty implementation details for the most part. There will always be exceptions, but by and large, software development as practiced up until several years ago is going away. Does that mean we need fewer developers? I don’t think so. We can do much more with AI tools, work at a higher level of abstraction, and get to new heights. Writing a spreadsheet application will no longer be a challenge – the AI can do that on its own; just tell it to clone Excel, and you’re done. I mentioned that I “wrote” a node-graph control in a couple of hours, including unit tests and a demo application. I can add more features as I please. That’s the way it’s going to work.

Writing generic applications like word processors, calculators, even full-blown operating systems is within AI’s reach. What then? Some companies are built around their software products, say Adobe with Photoshop, Illustrator, etc. Their IP is tied to these applications, perhaps based on the premise that someone else won’t be able to create such applications with the same feature set in a reasonable time. I don’t think this is true anymore. You can create such applications with AI; even if these don’t provide 100% feature parity initially, that may still be good enough to drop these expensive applications. That’s bad news for all similar companies built around generic software products. The industry will change.

What does the Future hold?

Obviously, I don’t know 🙂 The advances we see using AI in chemistry, medicine, energy, etc. are where the real future should be. Let’s use AI to cure cancer; build a spacecraft capable of interstellar travel; create cheap and clean energy sources; create a super-secure OS without productivity loss; find ways to grow crops more efficiently; the list goes on, and software is an integral part of all of that. Writing a custom database engine? A drawing program? Even an interpreter for a Domain Specific Language (DSL)? These are solved problems, more or less. Let the AI do that. These are tools that enable building something greater for a better world. Let’s focus on that.

Published by

Unknown's avatar

Pavel Yosifovich

Developer, trainer, author and speaker. Loves all things software

Leave a Reply