I thought he was trying to allure to something more.
Maybe it's time to reconcile with reality: there is more than one way to operate; there is value in more than one paradigm.
In my experience, with large projects, you get to pick 2:
Dynamic typing Development velocity Reliability
I've seen multiple large projects grind to a near halt in their development speed, and I've seen some retain development speed, but unreliably crash after various changes.
UT coverage is expensive. System tests don't catch everything. Either you fear changes, and the system rots, or you work very slowly with coverage for everything.
> Complex definitions tend to be wrong when first written down. In fact, not only wrong but nonsensical. Most programming errors are not subtle!
Static type systems will tend to find those bugs. They're not subtle!
Running the code—just once—will also tend to find those bugs. They're not subtle!
And of course naming things is a huge part of this, not just the raw syntax.
The only difference in a static world would be the error would have showed up a few seconds earlier, before he needed to run it in the repl.
I mean, the error was definitly vague from CL, but is that really because it lacks static typing that the error is vague?