Является ли владение объектами хорошей практикой?

22

Недавно в моей компании было предложено, чтобы один разработчик сосредоточился (и только один) на одной функции. Это означало бы что-то вроде того, чтобы отложить разработчика в сторону от обычной рутинной рутины, освободить его от некоторых других обязанностей (встреч и т. Д.), И этот человек был бы «единственным» ответственным за эту функцию с точки зрения технологии.

Для справки, мы используем SCRUM в SAFe, и у нас есть постоянные разработчики для каждой команды, разделяющие QA и владельцев продуктов между нашими двумя командами (Android и iOS).

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

  • Проверка кода теряет ценность.
  • Минимальный обмен знаниями.
  • Увеличение риска.
  • Потеря гибкости команды.

Я прав или это совсем не плохая практика?

mdelolmo
источник
3
Моя немедленная реакция - это может сработать, если сделать это в меру, но вы правы насчет проблем, если зашли слишком далеко. С другой стороны, мой опыт показывает, что у каждой функции уже есть фактический владелец: последний человек, который потратил много времени, работая над ней.
Ixrec
« Один разработчик должен сосредоточиться (и только один) » - если вы хотите SPOF, это хорошая идея сделать это таким образом. Недавно я сформулировал эмпирическую теорию о том, что человек, который вам нужен больше всего в определенной ситуации (« почему он так написал? »), Как правило, тот, который на самом деле абсолютно недостижим.
JensG
@JensG: у меня есть эмпирическая теория, что человек, который мне чаще всего нужен («почему он так написал?») - это я, и как таковой фактор «запоминания вещей, которые должны были быть записаны» в то время "равно 0. Это еще более заметно, когда меня блокирует кто-то другой, потому что я беспокоюсь об этом, вместо того, чтобы пересматривать существующий код с нуля по существу ;-)
Стив Джессоп
@SteveJessop: Конечно, попытка реинжиниринга мышления других людей, изучая кучу KLOC их кода, пока клиент кричит вам, что ему нужно решение сейчас ( или еще! ), Может быть крутой идеей для некоторых людей, но я Я не настолько умен, чтобы видеть что-то смешное в том, чтобы тратить свое время, чтобы вместо этого я мог тратить продуктивнее.
JensG
@JensG: к счастью, мои клиенты лучше социализированы, чем ваши. Поэтому я не испытываю такого сильного давления, чтобы заниматься магическим мышлением, которое приводит к выводу, что, будучи важным для меня, на самом деле люди становятся менее доступными для меня. Таким образом, я подумал, что в том, что вы сказали, есть элемент шутки, так что да, я достаточно занудный, чтобы найти забавную ситуацию, в которой вы компенсируете непонятный код, пытаясь удержать вокруг себя множество людей, которые помнят, как он работает. Тем более, что такие невнятные люди часто являются моей собственной глупой ошибкой, а не моей коллегой.
Стив Джессоп

Ответы:

37

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

  • это имеет тенденцию к голубям дизайнеров и ограничивает их возможности роста
  • он кладет все яйца в одну корзину, так что если кто-то столкнется с автобусом или уйдет, в знаниях может быть дыра
  • один человек может не увидеть проблему в коде, и без кода владельца сверстников отзывы гораздо менее эффективны
  • трудно поддерживать согласованность и удобочитаемость кода, если каждый работает над кодом, используя свой собственный стиль - хотя это можно обойти с помощью рекомендаций по стилю, тонкости могут заползти, особенно при использовании соглашения над конфигурацией, где люди полагаются на поведение по умолчанию
  • разработчики могут стремиться стать защитниками и защитниками своего кода, если они владеют им, что может препятствовать эволюции кода - если несколько человек владеют им, эта тенденция уменьшается
Джейсон К.
источник
6
Абсолютно. Важно упомянуть фактор шины как наиболее очевидную проблему с владением одним человеком.
JensG
1
Фактор шины необходимо сопоставить с затратами и YAGNI, а также с тем, действительно ли шина нанесет вред вашей организации или просто вызовет много хлопот. Если бы это был выбор между потерей, скажем, 3 часа в неделю навсегда, гарантирующей, что два человека получают информацию о конкретном кусочке кода вместо одного, или потерей, скажем, 60 часов, как единовременного, чтобы кто-то поднял себя чтобы ускориться в случае удара одного из ваших разработчиков, во многих случаях вы бы выбрали единовременную стоимость. Но по указанным причинам у хранилищ знаний есть и другие более важные недостатки (хотя и менее очевидные).
Стив Джессоп
13

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

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

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

Telastyn
источник
1
Я не согласен с тем, что владение кодом одним человеком неизбежно, но оно будет принадлежать небольшому количеству людей. Я видел организации, которые делали плохой код, но делали это точно так же. Самые эффективные установки, которые я видел, были когда 2-3 человека знали части кода и сотрудничали. Это уменьшило стресс и изоляцию среди кодировщиков, потому что они не были на крючке сами по себе, когда что-то не получалось, и отстающим функциям можно было уделять больше внимания для соблюдения сроков без быстрого обучения других сотрудников организации.
Джейсон К.
1
@jason - конечно, в команде должно быть несколько человек, комфортных и способных работать над куском кода. Но один человек в конечном итоге станет экспертом в данной области, просто работая над ним больше всего.
Теластин
Согласитесь, что это часто случается, это наиболее вероятный сценарий, и что предметная экспертиза - хорошая вещь - единственное несогласие с тем, что это неизбежно, просто потому, что я добился большего успеха, когда несколько человек были МСП в регионе благодаря значительному дублированию
Джейсон К. .