Today, more than half the budget of effort and money for technology development projects goes into software. And this trend is not stopping any time soon, so that’s good if you are in the software business, right?
By: Robert Hendriksen, software architect at Sioux
Technology continuously changes how humans interact. Just think of the invention of the wheel, roads, ships, the printing press and Instagram. All those innovations we made to our lives in the past few thousand years have led to more complex social structures and to an accelerated rate of even more technological innovations. And this vector through time is not stopping any time soon.
Nowadays we know much about what is going to come. We can predict how many people will ultimately populate the world. The world’s population will hit about 11 billion and arrive at its peak somewhere around 2070. It’s obvious we will face many challenges in the next 50 years ahead of us, that must be overcome in order to reach this high population level in a sustainable way. We don’t want ourselves and most other species to wipe out in the process. And because there is no way back, we need even more and better technology, which brings us to software.
Software is a very young discipline. Compared with mechanical and electrical engineering, which are basically the application of physics, software engineering has just started. Gerrit Muller’s picture shows it best. Today, more than half the budget in effort and money for any new technology goes into software. And this trend is only increasing.
This young discipline is going to shape our future even more. Consequently we are only going to need more and more lines of code to bring to life all the technical innovations that will fill our daily lives.
It’s remarkable that both mechanical and electrical engineering are currently being done by using sophisticated modelling tools. These tools allow engineers to assemble systems from high-level abstractions of smaller building blocks. While all those tools are built with software, software construction itself is primarily constructed by hand, line by line. Model-driven software engineering (MDE) seems to be an answer. In all projects where we apply MDE, we see obvious development acceleration and an immediate increase in quality. To me it seems strange that adoption rate by peers is still a slow process.
Creating (visual) languages understood by domain experts and generating behavior and simulation from models is an approach that takes the fundamental truth of ‘finding bugs early’ in overdrive. The traditional translation made by the classical software engineer is taken out of the equation and with it all the mistakes added during this process. As a consequence, the multidisciplinary development process changes as well. Obviously, domain experts need to review these models from the get-go. Ideally the multidisciplinary team adopts a highly agile approach. Projects where we have adopted this way of working are very successful.
There is another development in the world that will change the way we construct software even more. Machine learning, particularly deep learning, is eating the world at this moment but mainly in the United States and China. I don’t know (yet) of any European company or organisation that is investing in deep learning as massively as is being done overseas. This means it will also happen to us (Europeans). Software creating software is no longer science fiction. Web sites and code can be generated from higher abstractions without manually coding the generator. AI pair programmers exist today.
The marriage between mechanical engineering tools and MDE for software, as well as the use of neural net technology, will replace massive amounts of manual coding work. Obviously, someone or something still needs to specify what’s needed. But now we’ll be able to use a much higher level of abstraction and use metaphors to describe what we need. In the end – who knows – maybe no software engineer at all will be required?