Чи хороша чи погана ідея розробників, що обертаються в проекті?


38

Я працюю над невеликою командою, яка розпочне роботу над великим новим проектом з іншою невеликою командою. Інший колектив зараз працює над спадковою системою, над якою вони працювали роками.

Менеджер вирішив, що розробники з моєї команди будуть обертатися кожні кілька місяців, щоб замінити розробників, які працюють над застарілою системою. Таким чином, інша команда матиме шанс працювати над новим проектом та краще розуміти нову систему.

Хочу знати переваги та недоліки (якщо такі є) обертання розробників від проекту кожні 2-3 місяці.

Я знаю, що це питання, подібне до "Чи хороша чи погана ідея обертання головного розробника?" , але це питання зосереджено на провідному розробнику. Це питання стосується повороту всієї команди на проект та його вимкнення (технічний потенціал для нового проекту може бути, а може і не бути, а я ще не знаю).



2
Я не хотів перетворювати це на суб'єктивне / аргументативне запитання, даючи свою особисту думку в питанні. Я відчуваю, що це не дуже добре, але, можливо, є щось, про що я не знаю :)
Christian P

1
Яку причину наводив менеджер, коли ви запитали його чому? В інтересах компанії - мати спільні знання про продукт, якщо розробники виїжджають.
dcaswell

1
Це проблема. Якщо ваше управління вже не є цілком прозорим з цього приводу, то, мабуть, це знак того, що вони взагалі цього не продумали.
Aaronaught

1
Я б запропонував вам створити інтитальну команду, яка починає проект, що складається з деяких поточних розробників та деяких нових розробників нових проектів. Тримайте їх через порід. Зрештою, лагідні розробники підтримують новий продукт, а нові розробники приєднуються до деяких інших застарілих розробників, щоб зробити наступний проект. Таким чином команда є однаковою через проект (або основний реліз), але застарілі люди швидко розвивають те, що їм надаватиме підтримка пізніше. Нові наймані працівники, як правило, починаються зі спадщини, якщо вони не мають спеціальних навичок, яких ви не маєте для команди;
HLGEM

Відповіді:


76

Я здивований, що всі думають, що це така гарна річ. Автори Peopleware (який, IMO, як і раніше є однією з найцінніших книг управління проектами програмного забезпечення, які насправді варто прочитати) категорично не погоджуються. Майже вся частина IV книги присвячена саме цій проблемі.

Програмне забезпечення команда є неймовірно важливим функціональним блоком. Командам потрібно заграти, щоб стати справді продуктивними. Потрібен час ( багато часу), щоб члени команди заслужили повагу один одного, вивчили звички та примхи один одного, сильні та слабкі сторони.

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

Тепер ви можете сказати: "О, але ми не розбиваємо всю команду, просто переїжджаємо кілька людей". Але подумайте (а) про те, наскільки сліпо непродуктивними будуть їх заміни на початку, і (б) скільки разів ви виявите себе чи інші команди, говорячи, навіть не замислюючись: "Мені дуже сподобався X" або "Це було б було легше з Y все ще навколо " , тонко і несвідомо ображаючи нових членів і створюючи розколи в межах існуючої команди, навіть сіяючи невдоволення серед" старих "членів.

Люди не роблять цього навмисне , звичайно, але це трапляється майже кожен раз. Люди роблять це, не замислюючись. І якщо вони змушують себе цього не робити, вони в кінцевому підсумку зосереджуються на цьому питанні ще більше і розчаровуються вимушеною тишею. Команди і навіть підгрупи розробитимуть синергію, яка втрачається, коли ви обертаєтесь структурою. У Кадрових авторів називають його формою «teamicide».

Незважаючи на те, що навіть ротація членів команди є жахливою практикою, обертання самих команд - це прекрасно. Хоча добре керовані компанії з програмного забезпечення повинні мати певну концепцію права власності на продукт, команда не є такою руйнівною для того, щоб перенести всю команду на інший проект, доки команда насправді має змогу закінчити старий проект або принаймні довести його до рівень, яким вони задоволені.

Маючи команду, замість стику розробника , ви отримуєте всі ті ж переваги, які ви б очікували отримати від розробників, що обертаються (документація, «перехресне запилення» тощо) без будь-яких негативних побічних ефектів для кожної команди як підрозділу. Тим, хто насправді не розуміє менеджмент, це може здатися менш продуктивним, але будьте впевнені, що продуктивність, втрачена в результаті розколу команди, повністю придушує продуктивність, втрачену при переміщенні команди на інший проект.

PS У своїй примітці ви згадуєте, що технічний провід може бути єдиною людиною, яку не слід повертати. Це майже гарантовано зіпсує обидві команди. Технічний керівник - це лідер, а не менеджер, він або вона мусить заслужити повагу колективу, і не просто надається повноваження вищими рівнями управління. Поставити цілу команду під керівництвом нового керівника, з яким вони ніколи не працювали, і який, швидше за все, матиме різні ідеї щодо таких речей, як архітектура, зручність використання, організація коду, оцінка ... ну, це буде напружено, як пекло для керівника, який намагається створити авторитет і дуже непродуктивний для членів команди, які починають втрачати згуртованість за відсутності свого старого керівництва. Іноді компанії єробити це, тобто, якщо ведучий припиняє або отримує підвищення, але робити це за вибором звучить божевільно.


2
Не погоджуйтеся повністю - однак це не без вад - команди можуть і створювати побудовані імперії, іноді ці руйнування Продуктивність не завжди є найважливішою ціллю керуючого, який (якщо є хороший), дивиться більше до кінця гри, ніж інші можуть бути.
mattnz

4
@mattnz: Яка "кінцева гра" існує для менеджера, окрім високої продуктивності праці, утримання працівників та можливості доставки вчасно / на бюджет? Я, звичайно, тут говорю про етичних менеджерів, які щиро хочуть зробити те, що найкраще для компанії, і не використовують команду чи проект як транспортний засіб для досягнення власних особистих цілей кар’єри. Програмна організація хоче імперій - імперії стабільні і заробляють гроші - і так, імперії можуть впасти, але вони набагато рідше впадуть, ніж будинок карт.
Aaronaught

2
Ротація краще, ніж люди повністю залишають компанію
warren

4
@warren: Якщо ці два варіанти є вашими єдиними, то останній майже неминучий.
Aaronaught

3
Я серйозно взагалі не розумію цієї відповіді. Усі в команді повинні бути професіоналами та добре працювати з іншими, припускаючи, що всі члени команди насправді компетентні, що є різною проблемою. Обертові члени команди часто є єдиним вибором для менеджера, який має хронічне задоволення в обох продуктах або де виснаження становить серйозну загрозу. Часто дуже важко знайти хороший талант. Ротація членів команди - це спосіб хеджувати ставки проти відставки розробників. Це також більш справедливо для розробників, які працюють над застарілим програмним забезпеченням, коли вони хочуть дізнатися щось нове.
maple_shaft

18

Сам я не бачу багато недоліків. Ротація отримує:

  • Перехресне запилення інституційних знань - кожен дізнається спадковий проект та новий, принаймні теоретично.
  • Перехресне навчання - різні проекти часто вимагають різних речей. Ви зростаєте набагато більше, як розробник, який працює в потворних, застарілих проектах, ніж у приємних, чистих проектах.
  • Принципово кращі проекти - нічим іншим, як приїхати нова команда, яка змусить вас закінчити документацію та очистити потворні процеси, з якими ви готові жити, але не публічно визнаєте їх.
  • Кращий код - більше головок краще в більшості випадків.
  • Ймовірно, поліпшення моралі - різноманітність - це спеція життя. А хто хоче назавжди застрягти у застарілому проектному режимі виправлення помилок / наклеювання каналів. Також майте на увазі, що ваш "новий" проект стане спадщиною в якийсь момент, чи хочете ви затриматися там назавжди?

Напевно, єдиним недоліком є ​​падіння продуктивності, яке ви отримуєте від перемикання місць, але це може погано нашкодити першому туру. Після цього обидві сторони матимуть деякий час в обох місцях, і потворні частини передачі, можливо, будуть краще зрозумілі та, можливо, вирішені.


18
Я не бачу, як би покращився мій дух, якби мене змусили працювати над спадковою системою.
Теластин

3
Кілька недоліків полягають у збільшенні початкового часу, а конкретні інші завдання старого колективу стають нижчими.
Одід

16
@Telastyn Якби моя стара компанія перестала працювати, я б ще працювала там. Впевнений, що це смокче, щоб повернутись, але це ще більше, щоб знати, що ти ніколи не будеш повернутий просто тому, що їм потрібен спадковий розробник.
BeardedO

8
@Telastyn та Christian та інші: це ваша проблема, якщо ви бачите це як пониження. Робота над застарілими системами - це сама по собі проблема, яка може надати вам неймовірний неоціненний досвід, який можна використовувати на вашу користь у розробці зеленого поля. Розвиток Грінфілда дійсно повинен мати набагато менший "кредит", ніж він має, оскільки це набагато простіше, ніж намагатися розробити нові функції на існуючій базі навіть без великої технічної заборгованості. Розробка коричневого поля - це те, де ви знайдете справжніх майстрів та жінок. Так, ви їх також знаходите в інших місцях, але не в полі, запеклих на полі бою.
Мар'ян Венема

8
@MarjanVenema - Вибачте, виконання певних робіт з технічного обслуговування в Cobol не сприяє розвитку моєї кар'єри. Звичайно, робота може знадобитися, і це може бути навіть цінним досвідом - але якщо мій керівник переведе мене на повний робочий день, я отримаю своє резюме якнайшвидше. Справа в тому, що деякі розробники будуть сприймати це як зниження в посаді, незалежно від того, що він на самому справі. Врівноваження цього сприйняття бажанням перехресного опитування не є моєю проблемою, це проблема менеджера; це їхня робота .
Теластин

6

Цікаво, що, на моєму досвіді, ми часто починали наші проекти саме з цією метою. Ми часто не дотримувались цього наміру через обмеження нового проекту та переконання, що перехресне навчання занадто дороге.

Я завжди хочу, щоб ми впоралися з цим, хоча, надовго, я вважаю, що це корисно для всіх сторін - команди, компанії, клієнта та програмного забезпечення. 2/3 місяця звучить як досить довгий факт, що існує обмежений ризик будь-якого серйозного негативного впливу, не відбувається переключення контексту для залучених розробників, за винятком того моменту, коли вони можуть присвятити себе альтернативному проекту.

Невизначена пара можливих переваг:

  • Краще управління проектами. Якщо керівники проектів обох проектів працюють, то їх найкращі інтереси працюватимуть над тим, щоб перехідні періоди не були болючими для жодного проекту. Ця черга (залежно від вашої установки) може принести більш тісну співпрацю між керівниками та розробниками.
  • Краща (ініціативна) документація. Якщо ви знаєте, що ви переходите на проект та виходите з нього, це не лише в інтересах проекту, найкращі інтереси компаній, найкраща практика в цілому, але зараз у кожного розробника є власний інтерес, щоб полегшити життя, поки вони підстрибують. навколо.
  • Мораль - це велика справа, якщо вашим розробникам не вистачає зациклюватися на застарілому проекті, вони можуть бути не розробниками, яких ви хочете! Якщо у них є, перемикання на них та примушення інших розробників працювати над цим змусить їх відчути любов до вашої компанії - вони просто можуть привести в дію шматочки коду, які, на їх думку, ніхто так і не побачить. Спадкові системи часто розглядаються як проекти другого класу, що часто на їх шкоду, можливо, таким чином ви допоможете змінити це сприйняття.

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

2
@BBlake Так, на жаль, це так. Невдало, адже це дуже короткозоро і досить високий ризик для компанії "обмежити" знання важливих систем меншою кількістю людей.
Мар'ян Венема

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

@Marjan: Я хотів би зробити ставку на те, що витрати, понесені на регулярне перехресне навчання, будуть набагато вищими, ніж витрати на навчання нового найму, якщо хтось піде. Тепер, якщо ціла команда піде, то це вже інша справа.
Данк

1
@Dunk: Я не знаю, що це буде. Кросове навчання не повинно йти так далеко, щоб зробити перехресний підготовлений експерт у галузі, яка безпосередньо не є власною. Потрібно лише зробити так, щоб бізнес не одразу опинився під солінням та ризикував втратити клієнтів, коли експерти на місцях виїжджатимуть, спричиняючи, що розвиток у цій галузі зупиниться. Ніхто не є незамінним, але бізнес "ризикує, коли важливі знання чи навички обмежені лише небагатьох людей. А витрати на те, що цей ризик стане реальністю, може бути дуже-дуже високим.
Мар'ян Венема

4

Ротація - це хороша річ для компанії, і може бути хорошою справою і для розробників.

Є багато вагомих причин, і Вайат у своїй відповіді згадував багато з них.

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

Можливо, було б добре подумати про те, щоб не міняти команди оптом, щоб почати, і повернути 1 або 2 диска для початку, хоча це може здатися виділенням людей для пониження (що деякі люди можуть це бачити).


Мені подобається ідея заміни всього на 1-2 dev. Це допоможе зменшити початковий негативний вплив на продуктивність.
superM

Ви маєте справу з розробниками програмного забезпечення, а не нормальними людьми. Розробники програмного забезпечення, як правило, логічні. Ними не можна так легко маніпулювати, як широка громадськість, включаючи такі ідеї, як вище. Інші хитрощі є більш ефективними для них (наприклад, більші монітори, більш швидкі комп’ютери), але не політичні стилі, як ця ідея. Це буде негативним для тих, хто в новій команді розробників, незалежно від того. Обіцяння нагород (тобто див. Вище) - це єдиний спосіб приховати неприємний смак. Звичайно, це буде чудово (спочатку) для головних хлопців, поки вони не зрозуміють, що не для цього.
Данк

2

Погодьтеся з Aaronaught, що дуже дивно бачити, як багато людей просто не бачать недоліків. Мало хто погано думає, що ви можете швидко вказати - код не має власника, і коли всі відповідають за все, це не так добре для якості . Розробники - це не ресурси (навіть менеджери їх називають так часто), вони люди, і для команди дуже важливо знати один одного, ротація створює трохи хаосу. Якщо ви працюєте над яким-небудь проектом довше, ви станете експертом (не тільки в домені, але і в цьому проекті), ви будете знати, звідки виникло найбільше проблем, хто отримає найкращі відповіді або, можливо, більш конкретні знання про домен тощо. Якщо ви новачок, вам потрібно буде навчитися всьому цьому думати, тому це сповільнить прогрес. Але, звичайно, також добре знати інші практики у вашій організації, як інші команди будують та організовують. Особливо добре, якщо ваші проекти пов'язані якимось чином, наприклад, один проект вводиться для іншого (не потрібно безпосередньо), тому ви отримаєте краще розуміння великої картини. І звичайно, поширення досвіду добре (якщо ви отримаєте час для отримання цих знань).


цю публікацію досить важко читати (стіна тексту). Ви б не хотіли відредагувати його в кращій формі?
гнат

2

Я погоджуюся з найкращою відповіддю Aaronaught і в мене є деякі доповнення.

  • Люди не люблять, щоб їх штовхали.
  • В ієрархічній бізнес-середовищі людям можуть бути призначені обов'язки, які згодом знову відбираються від них. Це може бути просто частиною роботи. Однак чим частіше це трапляється, тим менше ймовірність цих людей почувати себе відповідальними за все, що їм покладено.
  • Перший пункт стосується також робіт з технічного обслуговування речей, які самі люди не створили. Прибирання безладу інших людей (або більш нейтрально сформульовано: незавершена робота) не особливо мотивує для більшості людей, що створюють.
  • Філософія "програміст - це програміст - це програміст; вони є анонімними плагінами, які потрібно вставляти в проекти за потребою" не змушує жодного програміста оцінюватись або більше не піклуватися про покладені на нього завдання.

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

Звичайно, реальність вперта і часто вибору немає, хтось може знадобитися в іншому місці з будь-якої причини. Це не обов'язково погано, це також може змусити людину почуватись важливою, і якщо людина вирішить якусь велику проблему, для нього буде заслуга.

Просто переміщення людей навколо розповсюдження знань, ймовірно, збільшить оборот. Таким чином знання будуть поширюватися, але вони будуть поширюватися поза компанією, що, мабуть, не є наміром.


0

TL; DR Зробіть це однією командою, а потім це одна команда, яка підтримує 2 проекти.

Для відлуння @Aaronaught Я думаю, що змішування команд може бути проблематичним, оскільки це може зайняти час, щоб звикнути до нових практик, процесів тощо. Якщо ви швидко обернетеся дуже багато людей, команда втратить свою ідентичність. Це призводить до додаткових питань, плутанини та часу, витраченого на те, щоб компенсувати цю особу.

З іншого боку, якщо є спільні зусилля, щоб об'єднати 2 команди в одну команду та мати 1 команду, що підтримує 2 проекти, я думаю, що це чудово працює, якщо команда не надто велика. Я був членом численних команд, які підтримують декілька проектів. Чим ближче до технології два проекти, тим простіший перехід. На мій досвід, більш висока вартість переходу з одного проекту на інший виникає при перетині мов, клієнта / сервера (особливо GUI), галузі (медичні, веб, ігри) або інших подібних ліній. Хитрість полягає в тому, щоб змусити людей працювати над проектом досить часто, щоб отримати переваги, але не так часто, щоб вартість переходу перевищувала переваги.

Тоді користь для отримання більшої кількості людей на проект досить відома, як і витрати.


1
"Я думаю, що поки команда не надто велика", тут важливо; якщо в кожній команді 10 людей, команда з 20 чоловік, швидше за все, занадто велика. Крім того, якщо є якісь фізичні розриви між командами (ОП не визначає), він не буде функціонувати як одна команда і зробить все більш неорганізованим. Це, безумовно, може спрацювати, але це залежить від ситуації (чи можна ефективно об'єднати команди), а також цілей керівництва (злиття більш-менш постійне, це додасть більше ресурсів, але не досягне тих же цілей, що і проект обертання).
Aaronaught

0

Ротація програмістів - це добре з точки зору компанії та розробника.

З точки зору компанії

  1. Керівництво знайомиться з силою та слабкістю конкретного розробника, чи може він працювати з багатозадачністю чи ні та адаптувати до змін.
  2. Якщо якийсь розробник чомусь покидає компанію, компанія вже має резервну копію готової до майбутнього.
  3. Це підвищить ефективність проекту, оскільки над ним працюватимуть багато людей, те ж саме перевірять все більше і більше розробників. (Витрата на тестування зведений до мінімуму)
  4. Усі члени команди працюють в команді, і це сприятиме підвищенню продуктивності проекту, а в майбутньому керівництво дізнається, яку команду потрібно скласти під час впровадження складного модуля чи завдання.

З точки зору розробника

  1. Це зробить розробника більш позитивним, оскільки його впевненість зростатиме.
  2. Розробники отримують кращі та кращі ідеї від інших товаришів по коду, і вони можуть використовувати цю техніку в подальшому розвитку.
  3. Від кращих ідей та пропозицій інших членів команди збільшується продуктивність розробника.

Тільки одне головне, потрібно пам’ятати, що,

Ротація програмістів не повинна відбуватися дуже часто. після 60% - 70% розвитку, зробленого тоді, тільки зрушення буде корисним.


3
Я бачу, що тут робиться багато лисих тверджень. Деякі з них майже не мають нічого спільного з обертанням ("менеджмент познайомиться з силою та слабкістю конкретного розробника"?), Інші - незрозуміло або просто не мають сенсу ("всі члени команди працюють у команді та це підвищить ефективність проекту "?). На чому базуються всі ці моменти? У вас є джерело? Це особистий досвід? Якщо так, то який досвід? Чи походить ваша "перспектива компанії" з досвіду роботи керівника чи команди? Чи дійсно ви бачили, що будь-яка з цих речей працює на практиці?
Aaronaught

1
Більшість із цих пропонованих переваг, схоже, пов'язані з простою командою, а не з ротацією між командами ...
Aaronaught

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

Немає можливості в час, що на ефективність проекту не буде дуже негативно впливати. Чому б ви вважали, що ефективність проекту буде "підвищена"?
Данк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.