I have been working in IT for 20 years now, and perhaps I'm just jaded.<p>Throughout my entire career everyone has been talking about reducing complexity and increasing speed of development. But what has happened? The opposite.<p>At a place recently, having a bunch of microservices all connected over the network ("distributed monolith", mostly written in Java), for example, you now have to worry about turning your internal data structures into JSON, worry about deploying all these components separately, getting the development environment for each one set up on your computer, etc. You also have to worry about idempotence and retrying requests which fail due to network connections etc. Vs. just calling one Java function from another.<p>Who makes these decisions? The architects and senior engineers. What are their objectives, if we're truthful? Them getting payrises and not getting fired. What are the the things that might cause them to not get payrises or get fired? Juniors replacing them and driving salaries down, or new seniors coming onboard and them no longer being the "stars". Having an incredibly complex architecture, which only they know, benefits them. So if they benefit from complex architectures, and they also get to make the decisions about which architectures get used, we shouldn't be surprised that complex architectures get chosen.<p>People talk about simple architectures, but actually it was never really about creating simple architectures. The incentives are not set up in such a way that simple architectures would result.