Яка роль провідного розробника у спритній команді?


42

В не гнучкою команди розробників є провідним розробником в цілому :

  • Встановлює стандарт (кодування та інше)
  • Досліджує нові технології для команди
  • Встановлює технічний напрямок для команди
  • Має остаточне слово з питань
  • Проектує архітектуру системи

Однак спритна команда працює інакше:

  • Проворна команда буде покладатися на новий дизайн, а не на передню частину
  • Спритний колектив проектує разом, а не дизайн, який диктує одна людина
  • Спритний колектив вирішує власне технічне керівництво, яке найкраще здійснити проект

Де це залишає провідного розробника у спритній команді? Чи можливо мати провідного розробника в спритній команді? Чи спритна команда вимагає від керівника різних обов'язків?


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

Відповіді:


46

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

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

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


Чи можете ви додати трохи роз'яснень до того, що ви маєте на увазі під собою "Вручення рішень за едиктом - це жахливий спосіб роботи будь-якої команди розробників"? Я погоджуюся з рештою вашої посади, але я згоджуюсь із зазначеним твердженням лише певними способами, але не іншими. Наприклад, як було вирішено використовувати SOA над рівнем бази даних? Хіба це не був би едикт чи не мав би хтось мати остаточного слова? Я прошу, тому що я є керівником команди і зіткнувся з цією ситуацією. Я закликав не використовувати SOA, виходячи з потреби бізнесу. Просто не вистачає часу, щоб усі розробники могли обговорити / аргументувати кожен момент.
Брайан

@Brian прийняття архітектурних рішень - це історія в спринті, ймовірно, одна призначена для конкретного члена, але в іншому випадку така ж, як і будь-яка інша історія. Його слід піддавати експертній оцінці, як і будь-яка інша історія. Аргумент часу - фігня, якщо ви випадково пропустили X чи вирішили спробувати Z, що всі інші в команді не знайомі з вами, ВРЕ буде витрачати більше часу на розробку, навіть цілий день сперечатися про дизайн був би незначним порівняно . Проста зустріч / огляд, щоб сказати: "Я вибрав A, тому що X, Y, Z". швидше за все, знадобиться година, і тільки що зробили це спільними зусиллями.
Рятхал

30

У спритній команді кожен повинен відкласти свій его.

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

Отже, розробник "головного" продовжуватиме "вести", але як природний наслідок їх досвіду, а не як мандатну функцію їх титулу.

Це в ідеальному світі, де люди можуть відкласти свій его. Удачі!


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

20

Окрім відповіді Рятоля :

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

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

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

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


1
Це особливо важливо на засіданнях, які є "Timeboxed", тобто зустріч або конкретна дискусія не триватимуть довше X хвилин. Наприкінці часу хтось приймає рішення і тримає процес рухається. Це може бути провідним розробником для системної архітектури та відповідних дискусій.
Кріс

1
Добре кажучи. Провідний розробник також повинен орієнтуватися на поліпшення досвіду та розуміння команди, в якій вони перебувають, при цьому довгостроковий план повинен бути не просто «ведучим», а скоріше членом команди однолітків.
Девід 'лисий імбир'

Те, що ви описали, - це ScrumMaster.
DBedrenko

6

Ваш негідний опис не може визнати недійсним ваш спритний опис.

Проворна команда буде покладатися на новий дизайн, а не на передню частину.

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

Спритний колектив проектує разом, а не дизайн, який диктує одна людина

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

Спритний колектив вирішує власне технічне керівництво, яке найкраще здійснити проект

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


6

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

Спритні команди не роздають один одному значки чи шапки, які говорять "Вітаємо, ти наш супер геній - ти єдиний, кому дозволено робити надпотайну роботу подвійного генія". Скоріше, у центрі уваги - РОБОТА НА РУКАХ. Якщо ви справді досвідченіший, то цей досвід повинен показувати, наскільки ваші проекти підштовхують роботу до завершення. Ваші самостійно вибрані завдання (картки) повинні відображати сфери, з якими ви найбільше знаєте. З іншого боку, якщо якийсь хлопець, що вийшов із коледжу, має кращу ідею, і він краще відповідає контексту, ніж щось, що придумає ветеран 40 років. з, чому на землі ми б пішли з біднішим дизайном? Наші робочі місця - це не кабінети терапії - вони там, де ми приходимо будувати чудові речі.

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

Отже, що відбувається з "керівництвом команди розвитку"? по-спритному? Нічого - вони просто краще живуть з цією назвою - вони АКТУАЛЬНО зможуть виробляти краще програмне забезпечення, ніж інші люди в команді. Інакше немає ніяких причин називати їх "ведучими" - це просто маленький значок або смішний капелюх, і це безглуздо. Багато людей вважають це загрозливим. Вони відчувають, ніби "працювали" на бейдж або смішну шапку. Хороші розробники не працюють над кумедними шапками. Вони працюють над тим, щоб створити чудове програмне забезпечення, і планують це робити, поки вони не процвітають - їх мета - щодня вдосконалюватися у створенні програмного забезпечення. Якщо це не ви, можливо, ви захочете заглянути в управління проектами. Ви, мабуть, будете щасливішими.


+1 за "РОБОТА НА РУКАХ". Я погоджуюсь зосередитись на найкращому рішенні того, що ви маєте досягти зараз. Справа не в тому, хто придумує ідею.
Kwebble

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

Так. Вони хороші інженери, тому вони виконують роль інженера (технічно - «члена команди»). Що б вони ще були?
Calphool

3

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

Отже, головний розробник залишається відповідальним за архітектуру системи та вибір технологій. Це дуже важливо: хоча гнучкість заохочує виникнення дизайну та рефакторинг, це має відбуватися на рівні об'єктів коду. Система в цілому потребує більш високого рівня попереднього проектування та жорсткості, в іншому випадку проект може ризикнути скоординуватись.

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

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


Це схоже на мій досвід, але я дійсно думаю, що «значків» та «капелюхів» більше, ніж потрібно. Майже немає різниці між тим, як хороший розробник думає про дизайн та тим, що думає архітектор про дизайн.
Calphool
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.