Пять новых младших разработчиков и множество сложных заданий. Что сейчас?


10

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

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

Так, что теперь? Что я должен сделать, чтобы эффективно использовать свое время?


1
Все 5 младших людей были включены в ваш проект? Вы единственный старший разработчик?
Тианна

@Tyanna: Да, я единственный старший в этом проекте. Другие старшие были перемещены в другие проекты некоторое время назад.
mxe

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

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

+1. Мое единственное сожаление в том, что я не могу больше тебя одобрить.
Шиван Дракон

Ответы:


2

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

Наставничество - это наиболее эффективное использование вашего времени, а не кодирование.

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

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

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

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

У вас есть пять новых людей, что действительно сложно. Вы должны быть честны со всеми из них и менять, с кем вы соединяетесь или давать указания. Не играй в избранное. Но вы также должны быть человеком, который обеспечивает «жесткую любовь», если кто-то не преуспевает и не делает успехи. Возможно, вам придется отозвать одного или нескольких из них и сказать им, что им нужно улучшиться и почему вы чувствуете, что они не преуспевают. SOme peopel позволит вам выполнить всю работу, если вы создадите пару, и вы не сможете этого сделать, потому что это проще. Если человек не может выполнять эту работу, он будет добрее к ним и будет гораздо лучше для вашей команды, если вы не несете их один раз, очевидно, что они не могут или не будут учиться быть более независимыми.

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


20

Парное программирование звучит как отличная возможность здесь.

  • Дайте четырем из них два из более простых из этих ошибок, позвольте им объединиться и попросите каждую пару заняться одним из них.
    • Сформулируйте этот запрос как «Можете ли вы выяснить, что вызывает это?». Не заставляйте их думать о том, как это исправить.
    • После того, как они имеют определенный уровень объяснения, то спросите их , как это может быть исправлено. Таким образом, они не будут перегружены огромной задачей одновременно. Пусть они пойдут и поэкспериментируют с кодом, если у них его еще нет, и как только у них будет план, пусть даже расплывчатый, вы можете привести их к хорошему решению.
  • Другой, с которым вы можете соединиться и начать работать над одним из самых сложных с ним. Это может быть более сложным, учитывая его неопытность в коде, но он также получит выгоду от того, кто имеет опыт работы с ним.
    • Я думаю, что новая функция может быть хорошим способом сделать это, учитывая ваш опыт. Вы можете показать ему существующий API по мере разработки новой функции.

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

  • Нам дали ошибку, и после 10-минутного вступления нам сказали попытаться выяснить, что происходит.
  • Примерно через час мы разделились и копались в двух разных направлениях мысли.
  • Примерно через два часа после этого я в общих чертах выяснил, как работает код, но не знал точно, где генерируется плохой вывод. Он выяснил, как он генерируется, копаясь в необработанных и денормализованных данных, но не смог выяснить код.
  • Мы создали пару и пошли по пути кода вместе, и получили точный ответ. Исходя из этого, мы вместе с нашим менеджером провели мозговой штурм по поводу некоторых возможных решений и в итоге реализовали его позже.

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


+1. Единственная проблема может состоять в том, чтобы разделить 5 человек на пары по 2 ;-)
Док Браун

@DocBrown Ну, 5 неопытных разработчиков + 1 опытный разработчик означает, что вы можете сделать 3 группы по 2 (см. Вторую главную точку). Это может стать чем-то вроде учебника о том, какой тип кода (UI, бизнес-логика и т. Д.) Идет куда, но он научится другим вещам, чем другие 4. Затем в следующем наборе задач поверните.
Изката

7

Научить их. Задайте им задачи, которые они могут легко решить.

Проще говоря, проблема в том, что упомянутая рабочая сила не достаточно квалифицирована, чтобы быть очень продуктивной в выполнении своей задачи. Таким образом, вы можете либо: 1) облегчить задачу 2) попытаться повысить квалификацию рабочей силы.

Подобная проблема почти всегда возникает (в некоторой степени) всякий раз, когда новый человек присоединяется к команде и начинает работать над кодовой базой, с которой у него нет опыта. Это становится большей проблемой, если инструменты и методологии неизвестны. Благодаря тому, что человек будет лучше знаком с инструментами и методологиями, проблему можно будет облегчить быстрее.

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


3

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

Изменить: может быть целесообразно упомянуть закон Брука в этой ситуации.


2

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

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

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


Это кажется пустой тратой времени, если среда песочницы еще не существует.
Ramhound
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.