DEV Community

Cover image for Software After AI
Whetlan
Whetlan

Posted on AI-assisted

Software After AI

Two projects made me wonder what we will mean by “software” in a few years.

REA connects agents to tools for examining applications and binaries. Its workflow lets an agent investigate how a feature works, gather evidence, and use that evidence to write and test an implementation.

PhotoCraft describes itself as a clean-room reimplementation of Photoshop in Rust. It is still an early alpha, but it already presents an interesting design choice: the interface and agents can operate the same editing engine through commands.

What interests me about these projects is what happens to the application itself. An agent can study how it works, make something from what it learns, or call on its parts to do a job. The application starts to look like material for something else.

Much of the software we know consists of rules written in advance. Under the same conditions, the same input produces the same output. We have spent a great deal of effort making this dependable. To use the program, you learn its commands and work out which ones will get you what you want.

You also learn where it stops. If what you need falls outside those rules, you find another program, change the existing one, or do the work yourself. An image editor can resize a picture without knowing why you need it resized, or what you intend to do next.

Its predictable behavior also gives an agent something to study. Change the input, observe the output, propose an explanation, and compare an implementation against the original. A program's behavior becomes a source of examples for making another program.

I expect this kind of reconstruction to become easy as AI improves. For the question I want to explore, we can assume it does. What happens when making a familiar tool becomes an ordinary thing to ask for?

With an agent, you can describe the larger task and let it work out the steps. It decides which tools to use and what to do with their results. This is useful partly because you no longer have to specify every operation. It also means you may get a different sequence of actions, or a different result, when you ask again.

There is another awkward possibility here. You might build an agent around a task the current AI cannot manage on its own, only to find that the next generation arrives able to do it. What took a separate arrangement of prompts and tools has become an ordinary request.

So the fixed program becomes easy to recreate, while the agent's capability may become part of the AI it depends on. It starts to look as though software is losing its reason to exist as a separate thing. We ask for a tool, get one, use it, and move on. Where does that leave software engineering, or a software industry?

I found it useful to leave computers out of the question for a moment and think about iron.

Imagine a workshop making a plough, a sword, or a hoe. Each object is a complete tool. Its metal has been shaped into something a person can pick up and use. You can look at it and understand roughly what it is for.

Now think of the metal parts inside an electric motor, or a machine that cuts other metal parts. Some are small and have to fit together precisely. A shaft on its own tells you much less about the work the whole machine can do. The connections between the parts matter more.

The blacksmith's tools and the machine shop's tools are made from familiar materials. Yet the work has changed enough that making the parts calls for different equipment. You cannot get a useful picture of the change by asking only how much faster someone can make a hoe.

Electricity gives these assemblies new uses. Add electronic control and software, and the things we can make change again. A watch can do more than its mechanical parts would suggest. A phone or computer contains physical components whose usefulness depends on the instructions running through them.

What I want to borrow from this comparison is the way each addition gives the next one somewhere to go. Metal parts carry electricity and make machines possible. Electronic equipment gives software somewhere to run. Software gives AI access to files and machines, and through them to the work people are doing.

The earlier elements remain inside the new objects. We pay less attention to them as complete products. We care about what the whole thing lets us do.

What might happen when AI joins this process?

Recreating an old game or an image editor is an understandable place to start. We know what those things are. We can recognize success. But people with electricity did not remain satisfied with making another plough, and people with software did not spend all their efforts reproducing an old generator's controls. There were other things to make.

I doubt we will be satisfied with recreating the software we already have either.

Suppose you are putting together a small exhibition. You have a folder of photographs, a spreadsheet of captions, and the measurements of the frames. You want to see how the pictures will fit, find the ones that need a different crop, and prepare labels for printing. An agent might use an existing editor for the image operations and have a small program made to match the filenames to the spreadsheet. When you change the frame sizes, it could run the affected steps again.

You could already do this with scripts. What interests me is what happens when it becomes ordinary to ask for them in the middle of doing something else. You may never open the program that matches the captions, or even give it a name. It exists because this particular exhibition needs it. There could be a great deal of software in the work without much of it looking like an application.

An exhibition is an easy example because we already know the job. I'm more curious about the projects people might attempt once they can have tools made along the way. What would someone try if they no longer had to choose, at the outset, which applications the whole project must fit inside?

Small pieces can still have demanding jobs. In the exhibition, a crop is a set of coordinates that another tool must interpret correctly. Both tools need to agree on which image those coordinates refer to, and whether they are measured in pixels or something else. If one tool measures from the original image and another from a resized copy, the crop will land in the wrong place.

This is the sort of precision I have in mind. A piece of software has to fit the pieces around it. If an agent is going to assemble many of them without a person watching every step, a loose description of what each one does will become less useful. We will want explicit inputs and outputs, and ways to check that the pieces work together.

This brings us back to the predictable behavior we started with. It gives an agent something to reproduce, and it gives the next program something to depend on. A piece of software could become easier to replace while finding many more places where it is useful.

That brings me back to the machine shop. Once you are making enough parts, you put more effort into the equipment that makes and checks them. I expect something similar in software. A programmer might work on how an agent specifies a tool and tests it against its intended use. Improvements there could carry through to all the tools it makes. Writing each one by hand would be an increasingly odd place to spend most of the effort.

And there may be many more of them. The exhibition is a small job. You probably wouldn't commission an application for it. You would rename files, copy captions, and check the pictures yourself. Much of what we do on computers has this character: enough repetition to be annoying, too little to justify having software written for it.

If making and checking a tool becomes cheap enough, some of that work becomes worth automating. A tool used for one afternoon could earn its keep. This is why I expect AI to increase the demand for software. It would let us use software for jobs we currently leave to people because making the tool costs more than doing the job.

I started with the possibility that software was going away. I now find myself expecting more of it, in smaller pieces, made for uses too particular to have supported a product before. The applications we recognize today may change quite a lot along the way.

That leaves the people who make it. The move from a blacksmith's workshop to a machine shop changed the equipment and the skills required to use it. A person could still be making things from metal while doing a job the blacksmith would scarcely recognize.

A programmer may undergo a similar change. More of the job could involve operating and improving the machinery that makes software. Someone would still have to decide what is worth making, and how to tell whether the result does the job. There would be plenty to learn, though it might feel strange to call all of it programming.

I don't know how far the workshop comparison will hold. But it leaves me wondering about the work we do by hand today because writing a program for it would be too much trouble. If those jobs start getting software of their own, how much software will we end up with? And how much of a programmer's day will still be spent writing it?

AI assisted with the English drafting and editing.


Find me on StratCraft | GitHub

Top comments (0)