Мое определение разработчика-сеньора

1
2411
views

Перевод статьи Майкла Хоффмана «My Definition Of A Senior Developer».

Кто такой разработчик сеньор

За время своей карьеры разработчика я сотрудничал со многими другими разработчиками. Некоторые из них только начинали стажировку, для других это была первая работа после окончания вуза, у третьих за плечами были уже годы опыта (бывало, что стаж и за 10 лет переваливал).

Раньше, в начале своего карьерного пути, я спрашивал себя, кто такой сеньор и как я могу получить этот тайтл. Я думал, что это завязано на стаже, т. е., проработав больше трех лет, я получу это звание автоматически.

Теперь, когда у меня уже есть опыт сотрудничества со многими другими разработчиками, мое понимание тайтла «сеньор», наконец, выкристаллизовалось.

Вот какие действия/поведение позволят вам стать сеньором (по моему мнению):

  1. Страсть к своему делу.
  2. Быть «решателем» проблем.
  3. Изучить фундаментальные основы своего языка программирования и фреймворков.
  4. Быть чьим-то наставником и самому иметь наставника.
  5. Постоянно быть в курсе изменений в отрасли.
  6. Покидать свою зону комфорта.
  7. Отстаивать свое мнение.
  8. Быть общительным.
  9. Фокусироваться также и на soft skills.

А теперь давайте рассмотрим эти пункты подробнее.

Страсть к своему делу

Большинство остальных пунктов будет соблюдаться автоматически, если вы увлечены своим делом. Я думаю, стать хорошим разработчиком можно только любя разработку. Это также подразумевает, что нужно выбирать технический стэк или специализацию, в которой вы сильны (или станете сильны).

Конечно, нужно изучать и то, что выходит за рамки вашей специальности. Ваша цель — стать Т-специалистом. (Здесь рассматривается буква «Т». Вертикальная черта символизирует глубину знаний в конкретной области, а горизонтальная – способность сотрудничества со специалистами в других областях и соответствующие знания, – прим. перев.)

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

Быть «решателем» проблем

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

Изучить фундаментальные основы своего языка программирования и фреймворков

Учеба обязательна для разработчика-сеньора

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

Например, многие люди пользуются Angular CLI, но при этом не знают всего того, что происходит «за сценой». Или используют Angular с TypeScript, но не могут прочесть код JavaScript в объединенном минифицированном коде. В целом, чтобы изучить основы, вы можете пойти следующим путем:

Читать книги по основам программирования

Я бы посоветовал труды, ставшие классикой: «Clean Code: A Handbook of Agile Software Craftsmanship» или «The Pragmatic Programer». В этих книгах вы найдете базовые шаблоны, руководства и лучшие методы написания хороших программ.

Погрузиться в свой язык программирования

Что касается веб-разработки, то здесь нужно оттачивать мастерство в JavaScript. В конечном итоге ваш браузер будет запускать именно код JavaScript (даже если этот код написан с помощью Angular на каком-нибудь другом языке программирования вроде TypeScript). Поэтому вам нужно понимать, что за код выполняется. Знание языка также важно для анализа определенного функционала, реализованного в вашем фреймворке, так что вы должны уметь читать низкоуровневый исходный код JavaScript.

Для изучения JavaScript я советую почитать «JavaScript: The Good Parts».

Отточить навыки пользования фреймворком

Здесь все то же, что и с изучением языка программирования. Погрузитесь в продвинутые механизмы, используемые в вашем фреймворке. Например, для углубления знаний по Angular я могу порекомендовать блог Angular In Depth.

Изучить вашу IDE / редактор / командную строку

Работайте как можно более эффективно, используя сочетания клавиш, плагины, команды. Если пользуетесь Visual Code, обратите внимание на мою статью «How I Increased My Productivity With Visual Studio Code».

Изучите систему контроля версий

Я главным образом работаю с Git и могу посоветовать бесплатный электронный учебник Pro git.

Быть чьим-то наставником и самому иметь наставника

Необходимо иметь наставника

Я считаю, что вы можете называться «сеньором» только если кого-то учите и при этом сами у кого-то учитесь.

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

Не бойтесь не быть совершенством во всех отношениях. Всегда найдется кто-то лучше вас в каком-то деле. (Почитайте также о синдроме самозванца).

Как наставлять других:

  1. Будьте терпеливы и не судите других из-за недостатка у них знаний.
  2. Давайте возможность другому человеку высказываться, а сами активно слушайте.
  3. Как разработчик-сеньор, показывайте путь к успеху, который может быть достигнут.
  4. Уделяйте достаточно времени на предложения помочь (если в этом есть нужда).

Постоянно быть в курсе изменений в отрасли

Я советую использовать для этого такие каналы:

  • Twitter
  • YouTube
  • Подкасты
  • Конференции
  • Блоги
  • Митапы
  • (Онлайн-)курсы

Покидать свою зону комфорта

Зона комфорта

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

  • Вы боитесь говорить на технические темы перед большим количеством людей? → Толкните речь на конференции или митапе и освойте это дело.
  • Не любите писать бэкенд-код и интересуетесь только фронтендом? → Изучайте бэкенд-технологии. Если вы поймете «другую» сторону, это пойдет вам только на пользу.
  • Стараетесь на трогать ваш конвейер непрерывной интеграции и доставки, поскольку не понимаете его, а другие разработчики более опытны в этом деле? → Посвятите время изучению основ, чтобы вы могли обходиться собственными силами и не зависеть от других разработчиков.

Отстаивать свое мнение

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

Для обеих сторон более интересно, если есть живое обсуждение технического предложения. Это может помочь архитектору получить новые впечатления, а команде – активно влиять на решения.

Быть общительным

Выступайте на конференциях

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

Я бы также рекомендовал начать создавать собственный бренд и дать людям возможность подписываться на вас:

  • Заведите сайт, где будут представлены ваши проекты
  • Используйте такие каналы, как Twitter, Facebook, YouTube или Instagram, и информируйте своих подписчиков об интересных темах.
  • Начните вести блог и размещайте в нем технические статьи.
  • Старайтесь выступать на конференциях.

Фокусироваться также и на soft skills

Важно уметь писать код, но не менее важно уметь объяснять технические вопросы не-технарям, например, клиентам. Вы должны уметь понятно рисовать архитектуру или описывать словами. Кроме того, вам нужно уметь распределять свое время, расставлять приоритеты и работать с задачами максимально эффективно.

Заключение

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

Конечно, это только мое мнение. Если у вас есть собственное определение разработчика-сеньора – поделитесь в комментариях!



1 КОММЕНТАРИЙ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here