Это цикл статей. Следующую можно прочесть тут

Что ожидать и как помогать расти разработчику из trainee в уверенного junior?


Уровень разработчика — то чем все привыкли меряться и то за чем все перебегают из компании в компанию.


В последние несколько лет тенденция рынка такова, что реальный опыт работы снижается по отношению к предлагаемой :: лычке::.


Эта тема меня беспокоит особенно сильно по той причине, что годы опыта все таки кое о чем говорят. Говорят они о количестве времени, во время которого ты работал работу. И чисто статистически верно то, что за m времени может произойти больше факапов и запар, чем за n, при условии что m > n. Вот и все. Об этом говорят года опыта. Это не тот показатель, по которому я буду отсеивать людей с позиций (буду если это сеньор, с 1.5 годами реального опыта), но тот, по которому я буду решать между двумя идентичными кандидатами, если не смогу взять двух.


Так вот, мой любимый тип разработчика — trainee. Это совсем начинающие ребята, не важно какой у них возраст_пол_вероисповедание, по ним с первого дня видно, горят ли у них глаза. Дальше дело техники, как говорит один мой хороший друг: "код можно научить писать и обезьяну", и мы учим… не обезьяну, конечно… а человека. Учим, рассказываем, выгоняем с работы, когда засиживаются, а они любят засиживаться, потому что интересно все. На этом этапе задача разработчика научиться работать с инструментами, понять что вода мокрая, огонь горячий, а стендап от слова "стоять". В каждом языке есть типовое задание. В руби — Хартл и его ака "твиттер". В javascript все дико любят туду листы и всевозможные реализации под тот фреймворк с которым ты работаешь. Если он может это написать по step-by-step гайду, он подходит на трейни. Когда он сможет написать его без step-by-step гайда, можно поговорить про джуна. Я специально сделал здесь упор на step-by-step, потому что не важно сколько у тебя опыта, ты будешь бегать на MDN смотреть порядок параметров в reduce и забывать базовые конструкции.


Дальше Junior — и тут нет резкого перехода. Он плавный. И именно поэтому у нас в компании сделано разделение на Junior Beginner/Junior/Junior Strong. Но это этап, на котором вы можете сразу увидеть, какова культура в вашей команде, я закончу этой мыслью раздел про Junior.


На уровне Junior человек уже умеет писать код, но этот код не делает ничего более, чем решает бизнес задачу здесь и сейчас. И это нормально, это то с чем предстоит работать техлиду, ментору или отделу обучения. На этом этапе надо объяснять человеку жизненный цикл бага, почему важен селф-тестинг, как меняется стоимость бага в зависимости от этапа, на котором нашли.


Помогать ему задумываться и разбираться в том, с чем имеет дело большую часть времени. То есть если он пол дня шлет запросы из браузера на бекенд, то разберался, что такое запрос и почему браузер шлет 2 запроса, когда у тебя бекенд на другом Origin. Он начинает осознавать процессы в разработке. Постепенно замечает, насколько он ошибается в оценках.
Это тот этап, когда стоит поиграть с человеком в скрам покер и сделать top-down оценку задачи, даже если у вас это не принято в команде.


Ему стоит научиться формулировать мысли, аргументировать позицию, для этого надо начать указывать на вещи, которые неочевидны. Почему я сказал про скрам-покер и top-down. Это отличный способ показать человеку нюансы, на которые вы обращаете внимание из-за уже накопившегося опыта, какие детали вы проясняете, какие спеки вам уже не кажутся расплывчатыми и то КАК вы это делаете.


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


Чем раньше разработчик научиться вниманию к деталям и способам коммуникации по задачам со стейкхолдерами, тем проще ему будет дальше. Потому что проективные коммуникации и разбор непонятного — наш сознательный способ пихнуть себя в неизвестность и получить +1 новый кейс в свой опыт.


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


Что еще важно, так это обучиться базовым навыкам дебага приложений, понять как найти изменения, несколько сессий парного программирования с джуном и вы передадите ему навыки примитивных, но столь "гениальных" для джуна техник типа instance.freeze, чтобы отловить мутацию объекта. Ему нужно научиться использовать весь этот мультитул, не всегда эффективно, но он хотябы должен знать, что есть отвертка и не надо забивать шурупы молотком.


Заканчивая описывать Junior`a, вернемся к культуре команды. На этом уровне человек будет впитывать культуру коммуникации команды, если вы шеймите тестировщиков и считаете их бесполезными, но не отдаете себе в этом отчета, взгляните на джуна и вспомните, был ли он таким пол года/год назад. Вел ли он себя так же по отношению к этим людям? Если "нет" в негативную сторону, то вот вам и звоночек. Он научился этому у вас и вашего окружения. Он еще не может четко сказать, почему что-то не важно, но уже это шеймит. Тем более что все мы уже знаем, каждый этап в разработке приложения важен и какой бы ни была команда, без тестировщика они выпустят продукт хуже или медленнее и дороже.


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

Я дал этой рубрике название work&dev fun(damentals). Потому что работа и разработка — это весело. Но надо учиться фундаментальным вещам. Не важно софт скилы это или хард скилы.
Все, далее описанное, это тот опыт который я приобрел. Он ограничен моим пониманием вещей, происходящих в IT. Процессов, которые тут происходят. Решений, которые принимаются. Это понимание позволило мне из Trainee в в одного их лидов Full-stack направления. Параллельно создать отдел, который специализируется на техническом развитии и мониторинге эмоционального состояния сотрудников, для того, чтобы сделать их работу комфортной и обеспечить их конкретным пониманием того, что именно от них ожидают в компании и проекте.

Комментарии (2)


  1. Serrakurra140icq
    28.11.2019 18:21

    Крайне любопытная статья. Однако очень любопытно узнать о переходах с Beginner джуна, до джуна, а после и до джуна с подписью «Strong»?)


    1. llait Автор
      28.11.2019 18:34

      Есть определенный ассесмент.
      До мидла мы учим людей писать код и обучаем навыкам оценки, промежутки небольшие, и каждому даем свой план развития под проект. По нему и проверяем и повышаем. Дать человеку план на полтора года нельзя, тк он может потерять свою актуальность, но вот уже на 6 месяцев достаточно просто + ежемесячные встречи позволяют курировать движение и обеспечивать рост