Я вот вообще не понимаю аргумент "на статике сложнее переделать". Это чушь собачья, мне на статике проще переделать ибо не надо вспоминать все тысячи мест где что-то сломается. Нужно вспомнить пару мест всего, если семантика меняется. И тестами покрыть эту пару мест куда проще.
На мой вгзляд, вообще есть некое заблуждение насчет динамики.
Тезис: с динамической типизацией разработка сложнее, чем со статической.
Создавая код на языке с ДТ, вы думаете, что вам проще писать код, так как любой ваш синтаксически правильный код принимается интерпретатором, а ошибки типизации вам не видны, пока вы не запустите свой код. Да и в этом случае вы увидите только часть проблем; а часть останется еще на более позднее время. И почему-то этот "второй этап" отлова ошибок в рантайме ощущается как отдельный, не связанный с написанием кода, и поэтому его сложность не вкладывается в сложность разработки; скорее - это ощущается как отладка. И поэтому сторонники динамической типизации утверждают, что им очень легко писать код; однако, они не учитывают всех трудозатрат. На самом деле, "второй этап" - та же самая часть разработки функционала, потому что если код некорректно работает, - значит, вы ничего не сделали, вы не доработали, и неважно, что он запускается. Ведь от него нет толку.
В то же время, в статически типизированных языках компилятор очень больно бьет за ошибки типизации прямо с самого начала. Создается ощущение, что программироавть сложнее, так как для получения того же самого результата приходится вкладываться именно в написание кода, приходится исправлять эти ошибки прямо сейчас, а не когда-нибудь потом. Но это правильно, потому что это и значит - реализовать фичу.
Конечно, есть еще логические ошибки, но они есть в программах на любых языках, поэтому мы их сюда не относим.