Хабрахабр

[Перевод] Признаки настоящих программистов-сеньоров и методы их выслеживания в дикой природе

Существует большой разброс в уровнях квалификации разработчиков. И то, что называют «сеньорностью», часто ничего не говорит о реальных возможностях программиста. Что делает некоторых разработчиков объективно лучше других? Что выделяет их из серой толпы?
Если у программиста есть пять, десять или даже пятнадцать лет «практического опыта» — это не обязательно гарантирует то, что он является эффективным и продуктивным сеньором. На самом деле — это даже не значит, что он вообще может так называться.

Но и молодым сеньорам тоже не легче. Конечно, существуют и такие несчастные, из-за которых за успешными сеньорами, которые обычно немолоды, закрепилась плохая репутация. Однако существуют определённые черты и знания, общие для разных программистов-сеньоров.

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

Автор материала, перевод которого мы сегодня публикуем, говорит, что хочет рассказать о некоторых признаках, которые помогают отличить настоящего программиста-сеньора от программиста с «сеньорностью».

Парадигмы программирования

Принципы SOLID, объектно-ориентированное и функциональное программирование — это три парадигмы программирования, три методологии написания чистого кода, которые составляют значительную часть концептуальных подходов, стоящих за созданием программ.

Это означает, что программирование — это нечто большее, чем набор неких грамматических правил. Многие программисты-джуниоры в ходе работы упускают одну важную вещь, которая заключается в том, что программирование — это язык. Парадигмы программирования помогают сформировать определённую позицию относительно того, как код воспринимается, и того, как он передаёт информацию. Это — средство общения, явление, которое может быть структурировано множеством способов.

Но подобные тексты нельзя поставить на один уровень с романами Стивена Кинга. Писать код может кто угодно — точно так же, как кто угодно может написать сообщение в мессенджере или короткий обзор книги на Amazon. Это делает парадигмы похожими на сюжетные структуры, которым следуют авторы художественных произведений. Парадигмы программирования действуют как направляющая сила, стоящая за кодом, который пишут сеньоры. Разработчики-сеньоры понимают их на глубоком уровне, до которого джунам и мидлам ещё только предстоит дойти. Все языки пронизаны формулами.

Способность создавать

Когда мы впервые приходим в мир циклов for и конструкций if else, мы задаём вопросы и пытаемся найти ответы на них в виде кода, который можно откуда-то скопировать и вставить в свой проект. Уровень понимания этого кода — это то, чем характеризуется квалификация джуниоров, которые только приступили к работе, и начинающих мидлов.

Они могут создавать что-то новое и без особенной помощи всемогущего Google. Сеньоры, однако, идут дальше копирования. Они могут видеть, или, по крайней мере, предвидеть нештатные ситуации. Они знают о том, что делают, они понимают то, как их решения воздействуют на результаты их работы. Они понимают проблемы своего кода и знают о том, как с ними бороться.

Они глубоко понимают все те инструменты, которыми пользуются. Если им что-то неизвестно — они восполняют пробелы в знаниях, серьёзно разбираясь в неясных вопросах, не ограничиваясь лишь их поверхностным изучением. Мир кода выглядит в глазах сеньоров не так, как в глазах джунов или мидлов.

Объективная критика

Все отдают предпочтение тому, что они знают. Джуниоры и мидлы демонстрируют сильную тенденцию к тому, чтобы делать акцент на их собственном опыте, а не на том, что относится к анализируемому ими коду. Если они высказывают некое предложение, или если они оценивают что-либо — основой всего этого являются их личные предпочтения. Это — стиль написания кода, способы именования сущностей, методы мышления.

Всё это — часть процесса профессионального роста. В этом нет ничего плохого. Это развивает у разработчика нейтральный взгляд на вещи. Для того чтобы достичь настоящей объективности суждений, программисту нужно побывать во множестве ситуаций и самому увидеть, как нечто, неприемлемое в одном случае, в другом может оказаться наилучшим решением некоей проблемы. Есть лишь способы, которые эффективны в определённой ситуации и при определённом сценарии развития событий. Нет единственно правильного способа писать код. Они готовы принять то, что их код может и не быть неким «самым лучшим» кодом, и то, что он может быть подвергнуть улучшению. Программисты-сеньоры это понимают.

Они способны увидеть общую картину проекта, оценить возможность возникновения совершенно неожиданных проблем. Сеньоры часто становятся продуктивными контролёрами качества кода, указывая на беспорядок, который устраивают в программах их коллеги и отмечая слабые места архитектуры приложений. В центре их внимания находятся не инструменты, а результат. При этом они не привязаны к какому-то стилю написания кода или к какой-то парадигме программирования.

Разница между хорошей программой и работающей программой

Разработчики создают код, главная задача которого — запуститься. Некоторые из них останавливаются на этом, и считают, что работающий код — это всё, что им нужно. Другие идут немного дальше и стремятся к тому, чтобы код был бы не только работающим, но и качественно написанным. Лучшие разработчики — это те профессионалы, которые в процессе работы редактируют и переписывают наш код. Они могут и согласиться с применением какой-нибудь неудачной конструкции, но как только у них возникнет возможность её исправить — они это сделают. Такие разработчики понимают разницу между хорошей и работающей программой.

Но хорошие разработчики-сеньоры видят ситуацию глубже. Большинство руководителей интересует только работоспособность программы. Они знают о том, как совместить потребность бизнеса в работающих программах с качеством кода. Они понимают скрытую стоимость технического долга и способны распознать код, который указывает на наличие в системе глубинных проблем. Это позволяет им находить баланс между сдачей проектов в срок и включением в них дополнительных возможностей, о которых заказчики проектов вспоминают далеко не в самом начале работы.

Они умеют создавать и то и другое. Широта их знаний, понимание фреймворков и языков программирования, делают их экспертами в вопросе нахождения разницы между программами работающими и программами качественными. Это даёт настоящим сеньорам возможность находить креативные решения проблем в самых разных ситуациях.

Способность учить

Посредственный учитель излагает. Хороший учитель объясняет. Выдающийся учитель показывает. Великий учитель вдохновляет.
Уильям Артур Уорд

У настоящих разработчиков-сеньоров есть страсть к технологиям, которая вдохновляет их менее опытных товарищей, помогая начинающим становиться профессионалами высочайшего класса.

У сеньоров есть способность сжато и понятно излагать эти идеи. Программирование, само по себе, это набор неких идей. Способность сеньоров переносить код между разными интерфейсами и средами демонстрирует истинное понимание выбранного ими языка программирования.

То, что называют «опытом работы», может выглядеть в резюме программиста как перечень выполненных им проектов, или как время, которое он трудился в разных компаниях. Для того чтобы кого-либо чему-либо учить, необходим определённый уровень владения предметом. Но возможность учить других — это навык, который доступен лишь тому, кто по-настоящему владеет своим ремеслом.

Итоги

Настоящий разработчик-сеньор — это многогранное существо, которое иногда, если речь идёт об областях, находящихся вне сферы его основной деятельности, может выглядеть как джун или мидл. Но сеньор обладает мощной базой в области философии программирования.

Это позволяет им осваивать новые технологии быстрее, чем некоему «усреднённому» программисту. Однако вышеприведённые особенности сеньоров — это то, что присутствует в их личностях и в их профессиональных знаниях. Они способны смотреть на код без предрассудков и суеверий. Часто сеньоры — это люди, которые способны охватить одним взглядом общую картину происходящего.

При этом он не будет представлять собой разрушительную силу, которая пытается втиснуть всё, с чем сталкивается, в прокрустово ложе собственного опыта. Настоящий сеньор будет вести своих товарищей по работе к привычкам создания чистого кода. Он стремится учиться и учить на ошибках, а не унижать менее опытных коллег. Этот человек спокойно воспринимает ошибки сослуживцев, да и свои тоже.

Главная особенность таких людей заключается в том, что они по-настоящему умеют решать проблемы, и в том, что они способны мыслить в долгосрочной перспективе. Разработчик-сеньор может быть человеком любого возраста, он может прийти из любой отрасли информационных технологий, его «практический опыт» может исчисляться любым количеством лет.

Уважаемые читатели! Если вы занимаетесь подбором кадров в сфере информационных технологий — просим рассказать нам о том, как вы «выслеживаете» сеньоров.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть