Yes, because people don't "not often ship code in statically typed languages". It's obviously wrong.
Clearly type systems live on a spectrum with varying degrees of sacrifices made, with each sacrifice compromising some ability to check for correctness, but giving back some other advantage, improved developer productivity being one possibility.
It is not a question of static typing or not – it is how complicated of a type system do you really need? Even Grug agrees that dynamic typing is not sufficiently complicated, but maybe a static type system that falls somewhere around the middle of the spectrum that helps catch the most grievous of errors (and provides popup magic!) with a sprinkling of automated testing to fill in the gaps where the type system falls short is best for the vast majority of programming situations?
But is it wrong? Based on your stated experience, not even you seem to accept type systems that force formal proofs – instead accepting lesser type systems that make decent tradeoffs between catching some problems (and providing popup magic!) without bogging you down in every little detail.