Great comment. There are no silver bullets. I am
Team static typing, but recognize how heavy of a burden would be to start a purely exploratory development in Rust or Java. It just "cuts your wings" in the name of correctness... well some times it is
useful to have the ability to start with a technically incorrect implementation that anyways only fails in a corner case that is not your main point of research.
On the other hand, as the initial code grows and grows, the cost of moving it all to a saner language grows too... discouraging a rewrite. So we end up with very complex production software that started as dynamic and is still dynamic.