The Story of Atomic Process Architecture
The drive from Event modeling and the event sourcing community, is slowly getting more attention. The idea of having a single source of truth, is not new. But the way how we can achieve it, is getting more and more clear.
Thus selling this idae to the business is a hard task, because software development has promised to achieve this modular, way and decoupled way of working for years. But the reality is, that we are still far away from it.
Challenges come and go, and especially they come with the details. The small print, the small mistakes a developer, can make in a codebase, which leads to huge coupling.
Further on that, Software development has become one of the number one jobs in the world, everyone can practice with kinda just a small course on the internet. I see this equivalent as, software industry is faced with a lot of unskilled workers trying to build a house. In Cyprus it’s common practice to let the house build from unskilled workers, and the result is often that as soon as it start to rain. Water flowing in from the roof, windows and even plugs.
The same is happening in the software industry, we have a lot of unskilled workers, trying to build a house. And the result is often that the software is not maintainable, not scalable and not even secure.
The idea of microservices, the holy grail of “modular” software development, is often not achieved. But why? Why is it so difficult to learn how to build a house?
Thinking back to the metaphor, an architect has to study, it has to learn multiple years about mechanics and physics, in how to construct a house. And then there is even a differentiation between a theoretical architect and a practical architect.
As well as the differentiation, of is the architect responsible on the construction side or is he responsible on the design side.
The Bubble of Software Development and it’s consequences
Software development is a new industry, it’s not even 100 years old. And the industry is still in the bubble of “everyone can do it”. We are in the reality of switching towards AI, and how to build software only with AI.
People claim building software is highly complex and difficult. Software industry is extremely expensive. No Code and low code tools, claim to solve this complexity. Drifting away from a standard problem, we face huge complexity of adapting to a custom solution.
Looking at the airline industry. One of the first industries which had to adapt to software development, are still in the claws of the software industry. Implementing new solutions is extremely expensive, millions of dollars flowing into a system to maintain, which is already over 30 years old. Changing or adding a functionality, takes 12 to 18 months. With this numbers it becomes totally normal, why an industry is moving slow.
New solutions has to come, we don’t only see this in aviation. Look at SAP, a software which claims to be industry standard, but when you try to adapt to a custom solution, you are faced with huge complexity, which is not even maintainable. Months of expensive consultation. Months of building a solution, which is not even accepted by the users who has to work with it.
A great example is Lidl, over 20 million euros, invested into a software where they decided in the end, lets build our own.
Technology is used, which is far from the modern way of solving complex problem. What software engineers are really good at, is identifying a problem and building a highly complex solution around it. Which is not maintainable, not scalable and when the engineer leaves the company, the software is not even understandable.
A quick example how we can understand this metaphorically. It’s like a software engineer is building a house, he starts with 4 walls and a roof. Like a small shelter, like back then in the stone age. But then he realises, oh mhm a door would be nice, it keeps the wind out and I am able to walk inside. So he builds a door. But then he realises, oh mhm I can’t look outside anymore, lets create a window. And then he realises, oh mhm I can’t get fresh air, lets create a window which can be opened.
Now he has a hole in the house, now he starts thinking, what can I do with this hole. He gets himself some glass like material. And he puts it in the hole. But then he realises, oh mhm I can’t open the window anymore. So he creates a mechanism to open the window.
Great, this process probably took hundreds of years in the physical world. As we now have a house, which servers our needs. We then create a family. And we build a similar house, with our learnings directly next to the old house. A new way of extension. Great we have now two houses, which are connected. It serves our needs. Now the first harsh weather comes, our houses gets wiped out in no time.
We are required, to build a house fast. Faster than ever because we have no house anymore. This brings us again to a bad designed house as before.
A different scenario would be, we start building a more stable house, maybe out of bricks. Learned from our mistakes, we now have implemented directly our window and door.
So to speak, we now created one of the beautiful farm houses, which are still standing today. Which are hard to build, and hard to change. Trying to modernise one of these houses, cost tremendous amount of money, because nobody really knows where the pipes and or the cables are running. Not even starting to what wall is a load bearing wall.
After now understanding the metaphor, we can understand software development a little bit better. In this industry we have gone through the same or similar process in building software systems.
Old industries still suffer from this process. And the boom was starting to “we need more software developers”. But the reality is, we need more architects. We need more people who understand how to build a house.
Software houses or consulting firms, do the exact thing as the manufacturing industry is doing. They employ cheap labour. In Software its even more easy todo that, because you can do geopolitical arbitrage way easier than bringing one of these, workers and make them life in your own expensive country.
The result is, systems which were build exactly like described above. Someone started with a small solution, and then it got bigger and bigger. And then the next person came and added a new solution.
The most expensive problem
The most expensive problem, is the problem you don’t see coming.