Maybe it's one of those people who think that software engineers like to give themselves more work and headache just because, and can't imagine there's something other than his own experience?
But whenever I participated in this decision, it was under heavy scrutiny by multiple layers of tech and corporate leadership, and done only because it was the best way to solve our problems.
Look at the amount of complexity that micro-services has gotten banks like Monzo into; over 2,000+ and they are happy with it. [0]
An example of bad practices in software engineering which is just only for engineers to persuade their managers around increasing complexity for a increase in salary.
[0] https://monzo.com/blog/2022/05/26/humans-who-can-rpc-securin...
I also don't think he's arguing for carefulness at all - he's saying that if it wasn't for the free money, engineers would be forced to move faster and break more things to make quick cash. Understandable from business investor perspective, but has nothing to do with careful engineering. He's basically saying "you're so careful I am not making my money, fuck all that and deliver already".
Ensuring implementation details don't get mixed up is indeed nice in some ways, but cuts both ways: it makes upgrading core libraries harder in case of security issues and such.
Another time an unrelated change of another team created a security issue because they improperly used a singleton class from our team's code, and our code became vulnerable because of that. That one was caught during security approval, fortunately - we'd be fucked if it went from CI straight to prod, or if they tested only the changed parts.
It's not just about CI. It's about integration testing, user acceptance testing, security approval, etc. If your system goes from CI directly to production then yeah, maybe you don't need microservices that much - but there are still benefits.
Make the intuitive jumps yourself.
Not saying it's always the best approach - as I mentioned, where I worked it was always under heavy scrutiny and chosen only if it was the best approach, which wasn't always.
It is one of the many ways for a VC funded company to quickly run out of money.
Given that companies such as Uber and Monzo proudly report that they have thousands upon thousands of micro-services with other startups copying that due to the micro-services hype, I can only see that as a way to introduce more problems such as more operational costs and significant complexity to engineers.
Microservices was indeed a ZIRP idea taken to the extreme in many startups believing they could scale like Google, except that they could not afford to and most of them either bankrupted themselves or are still losing hundreds of thousands a month on this idea and are cutting down on the micro-services fad to save money.
They will continue to be used, but their proliferation into contexts where they are not the best tool (MongoDB as a shining example) was very much a part of the ZIRP environment (the underlying reasons are numerous).
https://books.google.com/ngrams/graph?content=microservices&...
We can debate what DHH really means when he says microservices. Distributed systems are obviously a lot older than the term microservices. But I think he's talking about systems that compromise many services that don't obviously map to hardware or organizational boundaries, which was the original reason you'd split a program up across multiple independent servers. I have to admit I don't recall encountering that trend before 2011 or so. If you take an app written in the 2000-2010 era e.g. Jira, they're all going to be either monoliths or apps loaded into Java app servers.
Software systems on mainframes were comparable to what we call serverless today - having more external interfaces (like HTTP servers) running on a computer would waste resources, there was one common external interface that invoked code on request based on configuration, and that code delegated heavily to specialized systems - since there wasn't even enough program memory and loading from disk was slow. Having multiple layers of backend systems was normal. Queues and batch job processing was usual too, and frontend systems usually provided precalculated data only, transactions were processed through the night.
Monoliths were actually the "cool new thing" started in late 90s and perpetuated by Java, PHP, Python and Ruby devs later on, they claimed it's easier to develop and deploy. Many people saw it as a conflict between corporate and startup software development practices - the boring engineers in suits always talking about service specifications and requirements for months VS the cool hackers that don't care and develop directly on prod server FTP to deliver a feature over the weekend. JIRA was one of these cool hacker startups.
I don't think the hackers were completely wrong and delivering quickly has value, but it's much more nuanced than "ZIRP bad because ZIRP made microservices", see also my other comment there: https://news.ycombinator.com/item?id=40334281
What have you experienced that led to your conclusion that ZIRP -> bad decisions?
A clear example is with any of the numerous "high profile" VC-funded ventures. You can spend a lot of time and money over-engineering things, because you are not (and neither your boss or his boss and so on) involved in a feedback loop that is tightly coupled with the making of "real" money.
Your actions have no real consequences on the business unit as a whole, and no one is holding you to it. What tends to happen is it gets filled with "dreamers" and "schemers." Both who, rather than contributing to the health of the business, erode it for their own ends. Without there being a "tether to reality" so-to-speak, their actions no longer have to face reality a la profitability.
Generally, the consequences of this are many and I do not wish to enumerate on them (but I will drop these without going into any painstaking depth: organizations that are built primarily around key players' career interests, products made to that end, and even day-to-day choices that in the grand scheme of things mean nothing, but something as simple as choosing Redis as a primary relational database, all reverberate).
This is just my very sloppy attempt at putting intuition into words, but this is a pattern of varying magnitude that always emerges whenever money is detached from merit.
This happens in all sorts of personal and business contexts. Whenever the fruits of whatever labor are detached from its process, the less likely the processes used to attain and maintain it are "sound," sustainable, and so on.
Think of a lottery winner: he has just received a large sum of liquid cash, but he most likely neither has the ability to hold onto it or the know-how to grow it (much less make the same amount again). His decision-making and skillset is utterly detached from his gains. That sort of thing is only honed through a tight feedback loop.
The same can be seen with engineers who have only resided in corporate behemoths: drop them into a startup and they will likely flounder.
There is a much larger discussion to be had about human incentives, but I hope that you are able to make the intuitive jump yourself.