Антон Шевчук // Web-разработчик

Куда идёт сеньор? // PHP

Мой доклад про развитие Senior разработчика на ThinkPHP#13 таки зацепил комьюнити, и я решил закрепить «успех» и оформить мои размышления в данной статье. Статья получилась достаточно объёмной и практически не привязана ни к PHP, ни к какой другой технологии, так что думаю будет интересна достаточно большой аудитории.

Но для начала…

Кто такой сеньор?

Вот это интересный вопрос, и возможен холиварный ответ ;)… Только мне не хочется идти этой тропой, скользко, заплюют, затопчут, так что я сознательно оставлю только самую суть:

Сеньор — разработчик с опытом работы в команде более 8-ми лет, программер до мозга костей, девелопер, который решает проблемы, человек, чьё хобби стало работой, он(а) получаете истинное наслаждение от процесса программирования.

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

Из вышеописанного утверждения следует, что можно встретить совсем юного Senior разработчика, которому 28-мь лет, и это при условии, если он устроился на работу в компанию на третьем курсе ВУЗа (или даже раньше)!

Вот сейчас у «двадцатитрёхлетних сеньоров» может бомбануть…

Тут и там

Тут-и-там

За столько лет разработки можно изучить практически все тонкости определенного языка программирования, и вполне естественно засматриваться на смежные языки программирования, и да – для PHP Senior разработчика нормально знать JavaScript, хорошо React/Angular, отлично NodeJS. Это естественное желание — расширить свой кругозор, не сдерживайте себя — проверьте свой багаж знаний, есть ли там закладочки других языков программирования?

А вот тут вопросы уже для PHP Senior разработчиков: — А вы уверены, что покорили все высоты PHP? Вы копали вглубь языка? А вот эти хорошие статьи о «внутренней кухне» PHP, вы уже читали?:

Нет, это не скрытая реклама компании MailRu, просто они увлекаются переводом очень хороших статей для PHP разработчиков

Эксперт

Диппер

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

Таких ребят называют по разному: эксперты, гуру, адепты, евангелисты, быть одним из них не зазорно

Чтобы далеко не ходить, вот вам наглядные примеры для подражания:

  • Илья Кантор — человек и пароход — без него JavaScript-разработчиков на наших просторах было бы на порядок меньше
  • Александр Макаров — разработчик Yii фреймворка, внёс львиную долю в популяризацию сего фреймворка в Украине и России
  • Махиал Боднарчук — разработчик Codeception — благодаря его усилиям качество кода во многих тысячах проектов на PHP ощутимо выросло

Пожалуй, ачивку «эксперта» я могу и себе примерить за вклад в популяризацию jQuery библиотеки на страницах своего блога и за учебник «jQuery для начинающих» ;)

ТехЛид

Финес Флин

Качайте свои скилы дальше и выше, и вы сможете стать техлидом в своём проекте, команде или отделе — тут не паханное поле возможностей по саморазвитию. Если вас данный ярлык озадачивает, то рекомендую прочитать статью Я техлид. Что делать?.

Быть техлидом всё же в кайф, вы продолжаете оставаться разработчиком, и ваши обязанности всё так же будут включать разработку, но не только, вот упрощенный список ваших обязанностей:

  • Написание кода
  • Ревью кода
  • Рефакторинг
  • Настройка эффективного процесса разработки (CI, CD, etc.)
  • Оценка трудоёмкости проектов и тасков
  • Технические консультации

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

Если же вы до техлида отдела дорастёте, то тут вам ещё ответственности и обязанностей насыпят, и на ваши плечи ляжет:

  • Повышение технического навыка разработчиков
  • Наработка готовых решений
  • Участие в собеседованиях
  • Введение новых сотрудников в отдел
  • Утилизация времени простоя разработчиков

Вроде кажется не так много, но поверьте, первое время найти свободное время будет ой как не просто.

Архитектор

Ферб Флетчер

На DOU есть целая серия статей «Карьера в IT», и в частности там описана роль Software Architect — с большинством тезисов я соглашусь, с частью поспорил бы, но в любом случае рекомендую к прочтению ;)

Если же высказывать ИМХО, то для меня архитектор это тот человек который не лезет ручками в реализацию, а объясняет разработчикам задуманное так, что по итогу заглянув в исходный код он будет полностью счастлив.

Дилберт - Evil Architect
Говорят, в природе существуют те, у кого на табличке кабинета значится «Software Architect», но в Украине таких совсем мало, да и в моем практике роль архитекторов доводилось выполнять техлидам….

Наставник

Сенсей Шифу

Тема наставничества-менторства-итд сейчас активно развивается в IT среде, если вкратце — стать учителем для одного-двух человек не так сложно, мало того, большинство Senior разработчиков уже ведут подопечных по тернистому пути IT :) Лично я рекомендую начинать с малого — заведите аккаунт на Stack Overflow, подключитесь к gitter, потом заведите блог и по чуть-чуть оттачивайте своё мастерство на доверчивых читателях.

Для техлидов/архитекторов/наставников порекомендую книгу «Чистый код» Боба Мартина; и совсем неважно, что она про Java — для меня как PHP разработчика не составляло труда читать листинги кода.

ТимЛид

Шкипер

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

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

Если кто таки выбрал этот путь, то и для вас найдется книжка — Дж. Ханк Рейнвотер «Как пасти котов. Наставление для программистов, руководящих другими программистами».

Фрилансер

Дейл

У фриланса есть несколько неоспоримых плюсов:

  • Свобода перемещения
  • Свободный график
  • Заработок

Но при этом есть и ряд минусов:

  • Свобода перемещения — зачастую превращается в работу на дому, что не всегда играет в плюс производительности, как вариант многие выбирают co-working центры
  • Свободный график — планирование рабочего дня не самая сильная сторона разработчика, а если говорить про неделю, месяц, год?
  • Заработок — все риски связанные с деньгами теперь полностью на вас, включая и больничные, и отпуска и т.д. и т.п.

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

Моя ачивка «фрилансер» уже давно поросла мхом, свой выбор я уже сделал.

Бизнесмен

Утиные истории

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

Существует подходящий сюда термин — «систематическая ошибка выжившего» — вы слышите только удачные примеры старта компаний, а о скольких вы не слышали?

Уйти из IT

— Ты можешь уйти из IT, но IT из тебя не уйдёт.

Эй, Арнольд

Почему люди уходят из IT? Для тех кого я знаю — ай-ти был одним из возможных вариантов развития, и люди шли по нему до тех пор, пока не принимали решения что-то менять в своей жизни и пойти по иному пути — искусство, спорт, фотография, кулинария…

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

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

Человек

— Создаём реальности и даём смыслы словам — Анонимный интернационал.

Minions

Посмотрим на ваши исходные данные:

  • IQ выше среднего
  • доходы в разы выше среднего
  • возможности на порядок выше среднего

Очень хорошо, на вскидку с такими данными вы можете спокойно стать депутатом местного совета :) А если серьезно — начните реализовывать себя в социуме, можете стартовать с общественно-полезных работ над Open-Source проектами, благо среди них есть такие, которые непосредственно влияют на нашу жизнь — iGov.org.ua (у них даже есть путеводитель для начинающих).
Если же отвлечься от разработки — вы многое сможете, главное не бояться выйти за границы своей зоны комфорта, мало того — вы сможете её расширить, и поможете окружающим сделать тоже самое, и поверьте — жить станет в таком мире куда как комфортней.

Совсем неожиданно — сошлюсь на ководство Лебедева — § 172. Зона комфорта

Вместо вывода

Представьте себя водителем в потоке машин, вы двигаетесь, развиваетесь, изучаете новые технологии. Скорей всего вы двигаетесь вместе с потоком – так комфортно вам и окружающим, окружающим вас в проекте, в компании, в вашем комьюнити. Иногда вы видите припаркованные на обочине «уставшие» машины – кто-то остановился, остановился и отстал в развитии. А вот кто-то вас обгоняет, на новенькой спортивной машинке, на новой технологии которую вы уже полгода как собирались начать изучать, возможно вы даже психанете, и обгоните пару-тройку машин — ох не зря же слушали webinar, пригодилась таки технология N в вашем проекте. Вот в соседнем потоке, на соседней «галере», замедлилось движение, но вы не снижаете скорость, вы едите дальше, и наблюдаете в кювете ту самую спортивную машинку — кто-то поспешил внедрить непроверенную технологию в проект, рискнул и прогорел, хотя похоже это просто недостаток опыта не позволил справиться с управлением. А вы продолжаете свой путь.

Аналогии беспощадны, и выводы я буду делать отталкиваясь от данной аналогии. Изучайте новые языки и технологии — это возможность в нужный момент пересесть в новую машину и продолжить свой путь. Прокачивайте себя и свои скилы — станьте экспертом, расскажите другим как им стать лучше и быстрее, станьте ведущим в вашей колонне, ведите за собой свою команду, станьте их проводником. Если же вы одиночка по натуре, и захотите притормозить, или вовсе устроить офроад — тут тоже есть свои и плюсы и минусы — трезво оценивайте свои перспективы. Если же чувствуете в себе силы — стройте новые дороги, да только никогда не останавливайтесь!

Из всего этого запомните одно — не останавливайтесь, постоянное движение и развитие — это и есть жизнь.

P.S.

Просмотрев статью, ответьте на простой вопрос — сколько лет моему сыну? :)