Ниже предлагается полушуточная типология программистов, которые работают в больших корпорациях, банках и т.д. с самописными и с вендорскими системами, что в целом иронично называют bloody enterprise. Кстати, переводить эту идиому следует не «кровавый» энтерпрайз, что не имеет никакого смысла, а «проклятый» энтерпрайз — горы кода, написанного на разных языках, под разное системное ПО, на разных БД, куча различного оборудования. Внедрять, поддерживать и развивать системы в больших корпорациях сложно, именно из-за огромного количества взаимосвязей и разнородностей систем. Спасает этих разработчиков только то, что в корпоративном мире, в большинстве случаев, толерантность к ошибкам высокая и большинство ошибок сходят с рук (при условии быстрого исправления).
Первый тип — быстрые программисты. С такими сталкиваешься редко. Это эрудированные и увлеченные люди, обычно занимающие высокое положение в иерархии разработчиков (тим лиды или что-то около). Основная особенность — высокая скорость написания кода и способность быстро осваивать новые технологии. Думаю, для корпоративной среды это ценные сотрудники (высокая производительность, без оглядки на качество, приветствуется). Качество кода у таких программистов не всегда высокое, чаще наоборот. Иногда код сложный. Один раз я просматривал код за одним из таких специалистов и он меня поразил одной особенностью. Это был код высококлассного спеца, но выглядел он как набросок — широкими мазками была сформирована структура, но вот детали были иногда просто не реализованы. Обычно код таких программистов приходится допиливать и доводить до приемлемого качества, но главное преимущество остается: код очень быстро появляется и сразу в больших объемах. Работая с таким кодом, чаще всего находишься в растерянности от широты мысли и количества творческих идей автора.
Второй тип — педанты. Код этих программистов пишется со средней скоростью, обычно он качественный в плане надежности и отсутствия ошибок, но часто бывает перегружен количеством рассмотренных кейсов, проверок и т.д. Код также сложный — со сложными для понимания структурами и алгоритмами, от него нет чувства легкости, он тяжелый и очень трудно воспринимается при чтении. Один раз я сталкивался с кодом квалифицированного педанта, который практиковал очень длинные строки — по несколько сотен символов: вызовы методов с большим количеством параметров, каждый из которых сам был вызовом других методов или конструкторов. Править такой код чрезвычайно сложно (трудно понимать для чего сделаны те или иные вещи), а главное страшно — всегда есть опасность что-то зацепить и все сломать.
Третий тип — расслабленные. Часто это начинающие программисты, или программисты, которые еще не погрузились в тему или не хотят (не могут) погружаться. Эти программисты производят тип кода, который часто вызывает удивление при чтении (WTF). В нем много странных решений, много ошибок использования API, структурных проблем. Плюс в том, что кода обычно немного и он не очень сложен для понимания. Проще всего бывает его переписать сразу или по кускам. В таком коде могут быть ненужные проверки, которые были вставлены по непониманию или по перестраховке. Править код таких программистов иногда даже приятно — повышаешь самооценку, чувствуешь себя умнее автора.
Четвертый тип — догматисты. Код таких программистов четко следует какому-то стилю (догме, правилам), причем сами правила часто совершенно удивительны — например в Java это может быть избыточное обязательное использование final, где нужно и где не нужно. Их код при чтении вызывает раздражение именно своим стилем оформления, который почему-то часто не соответствует общепринятым стандартам. Такой догматизм мало что дает заказчику, но часто очень бесит коллег по команде.
Пятый тип — скупые программисты. Чаще всего пишут медленнее всех, но код качественный, чаще всего не вызывающий проблем при сопровождении и содержащий малое количество ошибок. Кода мало (как раз для выполнения поставленной задачи), он не блещет какими-то идеями и абстракцями, часто очень упрощенный, можно сказать, написанный «в лоб». Это хороший вариант для задач, где нужно точечно поправить какой-то небольшой кусок, причем максимально подстраховаться от регресса. В корпоративном мире такие программисты чаще всего недооцениваются, поскольку работают медленно.
Шестой тип — технологисты. Код изобилует примерами применения технологий к месту и нет. Особенно тяжелые случаи наблюдались в мире J2EE, когда ими создается куча прослоек и абстракций, чаще всего в случаях, где вообще не предполагается получить от них пользу для бизнеса. Если такие программисты занимают ведущие позиции в команде, то их подход может привести к краху весь проект. Я участвовал в таком начинании, где код сразу писался под все доступные на тот момент реализации EJB, с дико сложными решениями для учета всех различий. Также в этом проекте зачем-то сразу писался свой Look-N-Feel для Java, что очень затратно, а смысла имеет крайне мало. В Java8 код таких программистов перегружен использованием Stream API и прочих нововведений.
Седьмой тип — программисты начальники или программисты-заказчики. Совершенно безобидны, если пишут и сопровождают свой код сами. Я слышал про трейдеров в каком-то банке, которые понаписали себе кода на Haskell (в других местах на R) и самостоятельно решали все возникающие проблемы. Головная боль начинается, если такой код передается вдруг на сопровождение профессиональным программистам. Чаще всего, такой код проще переписать заново, что обычно не очень приветствуется авторами (там уже все написано, только нужно немного поправить и все). Такой код также случается у начинающих программистов, которые вдруг написали много кода, который ушел в продакшен, а сами они перешли в другое подразделение или вообще в бизнес. Переписать много кода сразу сложно, а поддерживать его, а, главное, следовать исходной архитектуре, очень сложно, а иногда просто неприятно.
ссылка на оригинал статьи https://habr.com/ru/post/671040/
Добавить комментарий