In a more dynamic less-statically-typed language, when you change the semantics of a method, it doesn't break any clients or call patterns who are fortunate enough to be compatible with both versions of the semantics, so changing those clients (to update types) is useless work. Assuming you have 100% test coverage (which isn't any harder in static-vs-less-static languages, if all your tests are functional tests per YAGNI), your test suite is sufficent to tell you that you have callers that are broken by the change and need to be updated. Then it's a simple matter of finding and updatig the broken callers, which is easy because dynamic language programs are short and it is easy to know the whole program, and dynamic languages are flexible so it's quick and easy to run experiments to find the bug.
Poe'd? Maybe. I tried to represent the dynamic-language side as charitably as possible. It is a different "ethical" system than static languages