Чи спритний підхід занадто зручним приводом для ковбоїв


73

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

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

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

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

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


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

2
Це може мати щось спільне з тим, чому багато оригінальних підписантів маніфесту "Agile" висловлюють неприязнь до терміну "спритний", як він використовується в більшості компаній. Натомість зараз вони говорять про такі речі, як "майстерність програмного забезпечення".
Дарсі Кассельман

1
По-перше, дозвольте сказати, що я НЕ фанат спритного. По-друге, я скажу, що, з мого досвіду, "capital Agile" просто уповільнює всіх (включаючи ковбоїв). Я ніколи не працював у ситуації, коли я відчував, що спритність дозволяє так званому "ковбойському кодеру".
ТМ.

1
Я не думаю, що називати «ковбойське кодування» правильним називати те, що ви описуєте. Це не індивідуальна проблема - це групова проблема. Це погане управління продуктами та командами.
мат b

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

Відповіді:


87

Я радий, що це ім’я

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


17
Ділберт (завжди) скелі ..
TheVillageIdiot

20

Agile більше не винен у поганій практиці розвитку, ніж BDUF. Проблема полягає у дисциплінованості чи її недостатності у застосуванні практики. Мета практики BDUF - визначити напрямок проекту та заздалегідь визначити ризики. Мета гнучких практик - зберегти стан розвитку досить гнучким, щоб швидко змінити напрямок. Швидкий проект міг би підготувати детально описані користувацькі історії, тому команда знає про майбутні вказівки та все ще вибирає лише 2 або 3 за ітерацією для повного впровадження. Проблема залишається тією самою, яка застосовується методологія: керівництво дозволяє ковбоям бігати за межею.

[BDUF: Великий дизайн спереду]


3
Ніколи не вдасться зірвати ковбоїв незалежно від підходу. Однак хоча б з водоспадом вони повинні були б принаймні створити вимоги doc, sepcification doc і т. Д. З проворними вони можуть, по суті, піти, просто забившись прямо в код.
sipwiz

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

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

1
Хупернікетес це правильно, проблема не в методиці; проблема полягає в тому, що команда управління дозволила ковбоям керувати відділом.
Джефф Сівер

7
@sipwiz: Навіть у водоспаді ковбої б'ють прямо у код. Врешті-решт вони задокументують все, що написали як специфікацію дизайну.
TMN

13

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

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

Тоді вам буде надана можливість вирішити їх у міру їх виникнення.

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


12

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


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

+1: @TMN, @CodexArcanum: У мене теж був такий же досвід. Не було жодного чемпіона користувача. Продажі диктували нові функції управління продуктами, які потім передавали їх на розвиток.
Джим Г.

7

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


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

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

2
@Craig Я не погоджуюся, що хороший дизайн неможливий. Знання кожної окремої тонкощі системи на передній панелі може виявитися майже неможливою, але це не означає, що дизайн, що відомо, не може бути виготовлений. Я маю на увазі, що навіть одне речення в рядку "Цей додаток буде написано як додаток MVC, використовуючи структуру сутності для DAL". Крім того, я бачив тендери, де є 180+ сторінок вимог, і ви не можете сказати мені, що недостатньо деталей, щоб створити досить хороший дизайн.
sipwiz

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

3
Також я думаю, що вам потрібно пам’ятати, спритний не означає ніякої специфікації.
Крейг

6

Я бачу захисні сили Agile Development, які говорять, що він не несе відповідальності за збої, спричинені ковбоями. Для успіху з Agile потрібна старанність та інтелект.

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

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

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

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


4
Невдачі в розвитку не є наслідком присутності ковбоїв. Невдачі в розвитку - результат відсутності управління.
Хупернікетес

@Huperniketes, це новини FANTASTIC. Програмісти ніколи не винні! Яку ідеальну професію ми обрали!
Відмінна думка

@ Подумайте, перестаньте обмежувати себе бінарним мисленням. Програмістів, безумовно, можна звинуватити в тому, що вони не виконали рівень своєї професії, але програмісти ніколи не винні в збоях проекту. Це відповідальність керівників проектів.
Хупернікетес

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

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

5

Agile - це добре, поки працює для вашої команди.

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

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

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

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

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

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

(Якщо ви ще не зрозуміли сказаного, я, принаймні, не є фанатом "Capitol-A Agile". З іншого боку, я не думаю, що це також заохочує ковбоїв.)


3

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

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


3

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


1
Не забувайте про параноїдальні чеки "if (var! = Null)", посипані по всьому коду ...
Jörgen Sigvardsson

3

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

Організація завжди працювала на порівняно нещільному "неформальному" підході. Я б не сказав, що це справді Agile, це більше "Agile в імені", а просто звичайна неіснуюча методологія на практиці. Різні команди працюють по-різному, але оскільки загальна організаційна культура не має ніякої іншої методології, окрім дуже нещільного процесу "Agile in name only" - це відносно ковбойський і хаотичний загалом - особливо в інтеграції (і цього дуже багато ).

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


1
Це дуже схоже і на мою ситуацію. І справа доходить до всього цього питання в тому, що якби "Agile" не було навколо організацій, ймовірно, він би дотримувався водоспаду та будь-яких його недоліків, це набагато перевершує те, що немає процесу.
sipwiz

2

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


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

Прототипування ....
sipwiz

2

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

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

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

Зараз наймовники Agile, XP, Scrum тощо говорять про крихкість саме цієї категорії методологій. Аргумент: чому використовувати методологію, яку може саботувати одна людина, якій не вистачає дисципліни, щоб дотримуватися всіх правил? Питання є правильним; однак, це симптом, а не причина. Якщо точний і змістовний (це найважча частина) набір метрик процесу визначений, перевірений та наданий своєчасний зворотній зв'язок, я думаю, що ми виявимо, що конкретна методологія має мало спільного з успіхом. (Анекдотично кажучи, я бачив успішні проекти з використанням безлічі методологій і вдвічі більше невдач, використовуючи ті самі методики)

То що таке показники? Вони залежать від проекту до проекту, команди до команди та періодично. Корисно, коли графік доставки важливий, тим, що я особисто використовував, є вміння оцінювання та якість. Більшість розробників можуть точно оцінити завдання, що тривають тиждень або менше. Таким чином, один підхід полягає в тому, щоб розділити проект на завдання, який триває тиждень розробника, і відстежити, хто зробив оцінку. У міру продовження проекту вони можуть змінити свої кошториси. Після завершення завдання, якщо його вимкнено більше ніж на 10% (1/2 на день), ми трактуємо це так само, як і помилку - ми визначаємо, чому оцінка була вимкнена (тобто таблиця бази даних не враховувалася), ідентифікуйте коригуючу дію (тобто залучайте DBA до оцінки), а потім рухайтесь далі. Використовуючи цю інформацію, ми можемо створювати такі показники, як кількість помилок оцінювання на тиждень, кількість помилок на розробника,

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

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


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

1

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

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

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


проворний без автоматизованих тестів просить головні болі
Стівен А. Лоу

1

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


1
Я б підозрював, що більшість із нас почали бути ковбоями.
Девід Торнлі

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

1

Ковбойські кодери хороші тим, що їм подобається швидко робити речі. Вони часто не так стурбовані питаннями великої картини або якістю коду, саме тому «ковбойський кодер» часто є епітетом. Їх методи зменшують ризики можливих витрат за несвоєчасне виконання проекту.

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

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


0

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

  • невірно - не вдається захопити вимоги.

  • непослідовні - пронизані суперечностями, оскільки вони містять достатньо інформації, щоб унеможливити їх письменник / читач.

  • відокремлені - вони не містять цінних відгуків від працюючої (хоча і виродженої) системи.

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