Юноша бледный со взором горящим, или как правильно готовить джуниоров

Никто и никогда еще не рождался с сертификатом SCJP в зубах. У любого программиста есть определенный период становления и заматерения, который как правило начинается еще в школьные годы на уроках информатики (но может мои данные и чуть устарели). И вот первая (ну или вторая, третья - у кого как) работа - это один из этапов вышеуказанного периода, который в армейских реалиях именуется “духом”, а в более интеллигентных местах - “junior developer”. Так уж получилось, что мне пришлось повидать и “поучить” довольно много джуниоров, все нижеперечисленное - небольшая выжимка банальных ошибок, которые допускаются как менеджментом по отношению к джуниорам, так и в другую сторону.

Эй-ты-сбегай-за-водкой

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

Плюсы:

  • сразу видно принцесс от программирования, которые не царское это дело. Причем если это начинается уже на этапе прохождения испытательного срока - то лучше сразу попрощаться. Дальше будет только хуже.
  • можно определить стрессоустойчивость товарища в боевой обстановке
  • замечательно видна способность даже в самом тупой и нудной деятельности проявить изобретательность и энтузиазм
  • наконец, можно прикинуть к чему у поциента наблюдаются бОльшие склонности. Весьма вероятно что лучше всего получается например QA-ориентированная деятельность, да и вообще программировать товарищ пошел “потому что все побежали - и я побежал”.

Минусы:

  • перегибы с натурально “сбегать за водкой” и “сварить кофе”. Как правило наблюдаются в сплоченных мужских коллективах при условии наличия отслуживших товарищей.
  • зацикливание на тупой работе, которая не дает возможности джуниору проявить себя. Если человек будет год писать тесты - он скорее всего научится писать тесты, не более того.
  • нецелевое использование ресурса - это когда программисту “наджави” выдают блочную верстку на CSS. Я сам это видел ©.
  • потеря интереса к работе - как следствие постоянных странных задач, которые говно, говно и еще раз говно.

За Родину, за Сталина!

Этот замечательный момент наступает, когда контора хочет расшириться, но бабла на нормальные зряплаты нет (или контора находится в депрессивном регионе, где нормальный сантехник - уже редкость). В этом случае набор сотрудников идет по принципу “лучшие из худших” - ни про какие там алгоритмы или хотя бы шаблоны проектирования речи уже и нет. Там скорее все сводится к “eclipse открывал? проект создать умеешь? годен”. После чего бывшему грузчику, а ныне - джуниор жабадевелоперу - выдается боевая задача и делай что хошь. Здесь опять же есть

Плюсы

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

Минусы

  • код будет говно, с гарантией. Даже то, что было ок - очень быстро превратится в говно. Я в частности видел живой проект, в котором было ТРИ реализации одной и той же функциональности, написанной разными людьми. Причем каждый последующий из них не трудился понять, а что ж там такое - просто брал и тупо переписывал все по-своему.
  • количество багов будет расти пропорционально степени “джуниорности” человека. Некоторые вещи все ж приходят только с опытом (например то, что создание на каждый чих нового соединения к базе может и ок в лабораторных условиях, но на продакшене - чревато жопой уже при трех активных пользователях).

Я ведь взрослая везде

Как правило, с возрастом человек начинает чуть более трезво и критично оценивать свои способности. Джуниоры же, в силу своего возраста (по бОльшей части), неспособны мыслить самокритично, отсюда случаются такие явления как

  • это не я! - это когда причной некорректной работы кода выступает все что угодно, но только не ошибка в коде джуниора. Возможна корелляция с переполученными в нежном возрасте пиздюлями за разбитую чашку.
  • здесь все правильно - когда отсутствие тестов, или вообще хоть какой-то документации к чудо-инкарнации макаронного монстра в сорцах поясняется Непоколебимой Уверенностью В Своей Правоте.
  • скрижали завета - код копипастится откуда-то еще с минимальными дополнениями и непониманием глубины глубин. Обычно тут уже Уверенность В Правоте Старших Товарищей, даже если старшие товарищи код этот писали в угаре чада кутежа после парочки горячих таек (пользуясь случаем, передаю привет ребе).

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

Таких не берут в космонавты

Прямая противоположность предыдущему пункту. Довольно часто конторе выгодно держать человека на джуниорской должности - просто потому что через какое-то время (если у человека есть мозг) он начинает приносить пользы больше, а платят ему столько же. И если человек не идет к начальству с вопросом “хочу больше денег” - то как правило никто не будет озабачиваться тем, чтобы повышать зряплату. Особенно в провинции - ну правда же, зачем платить больше, он жеж доволен, да? У таких программистов есть какой-то комплекс неполноценности по отношению к старшим научным сотрудникам, выражающийся в “ну вот чувак тут уже 2 года работает и получает X денег, а я получаю X/2. У меня моральная травма случится если я попрошу столько же денег, я же тут всего год работаю”. От этого комплекса надо избавляться, и чем быстрее - тем лучше. Пословица наглость - второе счастье не на пустом месте организовалась.

А теперь некоторые выводы и заключения.

В целом, если компания нанимает себе джуниора - она должна четко (не, даже чОтко) представлять, как она его будет растить. То есть в программе причинения пользы должны быть определенные курсы кройки и шитья, а также наличие учебно-специальной литературы по нужным дисциплинам. При этом жуниор должен отдаваться под кураторство не абы кому, а человеку, одаренному некоторыми педагогическими способностями. Мои педагогические способности, увы, были ограничены 45-сантиметровым чорным двухголовым фаллоимитатором - однако, как правило, коммиты после доброго слова, подкрепленного ударом вот тем резиновым хуем по столу - были намного чище и красивее, чем просто после доброго слова. Далее, компания должна по-возможности ясно представлять, что должен знать и уметь джуниор, чтобы переквалифицироваться в мидла. Причем эти штуки должны быть формализованы и озвучены на этапе выкатывания офера - это, как минимум, даст джуниору примерное понимание что от него может потребоваться в будущем. И последнее, нужно понимать - случай “1 олимпиадник заменяет 10 жабопрограммистов” - не работает. А вот случай “1 нормальный программист заменяет от 3 до 10 джуниоров” - работает почти всегда. Поэтому если хочется сэкономить на нормальных зряплатах двум чувакам путем найма 10 парней с улицы - вы по итогу потратите сильно больше денег на переделывание всего того ада, что напишут джуниоры.

Джуниорам же, в свою очередь, при разговоре по-душам с сотрудниками HR - нужно задавать вон все те вопросы, которые написаны чуть выше, а также применить известный тест Джоэля. Ну, и учится, учиться и еще раз учиться, как завещал дедушка Ленин.