When developers take shotcuts or decrease the quality to gain time, they will cause a technical debt. By doing nothing and letting the system age, the technical debt is growing too.
In a legacy system, what is it that you spend absolutely most time on? I would say, understanding code and finding out where to do a change. Most of us have been in the situation that we spend hours or days looking for exactly one single line that would be changed in a million line code base.
While working with domain-driven design and event-driven development, I've every now and then stumbled over the event streaming platform named Kafka. When asking what it is, I've not fully understood. I've also been warned that it should only be used for very specific cases.
Are there any good reasons to not continuously work with a system’s architecture? I don’t think so.
When I've tried to learn more about functional programming, I've always felt that something is missing. There is a lot focus on the functions themselves, but less on where to put them in a structure.
From my perspective, micro services (either compiled together or completely separated) is the only way of making a system survive over time. Even the most modern, high tech technology eventually gets old-fashioned, and if we don't want to completely rewrite the whole system every 20th year, we have to split them into smaller units.
I found it rather common that developers have only a vague idea of what business logic is. I also sometimes find it hard to describe it myself, even though I've spent many hours of my career working with it.