42

Ответ на пост «Больше его никто не видел»

Ответ на пост «Больше его никто не видел» IT, Картинка с текстом, Программист, Программирование, Типизация, Менеджмент, Ответ на пост, Длиннопост

Я почитал комментарии под этим постом и честно говоря меня разочаровало такое количество задротов не понимающих прелести динамической типизации.

Для начала проведу краткий ликбез:

Статическая типизация с одной стороны увеличивает время разработки так как при внесении каких-либо изменений тайпчекер начинает падать из-за несоответствия типов и вам приходится проходиться по коду и изменять типы во всей цепочке вызовов.
С другой стороны - она уменьшает количество багов, так как тайпчекер гарантирует что переменную типа X используют именно как переменную типа X - вы не сможете скажем случайно запихать строку в переменную где должно быть число или передать числовой ID в функцию которая ожидает объект.

По сути типизация - это такая система предварительной формальной верификации которая позволяет отловить баги во время компайлтайма до того как они протекут в рантайм.

---

А теперь представьте себе галеру где есть два разработчика: Вася который использует язык со статической типизацией и Петя который использует язык с динамической типизацией. Они работают над двумя идентичными проектами и им дают идентичную задачу: Например взять поле куда раньше можно было добавить только число и добавить возможность передавать туда строку.

Вася со своей статической типизацией после добавления возможности принимать строку сразу столкнётся с кучей проблем из-за того что остальные методы в его программе ожидают именно число. Ему придётся проходиться по всей цепочке вызовов куда может попасть значение из исходного поля, менять тип с числового на алгебраический ЧИСЛО|СТРОКА, вполне возможно он заметит логические ошибки связанные с тем что некоторые функции не имеют осмысленного сценария для обработки строк и Васе придётся переписывать часть функционала.

Петя в свою очередь может просто исправить валидацию поля разрешив ему принимать строку и со спокойной душой закрыть таску.

Вы можете возразить: "но ведь он как и Вася может столкнуться с ситуацией когда некоторые функции не имеют осмысленного способа обрабатывать строку и пытаются обработать значение как число!". Безусловно, может. Но Пете из-за отсутствия тайпечекера наличие таких ошибок не помешает выкатить задачу в прод. А из-за того что подобные ошибки зачастую вылезают в модулях которые на первый взгляд с изменениями Пети никак не связаны менеджер не сможет понять что новые баги вызваны именно Петей - в его глазах это будут баги которые появились "сами по себе".

В итоге с точки зрения менеджера:

Вася - ленивый программист который несколько дней делал простейшую таску, а затем стал не нужен потому что программа работает без багов.

Петя - хороший работник который за несколько часов закрыл таску и пошёл закрывать новые таски с багами.

Угадайте кого менеджер повысит, а кого - нет.

---

Именно из-за непонимания таких тонких психологических моментов ботаны Васи дрочат свои программы на C++/Идрисе/Хаскелле в НИИ за 40 тысяч в месяц, а Пети живут в ЛА и пишут новые ЖС фреймворки на деньги лоха-инвестора за 10к долларов в месяц.

Показать полностью
Отличная работа, все прочитано!