Software Development in the age of the Robots

This piece might be a little late to the party. It is not like I’m writing on a topic that is brand new. But today I suddenly felt the urge to write something on the craft, art, job that I love and the changes that it is going through: software development. The robots that are taking over our job, they say. These times can confuse us. Make us uneasy. It triggered some thoughts that I wanted to write down. Are we talking about a craft? Or an art? Or is it just a job?

At one point I looked at software development as an art. I really dig the series of Donald Knuth, ‘The art of programming’. Because I felt, and sometimes still feel, so much creativity in what we do every day. Taking ideas (some call it requirements), and transforming them into a different language that the machines can execute. This creativity part is still something that is close to my experience. It is about solving puzzles, finding solutions to problems, but doing it in a way that shows some form of beauty. Sometimes it’s in the simpleness. Sometimes it is in the ingenuity.

Of course we also have the craftmanship movement. It is somewhat related to the artform. We are craftsmen. Creating something that wasn’t there. Maybe a remix, or a variation, sometimes its completely new. Of course we create in a way that brings awe to those that understand the craft. It is clean, it is understandable, it is maintainable. It follows the rules that we as a community have decided on, and in the moments that it does not follow the rules it is completely acceptable and recognized as pure cleverness.

But sometimes it is just a job. We write and develop software because a problem should be solved. There is something to automate, something that can be done more efficient. And we want a tool that does it for us. Sure that tool can be crafted. It can be seen as a piece of art. But in the end it should solve a problem. Nothing more. In this viewpoint any energy that is put into the software that does not directly attribute to the solution is a waste. We are solving a problem, it does not need to be beautiful. Or a tribute to our cleverness.

Let’s talk about the robots. They are changing software development in an unstoppable way. And there is a lot to say, and a lot already said. Let me think a loud and share some of my thoughts.

Like Grady Booch says, our industry is all about finding new abstractions. What are we abstracting? All kind of details that the machines require to execute our solution. At the beginning (way before my time) we had to create instructions for specific hardware. Later we found ways to separate the software from the hardware. And then we kept raising the abstraction of the language that we use. Less details on what the hardware should do, and more focus on intent and functionality.

I see AI in software development as a possible new level of abstraction. A programming language is nothing more than instructions for a compiler or virtual machine to execute. Sometimes the language is translated into another language and that compiler is reused. In the same way we are writing instructions for a model that translates our instructions into existing languages.

This changes the the language of expression for all developers. And I can understand that for some this feels like an attack on their mother tongue. Some developers are so invested in their language of choice (like Haskell, or Go) that an attack on this abstraction feels like an attack on their craft, their artform. I get that.

On the other hand, this new abstraction is far from stable. It is not deterministic in its core. And to make matters even worse, we are in a chaotic moment in time where everything is changing all the time. The abstraction itself is changing from prompts, to context building, to instruction files, skills, and so on. It is hard to get adjusted to this new abstraction if it is changing all the time.

But I do think that our viewpoints can stand this change of abstraction, this test of time. We just need to learn how to craft software with these new abstractions. Find beauty in the prompts and the skills. And maybe, in the end we will find that our job as become so much better, because we are able to solve much more problems than we used to.