Підтримуйте рухливість із політикою нульових помилок / дефектів


18

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

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

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

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

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


2
Я знаю, що це лише приклад, але позбутися зайвої смуги прокрутки - особливість. Тепер, якщо ви спробуєте реалізувати цю функцію, а вона не працює, у вас з’явилася помилка.
JeffO

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

@JeffO - певно, ти певним чином погоджується зі мною. Ви просто називаєте це історією, а не називаєте її помилкою. Що для мене справді добре для цього випадку.
Аві

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

1
@Avi - Схоже, що це функція, яку слід завершити, щоб ваш поточний спритний підхід не затримував нові версії в майбутньому.
Рамхаунд

Відповіді:


28

Виправлення помилок перед написанням нового коду насправді є одним із дванадцяти пунктів тесту Джоеля . Джоел також пояснює, чому це обов'язково:

Загалом, чим довше ви чекаєте, перш ніж виправити помилку, тим дорожче (у часі та грошах) виправити.

У вас є вибір:

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

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

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

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

Зазначаючи, що ризик дозволити реалізації дуже важливих функцій перед виправленням незначних помилок є ризиком: де поставити обмеження? Чи є функція, яку запитують 1000 клієнтів, важливіша за помилку, з якою стикаються 100 клієнтів? Як оцінити, чи потрібно робити певну функцію перед виправленням даної помилки?

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


+1 Тест Джоеля прийшов на думку, як тільки я прочитав заголовок!
jkoreska

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

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

13

Окрім занурення в конкретні деталі вашої ситуації, ви краще переконайтесь, що ви отримали основні, основні речі.

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

Індивіди та взаємодія над процесами та інструментами

Відповідаючи на зміни протягом наступного плану


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

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

Індивіди та взаємодія над процесами та інструментами,
і ми маємо обов'язкові процеси та інструменти для контролю того, як ці люди (ми віддаємо перевагу терміну "ресурси") взаємодіють

Працює програмне забезпечення над вичерпною документацією до
тих пір, поки це програмне забезпечення є всебічно задокументованим

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

Відповідь на зміни, наступні за планом, за
умови створення детального плану для реагування на зміну, і його слід точно виконувати


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

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

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

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

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

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


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

12

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

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

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

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

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


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

2

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

Моя пропозиція - змусити пріоритет помилок збільшувати кожен спринт. Скажімо, у вас помилка на рівні 5 (шкала 1-висока, 5 = низька). Він починається як 5, 4 спринти пізніше, його рівень рівня 1. Однак набір розуму, необхідний для обчислення пріоритету, - "Поточний пріоритет - Кількість спринтів", а не "Збільшення пріоритету видатних помилок у кінці кожного спринту" - це запобігає "скидання" пріоритету на низький, щоб його далі відкласти.

Помилки рівня 1 повинні бути вирішені в наступному спринті ......

Це просто пояснити, легко здійснити ....

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


Це чудова ідея! Я винесу це на свою команду для обговорення! Я думаю, що йому ще потрібно ще деякі вдосконалення, які я спробую придумати. Але я люблю основну ідею.
Аві

Отже, після того, як ми обговорювали це , ми зрозуміли , що це може привести нас до того самого місця , в якому багато помилок звертаються до рівня 1: /
Avi

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

0

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

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

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


-1

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

Сподіваюся, це допомагає :)


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