I really don't buy it at all. First of all dynamic languages can be (and often are) strongly typed, I would argue Ruby is much more strongly typed then C with all it's type punning shenanigans.

If you want to see robust dynamic languages can do, again I would look at Erlang. Far more robust than anything you can throw at me about static typing. Duck typing just makes more sense for OOP.

All this complexity exists in static languages to implement what duck typing can do, and they do it in a manner that is incredibly less powerful and come up with ugly hacks like templates or if-type-then-cast to overcome the mess.

Unfortunately C++ somehow won over Smalltalk and Java and by extension C# duplicated the poor designs in their languages and because of it, I had to waste hundreds and hundreds of hours of my life in taxonomist meetings where the same two opinionated people duke out their perfect idea for an object model for every stupid feature where I could have been programming.

Dynamic language community wasn't helping either by implicitly saying that their languages aren't systems programming languages and acting totally apathetic to performance, but the JS wars helped a bit to show that dynamic languages can be pretty damn fast. So I'm hopeful.