The opening discussion in the article about how the US takes forever to accomplish transit projects and does so few contrasted with Spain's rapid and frequent construction reminds me of the maxim "if it hurts, do it more often"[1].
The way to get better at something is to do it more often. This is a lesson software developers learned from the agile movement. Do hard things more often. Experts in every field become masters at their craft by practicing it for many thousands of repetitions over tens of thousands of hours.
Rather than trying to make success more likely by approaching difficulty with excessive caution and planning, expect that, at first, things will go wrong, but have rapid feedback to learn for the next attempt. Rather than a big bang integration at the end of a software development project, integrate daily/hourly/continuously.
The US builds automobile-centric transportation successfully at a prodigious rate. American civil engineering is really good at it because they do so much of it, all the time.
This is spot on. If you want to build cheap anything, you need a whole cluster of organizations in close competition, with a lot of collective muscle memory and experience, doing that thing again and again and getting better and better at it. That's how any industry develops. It's that collective experience and network effects that you want to develop. Doing things infrequently as one-off projects by a company with no competition means that each one is going to be crazy expensive.
Honestly this is something I worry about with respect to outsourcing- people seem to not understand that once an industry leaves, it's not just a matter of bringing the capital back, it's that collective human skill that is the biggest thing you lose. The generation that used to do those jobs passes away and it's gone forever.
The way to get better at something is to do it more often. This is a lesson software developers learned from the agile movement. Do hard things more often. Experts in every field become masters at their craft by practicing it for many thousands of repetitions over tens of thousands of hours.
Rather than trying to make success more likely by approaching difficulty with excessive caution and planning, expect that, at first, things will go wrong, but have rapid feedback to learn for the next attempt. Rather than a big bang integration at the end of a software development project, integrate daily/hourly/continuously.
The US builds automobile-centric transportation successfully at a prodigious rate. American civil engineering is really good at it because they do so much of it, all the time.
[1] https://martinfowler.com/bliki/FrequencyReducesDifficulty.ht...