Как ускорить процесс найма нового существующего проекта?

Мой босс нанял нового разработчика прямо из CompSci для проекта с большим количеством технических долгов. Моей задачей будет ускорить работу этого парня и сделать достойный вклад как можно скорее. Любые предложения о том, как лучше всего это сделать? Любой опыт из первых рук о том, как точно не сделать это?

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

12 ответов

Решение

В первый же день посидите с ним и помогите ему настроить среду разработки. Если он только что закончил колледж, он может быть не знаком с IDE, с использованием контроля версий, независимо от того, какие платформы приложений вы используете и т. Д.

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

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

Когда я начал свою первую работу, меня бросили прямо в огонь с небольшими задачами. Это включало создание второстепенных элементов управления, которые были вспомогательными для проекта, но которые все еще требовали, чтобы я использовал некоторые из более продвинутых методов, которые использовались с остальной частью команды (доступ ORM и так далее). Мне также дали некоторые задачи по очистке базы данных, которые дали мне хорошее понимание того, как все данные, с которыми имел дело проект, были размещены в базе данных.

Я бы посоветовал не делать ему ничего, кроме чтения документов или подробных обзоров кода. Ему будет скучно, и, вероятно, он вряд ли вспомнит о том, что он делает за две недели. Помните, он подал заявку на работу, потому что он хотел написать код. Слишком много технического обслуживания оттолкнет его.

Я бы советовал против таких вещей, как чтение документации (если у вас нет хорошего краткого документа, дающего основательный обзор дизайна системы), обзоров кода или моего любимого - "знакомство с базой кода".

Все эти вещи действительно трудно сосредоточить, когда вы новичок в проекте. Обзоры кода бесполезны без предварительного знания системы.

В идеале я бы дал ему очень маленькое, локализованное задание, над которым он мог бы работать сам и задавать вопросы по мере необходимости. Это заставляет его начинать с ваших процессов разработки, контроля исходного кода и т. Д. При выполнении реального кода.

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

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

Исправление ошибок.

На сегодняшний день это лучший способ изучить кодовую базу. Да, это отстой, но это отличный способ учиться.

Недавно я был новым наемным работником в этой ситуации... хотя у меня был предыдущий опыт "реального мира".

Мой босс и ее суррогаты всегда говорили "играй с системой" или "читай документацию". Я нашел это действительно раздражающим. Я решил свои собственные задачи, а именно: установил точки останова, которые, как я знал, будут достигнуты, а затем выполнил простую, но все же основную операцию в системе и прошел от колыбели до могилы.

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

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

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

Наставничество со сверстниками - это очень хороший способ привлечь новых сотрудников, проверить сайт и соответствующую книгу для получения дополнительной информации. Техника была разработана в Microsoft (я полагаю) и была принята многими другими фирмами.

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

Изменить: я не связан с автором книги, мне просто нравится его идея и была представлена ​​ей моим нынешним работодателем.

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

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

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

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

Дайте ему задание, которое обновляет существующий код. Задача не должна быть ужасно сложной, но она должна требовать знания кода. Будьте доступны для вопросов, но не говорите наёмнику, как это сделать. После того, как исправление было закодировано, сядьте с программистом и изучите решение.

Хорошо позволить программисту иметь некоторую свободу в написании кода, который выполняет свою работу. Это, вероятно, введет в систему новые методы, которые помогут вам стать лучшим программистом.

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

Парное программирование

Я согласен со многими ответами здесь, особенно с помощью Learn to Doing. Я экспериментировал со многими различными способами, предоставив новый прокат:

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

Я думаю об этом таким образом, что если бы я был новым наемником в какой-то строительной компании, и мне было поручено построить стену в существующем доме, но он не был там в течение предыдущих 6 месяцев строительства этого дома, был связан риск со мной, делая вещи правильно, идет вверх. Однако, если бы в тот первый день (и дни после этого) они объединили меня с кем-то, кто знал, чего ожидать, я чувствовал бы себя более комфортно, и я уверен, что компания будет чувствовать себя более комфортно, зная, что я учился у кого-то, кто сделал это раньше... и сделал это правильно.

Из всех опробованных вещей ничто не было таким успешным, как парное программирование. Кажется, что нет никакой замены для того, чтобы помочь кому-то изучить входы / выходы системы / tools / language / project / etc. Неважно, над чем они работают... будь то новые функции, исправление ошибок, побочные проекты, сборка систем и т. Д. Существует большая разница между тем, кто на самом деле говорит вам, как все работает, и показывает, как это происходит.

Во многом это связано с изучением процессов в вашей организации. Это не просто изучение того, как работает код.

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

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

Если вы решили нанять их, вы уже приняли решение доверять им. Дайте им наставника (может быть, вы), постепенно знакомите их с вашими системами и базой кода, и работайте оттуда.

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

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

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

Другие вопросы по тегам