we have internalized weights and biases about software, how long it takes to write N lines of code, how long it take to integrate A with B, and B with C, the toil that comes with changing B when it’s coupled to A which is coupled to C and D.
The cost of code duplication. The cost of writing comprehensive test suites, and changing them. The cost of coding up an ephemeral test environment.
We have internalized the cost of all of these things, and have made decisions accordingly.
These internalizations are mostly wrong now. The cost to produce some types of software has collapsed, and will continue to collapse.
The core work, that is on a pedestal still, maybe not always, but now it is. But a huge amount of work that is not critical in the sense that you can run and see its result or it is auxiliary to the core function of the software that you are building - this has collapsed.
So the weights have changed, which meanas the assessments of what should and shouldn’t be done also need to change. The value and cost tradeoffs have changed. The output expectations need to change as well.
Everything needs to change, or else you will be left in the dust by someone who is better optimized to these new conditions.
In practice, what does this look like?
I don’t think there is any excuse to have slow clunky test environments. You need to be able to spin up a relatively realistic production environment on demand and run full regression tests with your entire system. If there are multiple independent microservices, you need to figure out a way to have them glued together in a convenient way for full integration tests.
There is no substitute for this, as the cost of boiler plate drops to 0, if you do not improve on these dimensions the multiple that you are slower than your competition by will also increase.
This
Heroku: https://news.ycombinator.com/item?id=46913903,
Mid 2012 was especially bad as we were severely impacted by two us-east-1 outages just 2 weeks apart. To the extent it wasn’t already, reliability and paying down tech debt became the main focus and I think we went about 18 months between major user-facing platform launches (Europe region and eventually larger sized dynos being the biggest things we eventually shipped after that drought). The organization lost its ability to ship significant changes or maybe never really had that ability at scale.