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


12

У нас в команде 7 разработчиков, и нам необходимо удвоить скорость разработки за короткий период времени (около месяца). Я знаю, что есть правило здравого смысла, что «если вы нанимаете больше разработчиков, вы теряете производительность только в течение первых нескольких месяцев». Проект представляет собой веб-сервис электронной коммерции и содержит около 270 тыс. Строк кода.

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

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

=======

ОБНОВИТЬ

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

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

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


2
если вы нанимаете больше разработчиков, вы теряете производительность только в первые месяцы - я никогда не слышал, если это так, но я уверен, что это больше
BЈовић

2
Что происходит, когда вы пытаетесь объединить две части вместе? Есть ли шанс, что оба компонента пройдут свои собственные тесты, но большой интеграционный тест по всему участку не удастся? Я подозреваю, что вы обнаружите, что закон Брука не так легко обойти. Отличное творческое мышление; стоит +1. И мне бы очень хотелось узнать, как это работает для вас.
Дауд говорит восстановить Монику

1
Явана: Мы будем нанимать опытных разработчиков
Дмитрий Негода

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

4
независимо от того, насколько вы удивительны для разработчиков, они не поймут 100 тыс. строк кода менее чем за ~ 1 месяц, может быть, за 3 недели
Ryathal

Ответы:


1

Хотя я согласен, как и все здесь, что:

«... добавление новых разработчиков в отложенный проект, создание проекта, задержка более ...»

У меня такое чувство, что ты собираешься сделать это где угодно, так что ...

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

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

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

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

Есть ли у вас документация по применению, например: UML, ER, Codd-Yourdon, что угодно?

Удачи.


Мы говорим только о 100K строках кода, это не так сложно, однако спасибо за беспокойство
Дмитрий Негода

1
@ Дмитрий Негода: сложность не является функцией LOC.
jmoreno

Существуют значительные исследования (например, Бём), которые показывают, что производительность программиста, в среднем, является функцией LOC.
Дмитрий Негода

15

Мой вопрос: поможет ли этот подход начинающим разработчикам легко адаптироваться к новому проекту?

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

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

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

  • Как я уже говорил выше, нанимайте людей, которые имеют опыт создания системы, которую вы хотите.

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

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

  • У вас есть четко определенный процесс разработки? Ошибка базы данных? Контроль версий? Процесс проверки кода? Гид по стилю? Получить эти вещи на месте.

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


1
+1 к письменному набору требований, они немного устарели ...
Дмитрий Негода

3
А кто собирается взять интервью у этих новых сотрудников, обновить письменные требования и оформить документы, заполнить базу данных об ошибках, потратить время на учебные занятия ... ?? Это текущие разработчики? Потому что это означает, что они не будут развиваться полный рабочий день. Так что скорость разработки снижается . К сожалению.
MarkJ

Код самодокументируется, и мы будем нанимать только опытных разработчиков. И да, нынешние разработчики помогут новым, и их скорость немного снизится. Я просто надеюсь, что найм разработчиков в проекте 100K loc будет не таким болезненным, как найм в проекте 270K loc, и это был вопрос.
Дмитрий Негода

У вас есть внутренняя вики, или все хранится в документах Word, разбросанных по локальной сети?
Спенсер Рэтбун

1
100 КБ, 50 КБ или 10 КБ будут представлять одно и то же - тонну кода, который никто не будет передавать в свою голову. Если есть несколько сотен строк кода, это разумно. После того, как вы наберете несколько тысяч, у вас сложная система, и стремление к скорости часто не достигается.
Майкл Даррант

12

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

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

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


4
+1 - вы определенно хотите использовать своих старых разработчиков, чтобы привлечь новых парней на борт. Хотя это неизбежно, что это немного замедлит вас.
Микера

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

9

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

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


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

Если это так, возможно, вместо того, чтобы стремиться удвоить темп своего развития за один шаг, возможно, вы можете попытаться «нарастить» в течение определенного периода времени.
Алекс Д

4

Итак, вы пытаетесь стать командой, которая не станет жертвой Мифического Месяца Человека . У вас будет несколько проблем, кто-то из команды должен будет провести технические собеседования, а затем вам придется подождать несколько недель после того, как они примут позицию, прежде чем они смогут начать. Это может быть два месяца, прежде чем новые разработчики перед своими клавиатурами.

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

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

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

В своем комментарии к Alex D вы упомянули: «Это не крайние сроки, которых мы придерживаемся, это демонстрируемая способность предоставлять новые функции». Так что переключайтесь на стиль разработки, который распределяет функции по частям и чаще. Пусть новые члены команды протестируют новые функции, которые помогут им понять кодовую базу.


Я не понимаю, как тестирование новых функций поможет понять базу кода. Мы также нанимаем инженеров QA, так что пусть разработчики разрабатывают и тестируют тестеры.
Дмитрий Негода

2

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

Пожалуйста, прочитайте Мифический Человек-месяц. Вам, безусловно, понадобится, чтобы рассказать старшему руководству, почему они делают выбор в пользу ускорения проекта. ,


Да на все ваши вопросы распространяются последние.
Дмитрий Негода

0

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


Майк Партридж изменил мой вопрос. Я не собираюсь никого сбрасывать со скалы. Конечно, новые разработчики будут работать вместе с опытными, просто над другим подпроектом.
Дмитрий Негода

Я просто надеюсь, что найм разработчиков в проекте 100K loc будет не таким болезненным, как найм в проекте 270K loc, и это был вопрос.
Дмитрий Негода
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.