Чи має сенс Scrum при впровадженні нового бекенда компілятора?


15

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

Повторне написання бекенда - це значна кількість роботи. Я не бачу способу розбити це на розсудливі історії, не порушуючи критеріїв INVEST.

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

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

Я планую спробувати слідувати за Scrum, але чи я просто переглядаю рухи?

Чи є рекомендовані практики для такого роду проектів?


1
@Sklivvz оновлений має більше сенсу?
Дейв Хілліє

1
Як альтернативу scrum, погляньте на канбан. Вони обоє спритні, але AFAIK канбан краще для роботи, яку ви виконуєте, тоді як scrum краще для роботи, яку можна розділити на різні пріоритети.
Ізката

@Izkata Kanban все ще очікує пріоритетної черги на введення, або за значенням, або за часом прибуття. Ціннісна пропозиція, що становить чи нічого, є основним блокатором при розгляді будь-якої ітеративної моделі розвитку.
CodeGnome

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

2
Вимоги не зміниться. Ви просто не можете в це повірити.
JeffO

Відповіді:


22

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

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

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


1
Вимоги завжди змінюються, і думати, що вони не стануть, поки код не буде написано та затверджено (якщо припустити, що відповідальні дотримуються правил) просто відмовляються.
JeffO

@JeffO Я згоден: зміна вимоги є затребуваною особливістю гнучкості, наприклад, тому у нас є демонстрація.
Sklivvz

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

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

10

Звичайно, Scrum корисний. Це методологія, яка робить для вас дві речі:

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

Отже, є деяке значення в його використанні.

Я думаю, що деякі ваші передумови невірні, і саме там ви втрачаєтесь.

Я не бачу, як кожна історія може бути переговорною - всі вони потрібні робочому компілятору

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

Крім того, ви неправильно розумієте, що означає "договірні": це не обов'язково означає "необов'язково", і немає вимоги, щоб історії були необов'язковими в INVEST. Історія є цінною ціллю, і переговори про те, як досягти цієї мети. Безумовно, це буде більше, ніж спосіб впровадження кожної мовної функції. Там потрібні переговори.

Усі історії мають однаковий пріоритет, і не має значення, в якому порядку я їх доставляю.

Це невірно, як ви кажете нижче, що деякі історії не мають "бути обов'язковими", тому деякі, мабуть, є менш цінними. Але навіть у категорії "must have": деякі мовні особливості набагато основніші, ніж інші, і помірно.

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

Є й інші варіанти. Якщо ви збирали мову, схожу на С, строго кажучи, вам потрібні лише контур ifі gotoцикл, щоб мати (ледь) функціональну мову, і ви можете реалізувати while, forіrepeat як макроси. Якщо припустити, що досить просто написати попередній компілятор, ви можете придбати дешеве рішення про зупинку (ей, ми ведемо переговори ?:-)

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

На закінчення, щоб відповісти на ваше запитання прямо: чи потрібні вам гнучкі процеси, коли ваші вимоги незмінні? Точно ні! Вони придатні для використання? Напевно, так! Вони варті вашого часу? Напевно, ні - але чи не змінюються ваші вимоги? У моєму минулому досвіді "незмінні вимоги" => "власник лінивого продукту" - не правило, але варто пам’ятати.


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

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

+1, хоча один момент я тут пропускаю - це те, що вимоги до компілятора можна також скоротити "горизонтально", а не "підтримує функцію мови X". Компілятору може знадобитися оптимізувати речі (власна вимога), може вивести інформацію про налагодження (власна вимога), може виконати деякі вимоги до продуктивності тощо.
Doc Brown

Вимоги @DocBrown звичайно можуть бути горизонтальними, але історії повинні бути вертикальними.
Sklivvz

"Я, як користувач компілятора, хочу ввійти DavesCompiler -O9 program.c, і вихід повинен бути високооптимізованою версією program.c (більш офіційне визначення того, що означає високооптимізований засіб)" - звучить як розумна історія користувача для мене.
Док Браун

4

TL; DR

Усі елементи управління проектами додають накладні витрати. Не додайте накладні витрати, які вам не потрібні.

Scrum - неправильний молот тут (не будь цвяхом)

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

Крім того, коли ви говорите:

Усі історії мають однаковий пріоритет, і не має значення, в якому порядку я їх доставляю. Мені потрібно робити їх усі.

ви маєте на увазі пару речей:

  1. Проект має нульове значення, якщо всі історії не завершені на 100%.
  2. Історії не залежать одна від одної.

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

Пропоновані альтернативи

Будь-який проект розвитку може потенційно отримати користь від спритних практик. Зокрема, у вашому конкретному випадку я рекомендую:

  1. Переконайтесь, що всі ваші історії мають "визначення зробленого", яке включає тестування одиниці та приймання.
  2. Інтегруйте та рефактор часто; не залишайте перед собою величезну інтеграційну задачу в кінці проекту.

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


1
Я не претендував на індивідуальний розробник.
Дейв Хілліє

@DaveHillier "Я маю існуючу мову ... Я, мабуть, спробую це зробити ... Я планую спробувати слідувати за Scrum." Ніщо з цього нічого не говорить про команди, інших людей або необхідність формального управління проектами. Навіть якщо 347 з вас працюють над проектом, відповідь все одно справедливий, якщо ваше приміщення є дійсним. Якщо ні, оновіть своє запитання, і я докладу всіх зусиль, щоб відповісти було оновлено у відповідних випадках.
CodeGnome

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

4
@DaveHillier Я читав ваше запитання так само, як CodeGnome, що ви будете соло розробником цього проекту. Зловживання Iзамість Weймовірно , чому.
Ізката

Неправильний інструмент, неправильний молоток. Молоток - це молоток, не всі проблеми - це цвяхи :-)
Sklivvz

2

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

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

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

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

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

(Зверніть увагу, я ніколи не робив розбирань над проектом компілятора; прийміть поради з зерном солі.)


0

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

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


Scrum is not a set of strict rules to follow- Я думав, що саме навпаки. Хіба це не так, що у ньому є лише кілька правил, але ви повинні дотримуватися їх (наприклад, Щоденні стадії, Визначення готового, Історія)?
Uooo

Ви виступаєте за ScrumBut ?
Дейв Хіллєр

@Uooo лише перший із трьох згаданих вами Scrum, решта - це лише хороші практики, але не суворо принципові.
Sklivvz

@Sklivvz Це чому багато керівників проектів думають, що "ми робимо щоденні складання, тож ми робимо scrum" ? Scrum - це більше, ніж лише щоденні зміни.
Uooo

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