Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Итак, у вас в команде появился джуниор. Звучит совсем как «у вас дома появился щенок», да и ощущаться будет так же. Он будет постоянно просить вашего внимания, гадить и заглядывать вам в глаза. Однако, джуниор – не собака, и воспитывать его нужно слегка по-другому. Задача не из простых, но вполне можно научить джуниора писать хороший код! В этом посте мы рассмотрим основные моменты воспитания молодого специалиста.
Первая встреча с джуниором
Итак, настал момент вашей первой встречи в рабочих условиях. Джуниор вышел на работу и должен приступить к должностным обязанностям. Ваша задача в этот день – играть с джуниором в прятки, ведь они это так любят! Вам не стоит водить его за ручку, показывать офис и его рабочее место. Вы ни в коем случае не должны сразу же брать джуниора под свою опеку, будто нянька. Он сам должен приложить усилия и найти вас, таким образом он проявит свой навык problem solving. Кстати, в идеальном случае рабочее место не должно быть готово, чтобы джуниору пришлось немного посидеть на ресепшене и решать задачи без компьютера.
Создание учетных записей
Разумеется, учетные записи не должны быть готовы. В идеале админ Аркадий должен выпучить на вас глаза и спросить: «Какой еще новый сотрудник? Мне никто ничего не говорил». Администраторам в принципе все нужно говорить в последний момент, чтобы не расслаблялись. Не лишним будет потянуть с созданием учеток пару недель и проверить, начнет ли джуниор сам спрашивать о них. Тем самым вы проверите его настойчивость и способность goals achievement.
Знакомство с командой
Знакомятся друг с другом только алкоголики на своих собраниях. Ваш джуниор не должен даже представлять, что за люди сидят на соседних рабочих местах, чем они занимаются, как их зовут и даже какого они пола и возраста. Джуниор должен проявить свой навык socialization и самостоятельно понять, кто работает с ним на одном проекте. Он должен сам добавиться в чат проекта, достать ссылку на репозиторий и получить права на чтение и запись. Вам же не нужен тихоня, который сам не в состоянии сделать хоть что-то, верно?
Введение в детали проекта
Думаю, вы и сами уже все поняли. По указанным выше причинам, вам ни в коем случае не стоит погружать джуниора в детали проекта. Если он проявил initiative и самостоятельно нашел нужный репозиторий, то разобраться в коде для него не составит никакого труда. При условии, что он способный, конечно. Кстати, будет полезно, если ваш проект представляет из себя огромный комок грязи с переплетенной архитектурой, чтобы и другие члены команды не расслаблялись и были в тонусе. Когда код упрощается, решения тоже становятся довольно простыми и делаются спустя рукава, а это не то, чего мы хотим. Впрочем, качество кода – это тема для отдельной статьи.
Начало работы и эстимейты
Итак, ваш молодой боец приступил к выполнению своей первой задачи. Хорошо бы ее поставить устно, но подойдет и тикет в Jira. Первое, что вы должны спросить, так это estimate. Джуниоров особенно полезно приучать к временным оценкам задач. Далее я даю вам подробную инструкцию как вести себя при оценивании:
Джуниор называет вам какое-то число. Допустим, восемь.
Вам нужно скривить рот, глубоко вздохнуть и спросить: «Что восемь?»
Слегка смутившись, джуниор вам ответит: «Ну… восемь часов»
Вам следует заметить, что надо было сразу так и сказать. А то что это за магическое число такое, восемь.
Не давая времени на контратаку, покачайте головой и скажите, что это много для такой задачи. Поделите его эстимейт на четыре и скажите, что задача рассчитана именно на 2 часа. И не больше.
Не обращая внимания на бледное лицо джуниора, уходите без каких-либо объяснений.
Такой подход настроит джуниора на рабочий лад и придаст ему настроения.
Код-ревью и разбор ошибок
Не нужно. Вы работаете в команде сильных специалистов, чей код не нуждается в ревью. Пусть джуниор к этому привыкает. Однако, скорее всего он напишет какую-нибудь чушь в своем первом коммите. Ваша задача здесь – подключиться к его бранчу, молча все переписать по уму, закоммитить и смерджить в основную ветку. Главное, не ставить его в известность – он должен сам все это заметить. То, как вы переписали его задачу, должно его впечатлить. Однако, он вовсе не должен понимать, как работает ваш код и чем он лучше его изначального решения. Вы – авторитет, поэтому всегда переписывайте код, написанный джуниором. Если он вас однажды попросит что-то объяснить, просто ответьте: «Потому никто так не пишет, Сережа. Ты еще орленок».
Менторинг
Пожалуй, самое простое, что только может быть. Наверняка у вас есть список статей, которые вы давно уже хотите прочитать? Просто делегируйте их прочтение своему джуниору, а потом попросите его в двух словах объяснить, что там было. Тем самым вы наконец-таки узнаете содержимое статьи, а джуниор просто подумает, что вы проверяете, насколько хорошо он усвоил материал.
Поддержка
Поддерживать будете друзей в баре, когда они начнут вам рассказывать о своих проблемах. А джуниор в поддержке не нуждается. У него должен быть крепкий стержень, который позволит ему однажды стать настолько же крепким специалистом. Почаще говорите следующие фразы: «почему так долго», «ну кто так пишет», «зачем тебе юнит-тесты?», «о боже», «оставь, я сам допишу». Все это будет держать джуниора в тонусе и заставлять вгрызаться в проект (и в вашу глотку).
Учите хорошим практикам
Наверняка кто-то из вас заметил фразу «зачем тебе юнит-тесты?» в предыдущем пункте. Сразу дайте джуниору понять, что юнит-тесты – это зло. Когда разработчик пишет юнит-тесты, он заявляет всему миру, что он в себе не уверен. Он буквально кричит: «Ребята, мой код не работает!». Вы хотите работать с такими «профессионалами»? Вот и я тоже. Помимо юнит-тестов, у вас не должно быть всяких новомодных CI и CD, интеграционных и, прости Господи, e2e тестов. Но все это тема для отдельной статьи.
Про мотивацию
Мотивация быть должна! Но, разумеется, не материальная. Если вы поднимете джуниору зарплату, он просто расслабится и начнет писать код еще хуже, чем в самом начале. Мотивировать нужно поступками, фразами и испытаниями. Очень полезно при всех его коллегах воскликнуть: «Б***ь, Сережа, ну что это за *****? Маша из бухгалтерии решит эту задачу лучше». Это разозлит джуниора, но злость эта будет положительной и правильной. Я бы даже сказал, праведной! Впредь ему захочется писать как можно лучше, чтобы даже Света из той же бухгалтерии не смогла сделать круче.
Если джуниор слишком любопытен
У джуниоров часто есть период «почему». В это время они заваливают вас вопросами, но каждый из них начинается именно со слова «почему». Почему класс так называется, почему метод приватный, почему база данных не монго, почему нельзя домой, почему сервис не запускается. Грамотный джуниор сам разберется во всех этих вопросах (либо найдет другую жертву). Вы можете чисто для приличия ответить на один из вопросов по вашему усмотрению, но не балуйте вашего подопечного. Пусть он проявит свой навык learnability!
Заключение
Помните, что не бывает глупых джуниоров, бывают глупые тимлиды! Если вы воспитаете своего ученика грамотно, то он будет долго и верно служить вашей компании!