iSAQB Software Architecture Gathering
1. Since 1945 (Von-Neumann/Princeton Architecture) computers have had an impressive adoption curve. Do you think some dreams have come true? Which dreams have been let down?
Yes, most definitely some dreams have come true. If we look at the advancements computers have enabled in the last decades and the possibilities they have unlocked, it is nothing short of a miracle. A tiny example: My son was in Japan a while ago. Suddenly, my wife got a video call from him. She picked it up, and my son greeted her with a big smile: "I am just sitting on the Ferris wheel in Yokohama and just wanted to share the view with you." And he did. In real-time. Almost 10.000km apart. When I was young, this was unimaginable. As a parent, you were happy if your children called you once throughout their whole journey. Of course, voice only. Over a terrible line that often broke down. And just a minute at most, quickly saying that they are okay, as the call was absurdly expensive. Computers enabled so many wonderful things we take for granted today. Thus: Yes, some dreams have come true.
However, we never managed to get to the point where we were able to tell a computer in our own words what we want it to do and it did it. We never got close to that Jarvis feeling from Iron Man. Instead, whenever we had a new idea, we arduously had to tell it to the computer using some third-generation programming language (3GL). And no matter how much we all love to code, this can be an excruciating task. Computers are very powerful but also extremely stupid at the same time. You need to tell them absolutely precisely what you want them to do, painstakingly avoiding any potential ambiguity. Otherwise, they will precisely do what you do *not* want them to do, however perfectly reliable.
Large Language Models have recently lifted the human-computer interface to a different level, much closer to the way humans communicate with each other. Some people concluded that we have finally arrived at the Jarvis level, and we can simply tell the computer in a few simple words what we want it to do, and it does – as reliably as if it were a software program. However, we meanwhile learned that things are not that easy and that we have not yet arrived at a Jarvis interaction level. But maybe we will eventually arrive there. If we look at the technological advancements of the last decades, it seems possible.
2. How close were we to figuring out how to do software right (before the current AI summer)? 90%?
We were really close, at least in theory. However, in practice we were not – at least in the majority of places.
We have known for at least three decades that it is impossible to specify any interactive application completely upfront. Still, many companies stick to big upfront specifications. They may call it "backlog" today, but it still is an attempt at a complete upfront specification.
We know from the agile movement that we can only manage the complexity and dynamics of the markets using tight feedback loops with the users of our software. Inspect and adapt: Pick the next best idea. Implement a bit, just enough to learn from the feedback. Ship it. Observe. Learn. Adapt. Still, the "agility" we see in most companies are month-long "release trains" where millions of euros are wasted before any user can provide any feedback. And even if the users provide feedback, more often than not it is ignored.
We know from DevOps that it is important to minimize the lead time, from a business idea until the user sees it in production, to get fast feedback. We also know that we need to foster and amplify feedback loops between all stages of the value creation process to be able to deliver more value faster without compromising quality. Still, most companies stick to a virtual assembly line with workstations isolated from each other by organization and process boundaries. They also slow down the value creation chain by budgeting rounds, project portfolio planning, and many other procedures.
We know how to design tests and how to automate them properly. Still, most companies are not doing it.
We know how to automate software delivery. Still, most companies are not doing it.
We know how to create dependable software. Still, most companies are not doing it.
And so on. The list is long.
Therefore, yes, we know how to do software right. We just don't do it most of the time.
3. Are all (or most) of the scenarios you can come up with desirable? Are there better and worse directions to go?
In my talk, I discuss some of the problems that complicate our work, what is needed to overcome them, and how new possibilities can help us overcome them. I think most ideas I lay out are desirable – at least from the perspective of the people directly affected.
However, new possibilities can always be used for the better or for the worse. Take social media, for example. Social media bears wonderful and abhorrent possibilities at the same time. It depends on who is using it and how they are using it. The same is true for the possibilities I discuss. Depending on who implements them and how they implement them, they may either result in a desirable scenario or in an undesirable one.
Regarding the current evolution of software development and AI in general, I see a few things that make me frown. First, there is this narrative that the main problem software development had in the past was the time it took to write code. However, writing code is roughly 10% of the core software development loop and less than 5% of the whole value chain. We have several problems we need to overcome when it comes to software development in most companies. I listed some of them just before. Writing more code in less time will not solve them.
Second, due to the AI adoption race in software development, we basically forgot what we learned over the last decades. Looking at AI-based software development looks a lot like looking into the past of software development. Oftentimes, it feels like the 1990s rang and demanded back their software development approach.
We also have to solve the "human in the loop" issue in software development. Making a human responsible for the quality of a massively increased code production that is outside that human's control is not a sustainable approach.
Regarding AI in general, I think we see a lot of centralization when it comes to AI. The so-called "frontier models" belong to less than a handful of players when looking at the popular ones in the Western Hemisphere. We also tend to foster centralization by always demanding the latest and greatest – especially in software development. We know from the past that a monopoly regarding a powerful technology never had positive outcomes.
There are more things to ponder, like, e.g., the question of how you build expertise if a machine always does the thinking for you, and many more. Depending on future evolution, including our own choices, all this will play out better or worse. Personally, I hope for the best.
4. Even if we can't tell how computer/software systems will look — which traits are you looking for? What do you think is missing (a) in established computing and (b) in current "AI" technology?
I briefly touched it before: I would like to get beyond 3GL to tell computers our ideas. From a builder's perspective, it would be great to move a bit closer to the Jarvis interaction scenario. Focusing on making our dreams come true instead of struggling with the quirks of a 3GL.
But there is more, and I also touched it before. The efficiency boost we would get from this increased abstraction level is worth nothing if we only use it to flood the world with more software waste. Most companies are so fixated on efficiency that they have completely forgotten how to be effective. Studies show that on average 80% - 90% of the software developed is waste: software nobody needs, software nobody wants, software that does not create any value.
The current developments in AI are rather counterproductive in that respect. They help to accelerate software production. But as long as we do not change anything else, it is a dead end. We need to learn to be effective, to focus on value creation instead of only on cost reduction.
I also think we need to focus more on resilience and dependability. One consequence of the ongoing digital transformation is that software has become indispensable. Software must run reliably, or people will suffer. Sounds dramatic? But if we think about it, it is exactly like this. Today, our business and private lives massively depend on software. If the software does not work, we have a problem, sometimes smaller, sometimes really big.
However, most companies only focus on shooting out as many features as possible while taking reliability for granted (or actually an Ops department problem). The problem is that this approach does not work anymore in a world of indispensable, highly interconnected, distributed software. And continually stuffing more complexity into the applications by adding feature after feature makes it even worse. Thus, we also need more resilience and dependability.
Finally, I am missing sustainability in computing. As software has become indispensable, we need to think about the long-term consequences of our actions. Software must work today, tomorrow, and in five years. It also needs to be altered and extended continually. This is what sets it apart from most physical products, which are hardly altered after production. We need to make sure that tomorrow's costs will not explode. We need to make sure that our ecological footprint will not backfire. We need to make sure that everything we do is sustainable for the people affected to ensure our future viability. In short: We have to foster sustainability in all its dimensions to ensure we will still thrive in a year, two or five.
All this requires a different way of doing software development. We know all the building blocks, but most companies only focus on making software development cheaper today, ignoring all future consequences of their acting. As long as we are heading towards this dead end with all we have, AI will not help us. It will only help us reach the dead end sooner. Maybe it will help us in a twisted way if companies hit the wall faster thanks to AI. This might pave the way for better software development, not just in theory but also in widespread practice. We will see.
5. What dreams do you have about what a computer could achieve for us? There are a few problems to solve out there, which would you pick as top priority … and is it a computer problem?
The problems I see in the world are not due to technology but due to humans and their behavior. Technology sometimes acts as an amplifier, but it is not the source of the problems. Therefore, I think computers will not help us to overcome the problems we face. If we want to overcome our problems, we need to find different ways to interact with each other, starting small and going all the way up. Personally, I try to interact with other people in the way I would like to be treated. I do not always succeed, but I keep trying.
Regarding computers, if I had the time, I would probably use my computer to develop some nice 2D game, or something along those lines. Something fun. Something I love. I mean, this was why I started with computers many years ago – to make some of my humble dreams come true.
You need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from Turnstile to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Turnstile. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Vimeo. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from YouTube. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou need to load content from reCAPTCHA to submit the form. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Vimeo. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from YouTube. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Bunny Stream. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Wistia. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Facebook. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Instagram. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Newsletter2Go. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from Google Maps. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More InformationYou are currently viewing a placeholder content from X. To access the actual content, click the button below. Please note that doing so will share data with third-party providers.
More Information