Вглубь или вширь?
Кем быть? Узким специалистом или бойцом широкого профиля? React-Developer или Software Engineer без указания подробностей?
Есть разные школы и подходы. Пожалуй, никто не сможет сказать тебе, какая из них правильная. Но я смогу. И так, пристегни ремни, и поехали.
Специализация
У специализации есть очевидные плюсы. Специалистом стать проще. Проще в том смысле, что выучить все об IT не так-то быстро. Тупо из-за объёма материала. Сильный фулл-стек разработчик затратит на своё обучение в разы больше времени, чем хороший Angular Developer. И дело тут не в том, что Ангуляр простой, а в том, что знать нужно одну технологию и немного понимать сопутствующие инструменты и задачи.
Кроме того, в индустрии постоянно появляются новые подходы и вещи, а значит у тебя есть возможность вскочить в первый вагон отправляющегося поезда прямо сейчас. Представь, хуяк и через пол года ты — самый опытный инженер в мире. Просто из-за того, что хайп ещё только-только начинается, а ты уже написал десяток статей и собрал кучу апвоутов на стэковерфлоу. Риск понятен, технология может не зайти и умереть, и твоя специализация превратится в пшик. Напоминает мир стартапов, да?
Как правильно поставить на нужную технологию и не ошибиться? Очень просто, найди правильного гуру и прислушайся к его совету:
И конечно же ты ошибёшься, так как гуру не умеет предсказывать будущее, иначе он бы не в твиттере пиздел, а на бирже играл бы.
Кстати, картинка выше — шуточный ответ на этот твит:
Второй риск, связанный со специализацией — ты не знаешь, как быстро тебя заебёт эта область или технология. Грустно будет осознать, что ты ненавидишь разработку для микроконтроллеров на ассемблере, а больше ты ничего и не умеешь.
С другой стороны, глубокие знания в какой-то области — это не только однообразная работа, надоевший стэк, но и деньги. Деньги и слава.
Ты наверняка шутил про COBOL-разработчиков, которые пилят свои банковские штуки.
Это правда смешно. До тех пор пока ты не узнаешь, сколько получают эти ребята. А ещё им не страшно увольнение. COBOL-кода в финтехе завались, а людей, знающих технологию в мире становится всё меньше и меньше. Банки готовы озолотить этих стариков.
Знать бы, что будет новым коболом через 30 лет, да?
Специалист широкого профиля
Если ты не хочешь рисковать и углубляться в одну область, то очевидным решением может стать широкая специализация. Романтика фуллстек разработки. Хорошие и глубокие познания в слабосвязанных областях: компиляторы, embedded code, QA, DevOps, Machne Learning, управление процессами, банковские технологии и тонкости работы iOS. Такой человек, обременнённый годами дрочки компьютер саенс в университете, конечно не пропадёт. Он сможет сделать современный SPA, а после банкротства того стартапа без проблем найдёт работу в качестве SQL DBA.
Что ж, путь этот сложен, долог и опасен. В конце-концов, ты можешь оказаться попросту тупым и не потянуть такой объём знаний. Это не стыдно и не плохо. Так бывает, и большинство в индустрии такие. С другой стороны, награда велика. Все двери открыты: от фриланса до позиций СТО в крупных компаниях.
Пожалуй, такая специализация хорошо описывает профиль идеального кандидата в компанию типа Google или Amazon. Знает всё, умеет всё, решит любые задачи, стоит, как небольшая команда на аутсорсе.
T-shaped engineer
Не люблю этот зашкварный термин из рекрутерского словаря, но я не смог подобрать приличную аналогию на русском языке.
Суть в том, что специализироваться можно по Т-схеме, где вертикальный штрих в букве соответствует отточенным навыкам в одной области, а горизонтальный штрих символизирует широкий охват более поверхностных знаний.
Бэкенд-инженер, который может поправить css файл, не испугается настроек линтера, и в курсе, как поставить npm-пакет. Этот же инженер понимает идеи DevOps и сможет при необходимости наладить деплоймент или починить мониторинг. Да, все это он будет делать со словарём, и будет не так эффективен, как в своём уютном бэкэнд коде.
Инженер такого рода будет востребован многими компаниями. Да, практически всеми, но блистать он будет в компаниях среднего размера. Там где у него будет возможность влиять на смежные отделы.
Кстати, специалист широкого профиля, задержавшись на инженерных должностях скорее всего превратится в T-Shaped профессионала. Чисто из-за особенностей работы твоего мозга ты не сможешь поддерживать глубину и актуальность знаний по всем фронтам.
К выбору вертикальной составляющей своей специализации нужно подходить с умом. Хреново будет поставить на дохлую лошадь, но эта ситуация лучше, чем в случае с узкой специализацией. Ведь ещё одним бонусом такой структуры знаний является возможность горизонтального перехода в индустрии.
Сегодня ты мастер Vue.js, который хорошо понимает происходящее в веб-разработке, а завтра, при необходимости ты сможешь начать работать с Нодой или Реактом. Понимание принципов работы компьютеров и веба помогут тебе сместиться в бэкэнд или начать работать над десктопным приложением. Такой дрейф позволяет развивать E-образную структуру. Как бы опуская новые ветки вглубь.
Этого преимущества лишён молодой React-разработчик. Со смертью его любимого реакта он окажется никому не нужен. Лично у меня уже есть своё маленькое кладбище дохлых технологий, с которыми я работал. Это случается, и случается нередко. Будь готов!
Если ты позиционируешь себя, как TechnologyName-инженера, избегая работы со смежными технологиями, ты загоняешь себя в угол.
Итоги
Узкая специализация поможет быстрее набрать "вес" в сообществе. Специализация в редкой области позволяет конкурировать с меньшим количеством инженеров на рынке труда (Стать известным Clojure-разработчиком гораздо проще чем, пробиться наверх в Java мире). Но и сам рынок гораздо скромнее и ты рискуешь оказаться невостребованным, если в твоём регионе закончатся рабочие места такого типа.
С другой стороны те, чей бизнес зависит от выбранной тобой технологии, будут готовы сделать для тебя все: перевезти тебя в любую точку мира, решить все твои проблемы и завалить тебя деньгами.
Широкий специалист всегда останется на плаву, со временем сможет переключиться на позиции не требующие глубоких знаний. Архитектору или CTO не нужно уметь настраивать веб-пак и не стоит забивать себе голову флагами компилятора С++. Такой человек ценен как ходячая энциклопедия.
T-shaped специалист готов брать на себя разнообразные задачи, и он прекрасен в своей прагматичной универсальности. При этом он не боится задач из смежных областей. Кроме того, он более реален, чем широкий специалист. Ведь по-настоящему разбираться во всём практически невозможно.
Нет по-настоящему верной стратегии, и на мой взгляд стоит комбинировать.
В начале карьеры не вредно попробовать разные области и технологии. Тем самым расширив свой кругозор и обезопасив себя от кончины конкретной технологии или компании. Если ты хочешь развиваться по инженерной колее, а не уходить в менеджмент, то стоит начать постепенно углубляться в какую-то конкретную область. Уже там, обладая разнообразными знаниями и навыками ты сможешь сделать себе и имя, и репутацию. Ты будешь постоянно развиваться как специалист. Кроме того, в середине карьеры возможности скакать среди технологий и задач будет всё меньше и меньше. Молодому инженеру простят частую смену проектов и компаний. Та же ситуация у взрослого специалиста вызовет неприятные вопросы и придётся юлить и врать.
Кстати, подобная классификация не обязательно относится к технологиями. Аналогично дела обстоят и с более широким делением (веб разработка или мобильная, финтек или гейм дев). Но подробнее про доменную специализацию мы поговорим в следующих выпусках.
Понравился текст? Расскажи о нём друзьям. Зови их в телеграм-канал или твиттер. Не стесняйся рассказывать о нас в других соц сетях.
И не забывай оставлять фидбек. Ставь лайк. Любой из трёх!
МS.