Чи є гранична вигода у виправленні помилок [закрито]


27

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

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

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



2
Ваше запитання досить незрозуміле. "не всі помилки потрібно виправляти" означає, що є такі, які не варто виправляти. "Чи дійсно є гранична користь у виправленні помилок", мені здається, ви маєте на увазі щось інше. Чи можете ви поясніть, будь ласка?
Doc Brown

2
Хіба це не для того, щоб власник продукту розібрався? Чому, на вашу думку, потрібно переконати їх у цьому?
Перестаньте шкодити Моніці

@Goyo Я не задаю це питання спеціально, щоб переконати їх. З цією концепцією я стикався деякий час тому, але не можу знайти більше ресурсів. Також не рідкість розробник програмного забезпечення знаходиться на керівній посаді. Тож мені сама в майбутньому може знадобитися ця інформація.
Gökhan Kurt

2
@ GökhanKurt: Із "Усі помилки потрібно виправити" не випливає, що всі вони однаково важливі. Деякі можуть бути більш руйнівними, ніж інші, і тому мають більший пріоритет.
ЖакБ

Відповіді:


66

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

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

Усі ці фактори слід враховувати при визначенні пріоритетів.

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


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

25
@Doval Ви неправильно розумієте. Те, що сказав Жак - це функція, яка ще не була написана, не має поточної вартості. Або іншими словами, відсутність функції не ускладнює реалізацію іншої функції (якщо, звичайно, остання не залежить від першої). З іншого боку, помилка ускладнює щось інше, крім виправлення. Таким чином, "неписані функції" та "непоправлені помилки" відрізняються тим, що перший не впливає на вашу кодову базу, тоді як другий.
Себастьян Редл

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

2
Як приклад зарази помилок: В одному з моїх проектів все спрацювало нормально, за винятком того, що пам'ять звільнилася у фрагменті коду, який не завжди працював. Як це сталося, у всьому коді, який я писав до цього часу, це завжди було; У мене не було ні витоків пам’яті, ні подвійних звільнень, просто деякі налагоджувальні журнали, які здавалися не в порядку. Оскільки справи працювали, я цього не виправляв. Потім я додав ще трохи коду, ті більше не вишикувалися, і я почав отримувати витоки пам'яті. Такі помилки незначні, але їх варто виправити; на жаль, їх також важко розібратися з фактично незначних помилок.
Позов про Моніку

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

12

Ось хороша довідка

http://www.joelonsoftware.com/articles/fog0000000043.html

Чи виправляєте помилки, перш ніж писати новий код? Перша версія Microsoft Word для Windows вважалася проектом «марш смерті». [...] тому що фаза виправлення помилок не була частиною формального розкладу [...]

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

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

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


3

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

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

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

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

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

Дивіться також ці дві публікації тут про програмування програмного забезпечення:

Вирішення яких помилок призведе до найбільшої користі

Майже кожна повідомляється про помилку є першочерговою помилкою


2

Не всі ненавмисні або небажані аспекти поведінки програмного забезпечення - це помилки. Важливо - гарантувати, що програмне забезпечення має корисний та задокументований діапазон умов, за яких можна покластись на корисну роботу. Розглянемо, наприклад, програму, яка повинна приймати два числа, помножувати їх і виводити результати, і яка виводить помилкове число, якщо результат становить більше 9,95, але менше 10,00, більше 99,95, але менше 100,00 і т.д. Якщо програма була написана для обробки чисел, продукт яких був між 3 і 7, і ніколи не буде закликаний обробляти будь-яких інших, фіксація його поведінки з 9,95 не зробить її кориснішою за призначенням. Однак це може зробити програму більш придатною для інших цілей.

У такій ситуації, як описано вище, існували два розумні дії:

  1. Вирішіть проблему, якщо це зробити практично.

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

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

Навіть якщо неможливість правильно обробити значення 99,95 до 100,0 є результатом помилки програмування [наприклад, вирішити вивести двозначний ліворуч від десяткової крапки перед округленням до одного місця після, таким чином, отримавши 00.00], це слід вважати лише a помилка, якщо в іншому випадку програма буде вказана як така, що дає значущий результат у таких випадках. [Між іншим, вищезазначена проблема сталася в коді Turbo C 2.00 printf; в цьому контексті це явно помилка, але код, який викликає несправний printf, був би помилковим, лише якщо він може отримати результати в проблемних діапазонах].


0

У вільному сенсі, так, не всі помилки потрібно виправляти. Вся справа в аналізі співвідношення ризик / вигода.

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

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

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

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

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


-4

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

Тож власне їх "аргумент"

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

З помилками слід розставляти пріоритети та поводитися з ними "на порядок" так само, як нові запити на функції (але, мабуть, над останніми).


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