Як швидке прототипування вписується у спритну методологію?


12

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

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

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

Однак створення прототипів Python дало б нам багато зусиль для долара, що дозволить нам швидко досягти реальних результатів.

Чи вдалося вам включити швидке складання прототипів - сподіваємось в Python - на міцний спритний робочий процес у корпоративному середовищі?


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

3
"велика компанія, яка диктує використання спритного" - кумедна суміш слів "диктат" і "спритний" якось нагадала мені Маніфест напівздуханого спритності . Індивіди та взаємодія над процесами та інструментами ... і ми маємо обов'язкові процеси та інструменти для контролю того, як ці люди (ми надаємо перевагу терміну "ресурси") взаємодіють
gnat

Відповіді:


11

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

Існують різні випадки, які потрібно вивчити:

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

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

  3. Чи є прототип версією 0.x? Mininimum життєздатний продукт ? Потім використовуйте для цього гнучку процедуру. Якщо вам потрібно відновити його іншою мовою, вам, ймовірно, буде краще, якщо ви ставитеся до іншого продукту. Зауважте, що іноді це трактується як спосіб швидкого введення тексту у специфікацію ("це має робити те саме, що і прототип!"). Це дійсно поганий спосіб документування товару, але це, мабуть, краще пояснено як окреме запитання та відповідь :-)


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

@MartinMaat Під "прототипом" ви маєте на увазі "ранню версію товару, що доставляється замовнику, яка поступово розвивається в продукт ітеративно"? У цьому випадку, звичайно, ви маєте рацію, що це властиво тому, як спритний працює і три моменти, які я змушую пояснити, як саме. Це не те, що люди мають намір цим словом.
Sklivvz

8

Чи не швидке прототипування (тобто ітераційне та інкрементальне розвиток) не є цілим принципом Agile?

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

І Python не є (якщо це колись було) іграшковою мовою. НАСА та її підрядники використовують Python , і якщо це досить добре для них, це для мене досить добре.


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

1
Навіть якщо ви прототипуєте в Python і переписуєте частину або все це на Java, це не обов’язково погано (python не має профілю продуктивності, який потрібен деяким додаткам). "Почувши" мову - це не зовсім дзвінке схвалення. Враховуючи вибір, я особисто вибрав би іншу мову, ніж Java, але інші сили часто диктують вибір мови.
Роберт Харві

@ Роберт Харві: "Чи не швидке прототипування (тобто ітераційне та інкрементальне розвиток) є якоюсь цілою точкою Agile?": Наскільки я розумію, швидке прототипування означає зробити швидкий, викинутий прототип і після клієнта затвердив його, щоб створити реальний продукт (з належним дизайном тощо). У повороті у вас є компроміс між двома: у вас завжди є прототип, який є технічно "досить хорошим" (можливо, не такий хороший, як система, яка була розроблена вперед, але досить хороша для виробництва), щоб її можна було поставити як товару, як тільки клієнт його задовольнить.
Джорджіо

1
@Giorgio: «ні, це не те , що я хочу, я хочу , це прекрасно, але клієнти не знають , чого вони хочуть , поки ти не покажеш їм , і вони кажуть . Це " ви зробити це в коді або на аркуші паперу для мене це не має ніякого значення, якщо він визначає, що хоче клієнт.
Роберт Харві

2

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

Наведене посилання містить достатньо інформації про добрі практики, підводні камені шипів.

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


1

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

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

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


1

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


0

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


0

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

1) Сприяти спілкуванню

2) Залучайте користувачів до інтерв'ю з рішенням та отримуйте зворотній зв'язок

Caveat:

Прямий зв'язок між UX та інженерами НІКОЛИ не повинен замінюватися артефактами прототипування. Якщо можливо, з'єднання з інженером працює набагато краще, ніж спілкування через посередника (прототип).


0

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

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

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

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