Меня не может не радовать то, как сильно вырос онлайн в разделе Как стать программистом, поэтому я решил написать свежую статью именно в этот раздел моего блога, чтобы закрепить успех. Поговорим о том, как происходит рост от Junior ввысь/вглубь мира IT.
Абсолютное большинство приходящих в сферу IT соискателей не стремятся оставаться на позиции младшего разработчика всю свою жизнь. Их цель — как минимум вырасти до стабильного, сильного разработчика уровня middle/senior. А кто-то пойдёт выше. И именно этот процесс хотелось бы обсудить в рамках статьи. Я постараюсь приводить примеры, основанные на своём опыте и опыте моих студентов.
Trainee
В современной индустрии IT с её перенасыщенным рынком понимание между Стажёром (Trainee) и Младшим программистом (Junior) смазалось. И многи часто путают эти два понятия, что неправильно.
Стажёром может стать любой человек практически с нулевыми знаниями (всё зависит от программы стажировки, в которой он участвует). Но чаще всего компаниям интересны кандидаты, которые уже примерно понимают, как устроен мир программирования и могут написать простые вещи типа циклов и ветвлений.
Чаще всего после курсов «с нуля» выпускники становятся именно стажёрами, так как у них по сути нет коммерческого опыта. В лучшем случае они могут стать Junior-ами (но об этом ниже).
Со стороны компании стажёр — это не рабочая единица, а материал для роста, возможность вырастить себе сотрудника. Для самого стажёра — весомый вклад в будущую карьеру, так как именно здесь он получает то, что ему нужно — опыт.
Чаще всего стажировки либо не оплачиваются вовсе (что, кстати, не совсем согласуется с ТК РФ), либо оплачиваются по минимальной границе. Но в текущей ситуации на рынке я бы рекомендовал обращать внимание на любые стажировки крупных компаний вне зависимости от финансовых условий — внимание стоит уделять условиям последующего найма и того, какие преференции даёт стажировка для кандидата.
В роли стажёра Вы
- До конца оттачиваете знание базовых вещей в языке программирования.
- Получаете несколько направлений роста от своих наставников.
- Начинаете двигаться в сторону уже относительно самостоятельного программиста.
Здесь и сейчас Вам важно набить руку в написании простых вещей, чтобы они не требовали у Вас постоянного подглядывания в документацию или Google.
Обязательно узнайте при поступлении на стажировку, как описываются и фиксируются условия успешного её завершения, а также какие знания и навыки Вы получите.
Для тех, кто хочет подробнее узнать о подходе компаний к найму стажёров, есть мой вебинар.
Junior
В условиях насыщенного рынка получение позиции Junior — это уже весомый успех. Он говорит о том, что в общей массе новичков Вы смогли выделиться. Эту картину надо не только сохранить, но и улучшить. В течение испытательного срока, который в нашей необъятной Родине длится обычно три месяца, Вам нужно будет сосредоточиться на следующих вещах (кстати, как и в позиции Trainee)
-
- Изучение процесса разработки в команде. Много общайтесь со старшими коллегами и узнавайте, как принято писать код, тестировать и отлаживать его, а также — как доставлять его на Production. Здесь Вы не только узнаете, как не попасть под раздачу во время Code Review, но и обнаружите множество новых для себя вещей, с которыми Вы ещё не успели познакомиться. Не переживайте — это нормально. Скорее всего, Вам предстоит узнать о таких вещах, как Git-Flow, Docker, CI, DI и прочие модные слова. Спросите у своих наставников о том, что лучше почитать/посмотреть на интересующую Вас тему, могут ли они рассказать Вам об этих вещах.
- Изучение нового и неизвестного. Узнать слова — только начало. Нужно изучать. Не бросайтесь на всё подряд. У Вас быстро сформируется список «пробелов». Приоритезируйте его вместе с коллегами и идите по шагам, убирая пункт за пунктом тогда, когда станете разбираться в них и применять на практике.
- Делайте больше. Додумывайте. Как бы ни хотелось надеяться на то, что ТЗ будут идеальными, а заказчики — лояльными, всегда и в каждой задаче будет оставаться место для небольшого подвига. Как говорил Колосс из вселенной Marvel: «Только несколько мгновений в жизни решают, герой ты или нет». Также и в задачах — добавление некоего небольшого, но полезного функционала увеличит ценность продукта и поднимет Вас в глазах пользователей.
- Ориентируйтесь на ценность, а не на код. Да-да, код сам по себе никому не нужен и не стоит ровно ничего. Он полезен тогда и только тогда, когда логика, следующая ему, создаёт функциональную ценность для пользователей. Поэтому думайте в первую очередь ценностями пользователей, как бы ни хотелось в первую очередь сделать красивую архитектуру и создать ещё пару тысяч классов. Это не отменяет качества кода, но делает его нужным, а не «опять айтишники обновления выкатили :(«.
- Общайтесь. Именно из общения Вы узнаете, что представляет ценность. С кем это обсуждать? С владельцами продуктов (Product owners), аналитиками, конечными пользователями. Именно они расскажут о том, «что болит», и дадут Вам пищу для роста и размышлений.
- Пишите хороший код. Я специально употребил здесь максимально пространную фразу. В каждой команде свои стандарты кода, поэтому понятие «хороший код» будет варьироваться от команды к команде. Поэтому спрашивайте, общайтесь и учитесь. Именно этого от Вас ждут как от Junior-разработчика.
Моя практика показывает, что в позиции Junior специалист обычно растёт от полугода до года. Конечно, этот срок может меняться в разумных рамках, но если после года работы Вы всё ещё не чувствуете себя «в своей тарелке», стоит задуматься о качестве Вашего роста. За это время в процессе активной работы сотрудник не менее активно растёт, начинает изучать фундаментальные понятия в программировании, такие как алгоритмы, оценки сложности, обеспечение работы под высокими нагрузками, устройство выбранного языка программирования и прочее. К концу этого периода уже можно смотреть в сторону позиции Middle.
Если Вы решили изучать язык PHP, то можете взять за основу мой курс для самостоятельного изучения, который найдёте по ссылкам ниже. Он совершенно бесплатный и создан для того, чтобы помочь сделать первые шаги!
А ещё можно найти себе ментора для того, чтобы иметь возможность задавать вопросы и уточнять правильность своего пути. Сделать это можно, например, здесь.
Как понять, что я готов к позиции Middle?
Не ждите, что Ваш шеф радостно ворвётся в Ваш open-space с тортом и шампанским и поздравит с повышением. Конечно, многие серьёзные компании проводят one-2-one встречи, следят за ростом сотрудников, но зачастую многие грешат тем, что исходят из принципа достаточности: человек работает, вот и славно. Зачем платить больше?
Если Ваш руководитель не общается с Вами на тему роста, то нужно активно рефлексировать и анализировать свои навыки. Ответьте себе на вопросы:
- Сколько задач я довёл до Production за последние 3 месяца?
- Какова их ценность?
- Сколько багов было в них? Почему произошли эти баги?
- Какие были нарекания к продукту, который я выпускал?
- Сколько задач релизят старшие коллеги? (Этот вопрос совершенно нормально задать самим коллегам, чтобы понимать уровень собственной производительности, если не окажется доступа к статистике таск-трекера команды)
Если отвечали честно, то увидите сравнительную оценку себя и других разработчиков, что поможет либо вернуться к заполнению пробелов в знаниях, либо продолжить процедуру повышения.
Ещё одним неплохим инструментом являются сайты поиска работы. Нет, это не означает, что надо ездить по собеседованиям. Но на них Вы сможете увидеть, чего ожидают от разработчиков Middle-уровня в Вашем стеке и какие зарплаты платятся в этом сегменте. В принципе, и на собеседование сходить можно, но будьте готовы к тому, что текущий работодатель, мягко говоря, удивится.
В самом хорошем случае в компании есть практика one-2-one встреч. Это практика, при которой руководитель встречается с подчиненными один на один в закрытом формате и обсуждает все вопросы, связанные с рабочим процессом, без купюр. Оба могут говорить о том, что беспокоит, что радует, задавать вопросы. В таком случае рост обычно происходит гораздо проще и естественнее, так как на встрече всегда можно
- Узнать, какие знания надо подтянуть?
- Попросить дать фидбэк по работе
- Обозначить желание расти и обсудить условия роста
- Обговорить сроки роста, что немаловажно, если Вы не хотите питаться «завтраками»
Как видите, маркеров и способов роста множество. Главное — учиться и расти постоянно, без остановки.
Вот я Middle. Что дальше?
Как ни странно, дальше рост очень похож за тем лишь исключением, что качественно меняются набираемые знания. Нужно уделять больше времени смежным системам (таким как ELK-стек, Docker, Kubernetes, кластеризация и скалирование), пониманию построения архитектур. Стоит написать что-то своё прямо с нуля, без фреймворков. Вне работы, но это будет крайне полезно для понимания принципов работы выбранного стека.
В позиции Middle можно и нужно задерживаться дольше. Знаний для роста тут предостататочно, поэтому путь до Senior занимает около 2-3 лет. Конечно же, есть и более быстрые скачки, но это скорее исключение из правил.
Дальнейший рост довольно интересен. За позицией Senior открывается несколько путей развития:
- Технический. Вы продолжаете прокачивать технические навыки (hard skills). В таком случае Вы обычно вырастаете до уровня Architect или Technical Leader. Вторая позиция подразумевает большего общения с людьми, чем первая, поэтому выбирать Вам, исходя из того, насколько хочется активного взаимодействия с окружающими.
- Организационный. Часть разработчиков с ростом чувствуют свою тягу к построению процессов и уходят в менеджмент. Так, например, крайне востребованы Scrum мастера и Agile коучи, которых довольно мало на рынке. Поэтому люди с подобными знаниями и техническим бэкграундом будут очень сильно востребованы на рынке.
- Менеджерский. И снова про организацию процессов, но уже с точки зрения роста в чистый классический менеджмент. Такие Senior-ы обычно вырастают в Team Leader-ов, затем в Head of Development, а потом в CTO (Технический директор). Здесь нужны очень хорошие навыки организатора, желание строить процессы и отстутсвие боязни общения с бизнесом, коего будет очень и очень много.
Основная задача, которая будет стоять перед Вами здесь даже не про то, как расти. Она состоит в том, чтобы предельно честно ответить себе на вопрос: «А что дальше? Как я хочу расти? Зачем я буду развиваться в позиции N?». Изучайте истории разных известных представителей каждого из путей (благо, таких людей много, и они не очень-то прячутся). Это поможет Вам понять множество философских вещей относительно роста, которые точно находятся за рамками конкретно этой статьи.
Кстати, про рост в роли Team Leader-а есть отличное выступление с конференции, которое Вы можете посмотреть ниже
Резюме aka TL;DR
- Учитесь и систематизируйте знания
- Делайте это постоянно
- Чётко понимайте, зачем хотите расти
- Делайте чуточку больше и лучше, чем от Вас ждут
- Понимайте сроки и условия роста
Надеюсь, что мои скромные рекомендации будут для Вас полезны!