воскресенье, 16 октября 2016 г.

Инкапсуляция новичка в команду и наследование обычаев



В чужой монастырь со своим уставом не ходят: когда он у вас, вы можете не советовать ему пить, а когда он у меня, я советую ему...
Писемский. Люди сороковых годов. 3, 15.

Так какой же должен быть устав Вашего монастыря чтобы новичок, только что покинувший стены учебного заведения, или решивший сменить вид деятельности человек, или просто «сханченный спец», принял его как свой и мало того начал его пропагандировать.

“Безуставные” отношения

Работая в ИТ-сфере, часто сталкивался со случаями, когда пришедший в команду новобранец попросту не принимал общепринятых норм команды и делал что хотел. Причина самая распространенная одна — отсутствие некоего негласного устава как такового. В итоге команда — это ведь окружение и коллектив единомышленников. Хорошо если в данном коллективе есть устоявшиеся традиции и формы не “сосуществования”, а именно гармоничной жизни.
Основные споры команды, если её так можно назвать, касаются не только подхода к решению конкретной задачи в проекте, но и к самому распределению задач. Там, где нет порядка, не будет продуктивности и в итоге каждый будет городить свой собственный дом, который хочет он. Начинаются шатания по выбору стека разработки, вечные споры “на чём пишем и как делаем”. Как итог работа разваливается, рушатся сроки и вскоре “команда” перестает существовать.

Манускрипты, заветы, традиции

Итак, вы решили заложить те самые принципы работы вверенного Вам коллектива в некие негласные правила и обычаи. Есть 2 направления данных заветов:
Профессиональные
Неформальное общение
К профессиональному можно отнести мануалы по настройке рабочего пространства, все возможные описания процессов протекающих в рамках рабочего времени. Туда же относятся и мини-статьи как “мы деплоим на бой”, “где у нас тестовая, препродакт и продакт живут” и прочие темы. Как правило такое хранится в каком-нибудь Confluence или любой другой базе знаний. Ведут такие базы 3 специалиста разных направлений:
1. Менеджеры проектов или системные аналитики. Обычно документации к проектам.
2. Senior-разработчики. Стек разработки, где чего лежит и как с этим жить.
3. Руководитель подразделения. К кому обратиться в компании в целом, описание всяких карьерных лестниц, грейдов и так далее.


Общие советы

Если с профессиональными мануалами более или менее всё понятно, то как быть с атмосферополагающими частицами коллективной жизни? Не писать же документы о том когда у нас корпоратив или вылазка в очередной паб в базе знаний компании. Универсального способа легко ввести человека в коллектив нет. Тем более, что все люди разные, а ИТ-шники зачастую всё же интроверты. Бывают случаи, когда человек считает, что оно ему и не очень-то надо, он ведь код писать пришёл.
Для начала, от вас как от лидера требуется провести следующие простые шаги:
провести экскурсию по компании;
провести welcome-тренинг;
познакомить нового работника с коллективом;
составить посильный план работы с указанием таких сроков сдачи, чтобы новый работник мог все выполнить заранее без особых усилий;
проводить индивидуальную работу с новичком по разбору ошибок, чаще повторять фразу: «Не ошибается тот, кто ничего не делает».

Личный опыт

Расскажу какой механизм ввода в команду есть на вооружении у меня. Пока работает и сбоев не давал.
Когда новый член команды уже знаком с коллективом добавить его во всевозможные сообщества команды. У нас это группа в WhatsApp. Так как на обеде мы играем во всевозможные игры от Мафии до Покера предложить сыграть с командой. Эти игры заметно раскрепощают и позволяют познакомиться с коллегами не только как со специалистами, но и увидеть их неформальную сторону.
Так же очень полезны совместные перерывы на чай с печенками. Неформальная часть общения так же важна, как и общение по рабочим моментам.
Дальше-больше. У нас есть традиция ходить 2-ю и 4-ю пятницу месяца в паб (аванс и зарплата как вы уже догадались). Об этом заранее договариваемся в нашей группе мессенджера. Что говорить: умеренное употребление легких спиртных напитков или просто напитков в неформальной обстановке снимает не только стрессы, но и некие рамки офисной работы.
Не менее важны так же корпоративы, но не те, которые проводит вся компания. Тут имеется ввиду вылазки на базы отдыха, на покатушки(сноуборд, лыжи) — поверьте, встают даже те, кто боялся этого всю жизнь.
Прогнав однажды цикл насыщенной командной жизни за год на следующий год те, кто уже через это прошел захотят это оставить. Далее заимев единомышленников, полюбивших «правила коллектива», не составит труда рассказать новичку как это круто и здорово.

Относитесь к команде как ко второй семье и её «домочадцы» никогда не захотят вас подставить в работе или покинуть дом. 


Использована картинка с сайта: digitaloctober.ru

пятница, 30 сентября 2016 г.

Как отучить puppy-разработчика гадить в коде? (Trash story)

Введение.

Прочитав небезызвестную книгу Ханка Райнвотера “Как пасти котов”, я пришёл к мысли, что возможно эта книга идеально подходит для выгула уже воспитанных обитателей “фауны программистов”. Однако, что делать с только что окончившими ВУЗы новичками?
Воспитание новоиспеченного разработчика(недопрограммиста) очень схоже с воспитанием щенка, который пока не понимает куда справлять нужду и как не гадить дома.

Появление Junior-разработчика в команде требует времени и дополнительных сил для того, чтобы привить хорошие привычки и навыки. Одной из самых важных привычек является научить его не  валить кучи косячить в коде. Однако не всем удается привить сие, и разработчик начинает постоянно пачкать код в проекте. В последствии может возникнуть ряд трудностей, с которыми необходимо немедленно бороться.

Если вы желаете избавиться от этой проблемы навсегда, тогда вам стоит узнать:
  1. Что может побудить разработчика начать писать плохой код?
  2. Как быстро приучить Junior’а писать чистый код?
  3. Как правильно наказывать провинившегося и надо ли?
  4. Как себя вести, если после код-ревью сотрудник не хочет исправляться?

Почему новичок гадит в коде
Неопытный девелопер, которого вы взяли на работу может и не догадываться, что гадит в коде. На первых месяцах пребывания дома большинство разработчиков находятся в режиме карантина из-за неопытности и делают коммиты только в отдельные ветки проекта. Поэтому для маленького программиста становиться вполне привычным писать не качественный код и коммитить его в строго отведенное место, где ничего не сломается. Когда вы начинаете вводить новичка в основную ветку проекта, он может весело играться и не кодить так как надо вам.
Важно помнить, что культура кода молодняка (как мочевая система у щенков) еще недостаточно развита. Маленький программист не может выдерживать 8-часовые интервалы в потоке. Поэтому не дождавшись очередного ревью, щенок может сделать не одну кучку или лужицу.
Другой причиной может стать недостаток внимания. Бывает так, что вы хорошенько замотивировали Junior’а утром и оставили его одного на целый день. Желая выразить протест, он может ни с того, ни с сего наделать лужу в самом простом месте. Таким способом он выражает недовольство своим наставником, показывая, что не желает оставаться долго в одиночестве.
Если в вашей команде подросток-разработчик, который приучен регулярно проходить ревью и пишет уже без лажы, вдруг начинает “портить коврик”, обратите внимание на две предполагаемые причины. Скорее всего, ваш сотрудник заболел. Очень часто у программистов, которые занимаются отвратным для них проектом, возникают проблемы с мочевой системой мотивацией и некогда чистый проект начинает попахивать собачьим дерьмом.
Также ваш подросток мог перегореть на прошлом проекте. Если он не только валит кучи плохого кода в тестовых средах, но и какает в основную ветку проекта, это может быть верным признаком пережитого стресса или обиды на своего Тим Лида. Не игнорируйте данные причины, возможно его стоит выгулять в отпуске.

Эффективные способы борьбы
Существует достаточно советов относительно того, как отучить puppy-разработчика справлять нужду в коде.
И так, основные правила:
  1. Никогда не кричите на вашего новичка (во время и после «преступления»). Если вы начнете кричать после того, как он нагадил, то он примет к сведению, что при вас гадить нельзя и будет прятаться от вас, чтобы сделать шкоду.
  2. Никогда не бейте Junior’а и не тычьте носом в кучу. Это обижает его, и он не понимает, почему его, после совершенного факта, наказывают.
  3. Всегда будьте последовательны и постоянны. Желая приучить кодить нормально необходимо делать это регулярно в одно и то же время. Если в один день вы провели ревью, а в другой вам лень или вы не смогли, а потом пришли и выругали "puppy", он точно не поймет, что вы от него требуете.
  4. Всегда поощряйте своего подопечного после того, как он напишет нормальный кусок кода. Обязательно похвалите его.
Последовательные шаги обучения

  1. Если после карантина в отдельной ветке, вы начинаете вводить новичка в основу, то необходимо делать это перед тем, как малыш нагадит. Проследите за своим питомцем, через какой промежуток времени он хочет в туалет.
  2. Совершайте код-ревью в одинаковое время. Правильно созданный режим поможет puppy ощутить вашу заботу и внимание. 
  3. Геймефицируйте процесс обучения щенки любят поиграться. Чем больше разработчик общается с остальными, тем быстрее вникнет в процессы команды. Придумайте игры, чтобы новичок смог себя проявить, желательно trash-игры. Это также приведет к желанию опустошить кишечник и останутся только светлые желания к процессу кодописания.

Методы наказания
Помните, puppy-разработчик, хоть не полноценный сотрудник, но всё же очень умное создание, которое достаточно остро реагирует на настроение своего наставника. Если вы не обижаете своего новичка, он будет откликаться на любую вашу просьбу. Конечно, спокойно реагировать на лужу или кучу, сделанную в чистом куске кода, трудно, но можно показать свое недовольство:
  1. Поменяйте тон голоса и пожурите своего новобранца за сделанное.
  2. Заберите любимую игрушку(доступы к соц.сетям) и дайте поиграться только тогда, когда код станет чище.  
  3. Как только видите, что новичок хочет сделать лажу, употребите команду: «Фу! Таким быть! Вот как надо: … … ...». Он должен понимать, как вы относитесь к такому и делать правильно.
Заключение

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

Пусть ваш новобранец будет самым послушным и «чистым» членом команды! Удачи!