Короче расскажу историю одну)
Я люблю ФП и всякие разные языки. Решил я как-то сделать пет-проджект, думаю какой язык взять, взял ReasonML (уж больно у окамля экосистема дерьмовая, а тут нода, тыща библиотек итд).
Сел писать, пишу обработчик реквеста на регистрацию пользователя, там полей 5. Короче описал структуру, которая должна прийти. А потом ещё для каждого поля пришлось писать валидацию. А потом ещё были там загвоздки с типами ошибок.
Короче продолбался я с этим пару дней и понял что именно в данном контексте, я делаю очень много лишней работы.
А потом взял кложу, на вход мапа, провалидировал спекой, отдал дальше, обратно как респонс вернул мапу. Когда мало, ошибиться сложно, работало как часы.
Свои проблемы в этом подходе тоже есть (главный вопрос, на который я не нашел пока ответа: нужно ли в каждой функции, которая работает с твоей мапой, делать одну и ту же проверку спекой), но так всё-таки легче. И каждый выбирает тот подход, который лучше сейчас, в данный момент)
Да, это классическая история пересаживания с языка на язык, можно рассказать точно такую же о переходе с любого языка/технологии на любой другой.
На постнауке есть видео, я сейчас не смог найти. Но кратко: там пересказывается история об испытуемых, которым давали задачи о переливаниях кувшинов разного объёма. После первого инсайта, и нескольких подобных задач найденный метод настолько запоминался, что последующие даже более простые задачи решались таким способом. В качестве издевательства даже давали набор кувшинов, где уже было требуемое количество, и чать испытуемых всё равно использовало закрепившийся метод.
Я сам себя часто ловлю на этом искажении. Поэтому, конечно без опыта хотя бы в месяца три, делать выводы обычно опасно.
Особенно если параллельно продолжаешь старыми инструментами пользоваться