Prawie każdy zgłoszony błąd jest błędem o wysokim priorytecie [zamknięty]

50

Zauważyłem pewien wzorzec podczas pracy nad kilkoma projektami oprogramowania: znaczna większość zgłoszonych błędów miała wysoki / bardzo wysoki priorytet. Zapytałem niektórych kolegów, dlaczego tak się dzieje, i powiedzieli, że jeśli błąd nie ma tego priorytetu, bardzo rzadko Bug zwraca uwagę programistów, co rzeczywiście ma sens.

Chciałem więc wiedzieć, czy ten problem jest powszechny, czy po prostu miałem pecha. Przeprowadziłem szybkie wyszukiwanie w Google i okazało się, że niektóre zespoły wdrażają wytyczne dotyczące zgłaszania błędów lub mają osobny zespół „Bug Triage”. Jeśli napotkałeś i rozwiązałeś ten problem, jakie podejście działało dla Ciebie?

To pytanie dotyczy w szczególności problemu „Inflacji priorytetowej”: jeśli zmierzysz się ze scenariuszem i jakie środki będą skuteczne w przypadku tego problemu.

Carlos Gavidia-Calderon
źródło
9
Dlatego „priorytet” jest głupi. Czy X a Priorytet 2 jest bez znaczenia, czy X jest ważniejszy niż Y jest odpowiedzialny i użyteczny. Liczy się tylko porządek.
Nathan Cooper
7
@NathanCooper Tak, ale widzisz, jeśli mamy błąd, który jest naprawdę ważny, i musimy naprawdę dać mu to dodatkowe wsparcie, aby dowiedzieć się, co robimy? Zgadza się - ustawiliśmy priorytet na 11.
gbjbaanb
6
@CarlosGavidia, dlatego potrzebujesz sposobu, aby wziąć priorytet z rąk osoby zgłaszającej błąd i znaleźć inny sposób, który ma na celu określenie ROI w celu usunięcia błędu.
2
@JuliaHayward osobiście lubię pef / rev, choć patrząc na metrykę „bólu” w przypadku błędów: poprawianie triage błędów za pomocą User Pain jest również bardzo dobre. Żadne z nich nie pozwala osobie zgłaszającej błąd ustawić ogólny priorytet błędu („priorytet” w metodzie bólu związanego z błędem dotyczy tego, co blokuje - a nie tego, jak ważne jest naprawienie).
16
Prawdziwa historia: kiedyś rozwiązałem ten priorytetowy problem inflacji, dzwoniąc do moich klientów i grożąc, że zmienię nazwy różnych priorytetów na „pomarańczowy”, „kumkwat” i „orangutang”, jeśli nie zrobiliby tego lepiej wystarczające serwery, aby pole miało sens. Udało się (co było niefortunne, ponieważ faktycznie miałem uprawnienia administratora do stworzenia poziomu „kumkwat” i raczej nie mogłem się doczekać)
Cort Ammon,

Odpowiedzi:

42

Zapytałem niektórych kolegów o to, co może się dziać, i powiedzieli, że jeśli błąd nie ma tego priorytetu, bardzo rzadko Bug zwraca uwagę programistów, co rzeczywiście ma sens

Właściwie, jeśli mnie o to poprosisz, to nie. Im więcej (używanych) poziomów priorytetu, tym więcej masz informacji. Jeśli faktycznie masz tylko jeden priorytet, to tak samo, jak w ogóle brak priorytetu.

A ponieważ nadal masz tę samą liczbę błędów do rozwiązania i taką samą liczbę roboczogodzin, aby to zrobić, wynika z tego, że zostanie użyta inna heurystyka, być może ta zerowa - „kto pierwszy, ten lepszy”. A więc masz teraz wskaźnik priorytetu błędów, z wyjątkiem tego, że jest to czas przybycia i nie jesteś już pod twoją kontrolą.

Może to świadczyć o tym, że na naprawę błędu nie przydzielono wystarczającej ilości zasobów (istnieją takie zasady, jak „ Brak nowych funkcji do czasu usunięcia błędów ”. Joel się zgadza ; zrozumienie ograniczeń i konsekwencji jest decyzją biznesową ).

W jednym projekcie, nad którym pracowałem, nadchodzące błędy były gromadzone w „buforze bez priorytetu” i w każdy poniedziałek przeglądaliśmy listę błędów, ocenialiśmy trudność (bardzo przybliżona ocena; częściej niż nie, po prostu wstawialiśmy, „Średnia”) i posortuj je według dostępnego czasu. Zwykle powodowało to, że lista była nudna, nieciekawa lub uważana za trudną; aby to zrównoważyć, przełożeni i marketing mieli tygodniowo pewną liczbę kredytów, które mogli wydać, aby podnieść priorytet ulubionych błędów, i otrzymywali zwrot kosztów za nierozwiązane błędy (to ustalało limit, o ile błąd, który gardzi deweloperem, może zostać opóźniony) .

Możliwe było również łączenie, anulowanie i dzielenie błędów; Pamiętam jeden moduł, który był tak beznadziejnie wadliwy, że zatopiliśmy około dwudziestu lub trzydziestu raportów o błędach w jednym „przepisaniu tego od zera”, który następnie został podzielony na „wyraźnie określ dane wejściowe i wyjściowe nieszczęsnego”, „napisz testy aby upewnić się, że wejścia i wyjścia są zgodne ze specyfikacją ”itd. Ostatnim elementem było „wydrukowanie starego kodu na papierze z recyklingu, wyniesienie go na trawnik i podpalenie” (my też to zrobiliśmy. Pamiętam, jak dobrze się czuł. Na zmianę pisaliśmy; to było przezabawne ).

Po kilku targach mieliśmy listę rzeczy do zrobienia w tym tygodniu, która została podzielona na „zrobi”, „może zrobić” i „nie mogę”, które zostały przesunięte na następny tydzień. W tym momencie pojawiło się dodatkowe targowanie: mieliśmy pięćdziesiąt godzin, aby przeznaczyć je na błędy i byliśmy w 95% pewni, że naprawimy pierwsze dwadzieścia. Zarząd zdecydowanie chciał naprawić dwudziesty pierwszy błąd i nie pozostał mu żaden kredyt; zaproponowalibyśmy wtedy zamianę tego błędu na jeden z listy „Zrobię”, albo ktoś powiedziałby: „Zabierz mnie z podgrupy FooBazFeature na kilka dni i zrobię to”, lub powiedzielibyśmy: „Potrzebujemy więcej siła robocza".

System tak naprawdę nikogo nie satysfakcjonował, ale uważano to (przynajmniej wśród programistów) za dobry znak.

Niektóre dodatkowe negatywne wzorce, które się pojawiły, to „Wishful Thinking” ze strony menedżerów („Stwierdziłeś, że błąd 57212 wymaga ośmiu godzin. To jest nie do przyjęcia. Zrób to cztery”) i „Debuguj przez Fiata” („Rób, co chcesz” ale te czterdzieści błędów musi zostać naprawionych przed wielką demonstracją w przyszłym tygodniu. Nie możesz mieć więcej czasu, nie możesz mieć więcej ludzi "). Również Zespół Boksera („Będę ciężej pracował”), który zwykle działał bardzo dobrze przez krótki czas , ale zwykle doprowadzał dewelopera do szału lub wychodzenia na bardziej zielone pastwiska.

LSerni
źródło
Uwielbiam część „podpaloną”. Mamy podobny plan dla jednego z naszych modułów :)
Roman Reiner,
1
Jestem pod wrażeniem, że miałeś tak zorganizowany / negocjowany system i nadal udało ci się wypalić programistów. To musiał być jeden intensywny projekt!
niż do
W rzeczywistości mieliśmy kilku intensywnych menedżerów i nie zawsze z dobrą ludzką dynamiką. Od czasu do czasu pojawiały się ... problemy. Niektórzy poradzili sobie, inni nie.
LSerni,
Pierwotne pytanie brzmi: „(jak uniknąć) każdy błąd ma wysoki priorytet”. Technicznie rzecz biorąc, ta (zaakceptowana!) Odpowiedź tak naprawdę jej nie odpowiada. Wspomina jedynie o „nadchodzących błędach gromadzono je w buforze niepriorytetowym i w każdy poniedziałek przeglądaliśmy listę błędów, (z grubsza) szacowaliśmy trudności i sortowaliśmy je według dostępnego czasu”. Ale ta odpowiedź daje wiele dobrych obserwacji, dobre jedzenie do namysłu.
RayLuo
@RayLuo Nie, to odpowiedź. Zamiast pozwolić reporterom ocenić priorytet, programiści oceniają priorytet.
JAB
47

Jeśli masz ten problem, w którym użytkownicy przypisują błędy o coraz wyższym priorytecie, jedynym realistycznym rozwiązaniem jest mechanizm segregowania. Wszystkie błędy są zgłaszane z dowolnym priorytetem, który im się podoba, ale jakiś słaby menedżer będzie musiał przejrzeć każdy nowo zgłoszony błąd i zresetować swój priorytet do rozsądnego poziomu.

Po chwili użytkownicy otrzymają wiadomość lub możesz zmienić system raportowania, aby każdy błąd miał domyślny priorytet. Jeśli chcą eskalacji, będą musieli skontaktować się z kimś, aby go podnieść, co będzie wymagać uzasadnienia. Już sam ten fakt spowoduje, że 99% wszystkich błędów zostanie pozostawionych bez eskalacji przez użytkownika.

Oczywiście masz więcej błędów, niż możesz przetworzyć, więc być może musisz wziąć udział w naprawie błędów, aby usunąć zaległości. To pokaże użytkownikom, że ich błędy zostaną naprawione bez potrzeby oznaczania ich jako super-super-dooper-naprawdę-nie-uczciwie-tym razem-ważne.

gbjbaanb
źródło
8
Nie, czekaj. Wygląda na to, że lubisz ... Ale to nie może być ... Są naprawdę deweloperzy, którzy nie mają więcej błędów niż są w stanie przetworzyć? Poważnie? :-D
Martin Ba
49
@MartinBa YMMV, ale pracowałem w miejscach, w których poświęciliśmy dużo czasu na dokładne zaprojektowanie i rozwinięcie naszego produktu, i chociaż znaleziono błędy, były one dość rzadkie. Dzisiaj, dzieciaki, pisząc kod bez mnóstwa przemyślanego projektu, nic dziwnego, że spędzasz cały swój czas na testowaniu i refaktoryzacji :-)
gbjbaanb
5
W rzeczywistości, jeśli ktoś poświęci wystarczająco dużo czasu na testowanie jednostki, błędy szybko spadną. W zespole scrum, właściciel produktu byłby tym, który ponownie podkreślałby znaczenie błędów, a właściciele produktów mają mieć wystarczającą wiedzę w dziedzinie biznesu, aby ocenić prawdziwe znaczenie błędów. Jeśli błędy nigdy nie trafią do zaległości sprintu, właściciel produktu nie wykonuje wystarczająco dobrze swojej pracy.
Cronax,
14
@Cronax, jeśli ktoś poświęci wystarczająco dużo czasu na testowanie jednostek czasu, okaże się, że nie masz już czasu na napisanie żadnej funkcji. Sądzę więc, że to nie zatrzymuje żadnych błędów :-)
gbjbaanb,
4
@gbjbaanb, o ile trzymasz się rzeczywistych testów jednostkowych i nie przesadzasz, zwykła miara zwinności / scrum wydawania 10-20% testów jednostkowych czasu projektowania wydaje mi się dokładna. Nie możesz przetestować wszystkiego, ale to samo bez względu na to, jaki rodzaj testów wykonujesz i nie jest celem testowania. Po prostu upewniasz się, że Twój kod działa zgodnie z jego przeznaczeniem, tester oceni, czy jest odpowiedni do określonego celu.
Cronax,
14

ZASTRZEŻENIE: Nie miałem jeszcze doświadczenia z zgłaszanymi przez użytkowników shenaniganami z priorytetami błędów. Wiem, że pytanie o to pyta, ale może pomóc mieć perspektywę osoby postronnej.

Twój problem nie polega na tym, że masz za dużo błędów o wysokim priorytecie. Problem polega na tym, że masz zbyt wiele osób, które mają bezpośrednią kontrolę nad priorytetem błędu. Jeśli każdy użytkownik może bezpośrednio przypisać priorytet do swojego błędu, prawie automatycznie zgłosi swój problem jako wysoki priorytet.

Możesz sprawić, że priorytet błędu musi zostać skonfigurowany przez kierownika lub drona pomocy technicznej, ale może to prowadzić do faworyzowania i inżynierii społecznej, w których klient otrzymuje sztucznie wyższy priorytet ze względu na swój status lub ponieważ umie tworzyć wiadomości sprawiają, że wydają się ważniejsze. Jest również o wiele bardziej pracochłonny.

Istnieje pośredni punkt, w którym użytkownicy mają pewną kontrolę nad priorytetem, ale w sposób, który utrudnia wykorzystanie systemu. Zasadniczo zmuszasz użytkowników do korzystania z szablonu do zgłaszania błędów. Najpierw wybierają kategorię:

  1. Program staje się bezużyteczny lub ulega awarii, gdy coś robię.
  2. Program ma defekt graficzny, który wpływa na funkcjonalność.
  3. Program nie pozwala mi zrobić czegoś, co powinienem być w stanie zrobić.
    Program pozwala mi zrobić coś, czego nie powinienem być w stanie zrobić.
  4. Program daje zły wynik, gdy coś robię.
  5. Program trwa zbyt długo, aby coś zrobić.
  6. Program ma defekt graficzny, który nie wpływa na funkcjonalność.
  7. Program ma wadę, która nie pasuje do żadnej z powyższych kategorii.

Aby podać przykłady:

  1. Mój iPhone ulega awarii, gdy otrzymuję wiadomość zawierającą hebrajskie symbole.
  2. Mój ekran blokady Androida jest obrócony w taki sposób, że połowa ekranu spada.
  3. Mój telefon z Androidem czasami nie akceptuje mojego kodu blokady, mimo że wprowadziłem właściwy kod.
  4. Kiedy próbuję przejść do PhoneHub.net, mój telefon przekierowuje mnie na stronę dla dorosłych.
  5. Kiedy otwieram aplikację Facebook, otwieranie zajmuje minutę, nawet przy szybkich połączeniach i bez uruchomionych innych aplikacji.
  6. Twoja aplikacja ma błąd pisowni.
  7. Znalazłem usterkę bezpieczeństwa w twoim programie i chciałbym to zgłosić.

Jak widać, każdy z tych błędów ma inny stopień ważności, a kategorie są z grubsza uporządkowane na podstawie tej ważności. Następnie możesz przypisać każdemu błędowi priorytet na podstawie kategorii, która go zgłasza, oraz słów kluczowych pojawiających się w opisie. Błędy w kategorii 7 powinny mieć przypisany priorytet ręcznie.

Pamiętaj, że może to nastąpić w pełni automatycznie i powinieneś pozwolić, aby stało się to automatycznie; w rzeczywistości automatyzacja jest tutaj kluczem. Użytkownicy mają tendencję do przeceniania własnego znaczenia dla firmy, więc nie widzą problemu w zgłaszaniu swoich błędów jako wyższy priorytet niż powinni. są mniej skłonni do celowego umieszczania swojego błędu w innej kategorii, ponieważ to wymaga od nich kłamstwa na temat błędu.

Użytkownicy mogą oczywiście wprowadzać swoje błędy w niewłaściwej kategorii. Pierwszą rzeczą, którą powinieneś zrobić, to od wersji 1.0 wyświetlać przyjazny komunikat zachęcający użytkowników do dostarczania dokładnych informacji o błędzie, aby pomóc programistom szybciej go znaleźć i naprawić. Większość użytkowników zrozumie i przestanie błędnie zgłaszać błędy. Niektórzy użytkownicy mogą nadal podawać nieprawidłowe informacje. Kiedy to nastąpi, wyślij tym użytkownikom delikatne przypomnienie pocztą, że ważne są dokładne informacje i nie nadużywaj systemu. Jeśli nadal będą fałszować zapisy, ostrzeżesz ich, że umyślnie nadużywają systemu, a ciągłe nadużycia spowodują, że ich błędy będą automatycznie przypisywane do niższej kategorii. Jeśli będą się utrzymywać, możesz dostosować ich mnożnik błędów.

Możesz zobaczyć części tego systemu w sytuacjach wymagających dużej przepustowości: gigantyczne firmy technologiczne, takie jak Microsoft, Facebook, Google, firmy hazardowe z dużą liczbą użytkowników, takie jak Valve i Blizzard, niektóre rządy ... Chociaż nie jestem pewien z działań za kulisami zauważasz, że ich system wsparcia dla użytkownika ma podobny interfejs do tego, co sugeruję tutaj, z systemem ścisłej kategorii.

Nzall
źródło
Bardzo dobra odpowiedź. Użytkownicy nigdy nie powinni mieć prawa do ustawiania żadnego rodzaju priorytetu w zgłoszeniu błędu. Kategorie to bardzo dobra rada. Wszelkie ręczne ustawienia priorytetów powinny być dokonywane przez właściciela produktu lub podobny podmiot. W naszych projektach rozwojowych problemy pojawiające się podczas testowania są priorytetowe dla właściciela produktu podczas spotkań dyskusyjnych z mistrzem scrum.
respekt
11

Jak powiedzieli ludzie, dlatego ludzie zgłaszający błędy nie mogą przypisać priorytetu. Zespół programistów powinien kontrolować własne zadania (w zakresie ustalonym przez wyższe kierownictwo). Więc ktoś dalej mówi: „Pracuj nad aplikacją, napraw funkcję, spraw , by była lepsza w tym ”, a zespół może zdecydować, jak to zrobić, ponieważ to oni mają wiedzę techniczną niezbędną do oceny, w jaki sposób najlepiej osiągnąć to, czego chce zarząd.

Osoby zgłaszające błędy powinny przypisywać poziomy wpływu lub dotkliwości , które mają określony zakres. Możesz łatwo wzywać ludzi, aby nie trzymali się ustalonego poziomu dotkliwości, ponieważ masz materialne dowody na te poziomy. Na przykład:

  1. Całkowita utrata funkcjonalności
  2. Częściowa utrata funkcjonalności
  3. Powszechne zmniejszenie skuteczności
  4. Zlokalizowane zmniejszenie skuteczności
  5. Irytacja lub przeszkoda (istnieje obejście)
  6. Kosmetyk
  7. Nikt nie zauważył, znaleziono podczas niejasnego testu eksploracyjnego

Na początek możesz użyć tych poziomów jako tępego instrumentu, aby wskazać, że przesunięcie niektórych tekstów tytułowych nie jest błędem poziomu 1, ponieważ nie powoduje, że cała aplikacja jest bezużyteczna. Gdy wpadną na pomysł, możesz go uszczegółowić i rozpocząć debatę, czy usterka w aktualizacji tego jednego pola tekstowego to poziom 5, ponieważ możesz go naprawić, klikając kilka razy prawym przyciskiem myszy w polu tekstowym, czy poziom 4 ponieważ spowalnia to wszystkich w księgowości, przez co przetwarzanych jest mniej formularzy na godzinę.

Po uzyskaniu przydatnych, mierzalnych informacji o tym, jak poważny jest błąd w Twojej organizacji , przypisanie priorytetu staje się oczywiste. To, co obecnie powoduje największy problem dla organizacji - utracone zyski, uszkodzenie wizerunku publicznego, niezadowolenie pracowników, cokolwiek - będzie miało wysoki priorytet, a ty będziesz dalej pracować.

anaksymander
źródło
To. Krótka wersja do celów PR jest taka, że ​​priorytet jest zawsze zależny od innych rzeczy, dlatego też można o tym decydować jedynie na podstawie porównania z innymi rzeczami w kolejce. Tylko dlatego, że twoja rzecz najwyraźniej wymaga robienia, nie oznacza, że ​​ma ona najwyższy priorytet.
Steve Jessop,
1
Nie należy lekceważyć, że problem o największym wpływie może być znacznie trudniejszy do rozwiązania niż problem o nieco mniejszym wpływie. Mam na myśli, nad czym pracowałbyś, gdybyś mógł naprawić dwa błędy, każdy kosztujący 100 € dziennie, lub jeden kosztujący 200 $, przy takim samym wysiłku?
Deduplicator
1
Trafne spostrzeżenie; uwzględnione zostaną również szacunki nakładów.
anaximander,
@Deduplicator Przepraszamy, ale nie dostałem twojego 100 € i 200 $ analogu. Czy próbowałeś zasugerować nieco mniejszy wpływ, ale o wiele łatwiejsze rozwiązanie, należy rozwiązać przed skutkiem o największym wpływie, ale o wiele trudniejszym? Innymi słowy, mówiłeś o koncepcji zwrotu z inwestycji (ROI)?
RayLuo
10

Wygląda to trochę tak:

Mgr: nad czym pracujesz? Dev: zadania o niskim priorytecie Mgr: nie powinieneś pracować nad zadaniami o wysokim priorytecie?

Klient: kiedy mój błąd zostanie naprawiony? Dev: to niski priorytet, mamy zadania o wysokim priorytecie. Klient: och, więc ustaw mój status błędu na wysoki priorytet.

Doprowadzi to do coraz większego priorytetu. Widzę, że już przekroczyłeś wysoki priorytet do bardzo wysokiego priorytetu. Następne będą:

  1. Super wysoki priorytet
  2. Ultra wysoki priorytet
  3. Bardzo super bardzo wysoki priorytet.
  4. Bardzo Super Ultra Mega Wysoki priorytet.

itd itd.

Tak, to normalny proces. Tak długo, jak przypisanie priorytetu nie wiąże się z żadnymi kosztami, a dzwoniący ma wpływ, oczywiście postarają się rozwiązać problem w najszybszy sposób i ustawić najwyższy priorytet.

Istnieją zasadniczo 2 sposoby na przeciwdziałanie temu:

  1. Odejmij kontrolę od klienta w zakresie poziomów priorytetów.
  2. Powiąż koszt z klientem w celu podniesienia poziomu priorytetu.
Pieter B.
źródło
7
To nie jest normalny proces. Klienci nie mają żadnej interakcji z programistami na tym poziomie, jeśli tak się dzieje, zarząd całkowicie i całkowicie nie wykonuje swojej pracy.
Davor Ždralo,
@ DavorŽdralo może proces nie jest tu właściwym słowem. Miałem na myśli, że to normalne, co się dzieje.
Pieter B,
3
Jest to normalny proces, o ile klient zawsze będzie odczuwał, że napotkany błąd jest ważniejszy niż prawdopodobnie. Jednocześnie deweloperzy są znani z niedoceniania znaczenia błędów. Właśnie dlatego Scrum ma właściciela produktu, który siedzi pomiędzy nimi ze znajomością domeny biznesowej w połączeniu z ogólnym widokiem, dokąd zmierza aplikacja. Są one wyjątkowo przydatne do prawidłowej oceny priorytetu każdej historii lub błędu.
Cronax,
5

Można dodać do systemu coraz wyższy poziom priorytetu, szczególnie jeśli jest to Jira. Nadawanie nowym wysokim priorytetom coraz bardziej głupie, ale okropne nazwiska mogą zwiększyć efekt Hawthorne'a w jakości wyborów priorytetowych dokonanych przez wszystkie strony. Jeśli najwyższy priorytet ma naprawdę dziwaczną nazwę, efekt może być trwały. W końcu, kiedy ktoś wybierze priorytet, musi rozważyć społeczne konsekwencje wyboru priorytetu „błąd śmierci”, a nie zwrócić na nie należytą uwagę. Zatem najwyższy priorytet jest de facto zarezerwowany na coś, co stało się z CTO w domu przed jego gośćmi lub inne zdarzenia o podobnej widoczności.

Cardiff Space Man
źródło
4

Wprowadź koszt obsługi zgłoszeń. Możesz zezwolić użytkownikowi tylko na zgłaszanie liczby X elementów o wysokim priorytecie w danym okresie, liczby Y elementów o średnim priorytecie i Z o niskim priorytecie.

Oczywiście oznacza to również, że zespół programistów i kierownictwo będą musieli zagwarantować, że pewna liczba z nich zostanie naprawiona - wszystkie przedmioty o wysokim priorytecie, większość przedmiotów o średnim priorytecie i (być może) niektóre elementy o niskim priorytecie w określonym czasie.

Ale jeśli to zadziała, kierownictwo będzie musiało się w to wkupić, w przeciwnym razie całe ćwiczenie będzie stratą czasu.

Ostatecznie jednak Twoja szczególna sytuacja wydaje się świadczyć o problemie polegającym na tym, że kierownictwo nie przeznacza wystarczających zasobów na rozwiązywanie problemów związanych z pomocą techniczną. Gdyby problemy były rozwiązywane na czas, to nie sądzę, żeby tak się stało.

Coś takiego zostało wdrożone w pierwszej firmie, dla której pracowałem, ponieważ proces wsparcia był dysfunkcyjny i doprowadził do sytuacji, w której jeśli wszystko jest nagłe, nic nie jest. W naszym przypadku, po opanowaniu wewnętrznej sytuacji, nowy menedżer ds. Rozwoju oprogramowania nałożył ostry limit na liczbę problemów o wysokim priorytecie, które klient może złożyć w zależności od tego, ile zapłacił w ramach umów wsparcia. Jeśli przekroczą limit, albo zakaszlą więcej gotówki, albo problem wsparcia zostanie obniżony w pierwszej kolejności.

użytkownik1666620
źródło
1
Mogłem nie rozumieć twojej istoty, ale jeśli oprogramowanie jest ogólnie niskiej jakości, dlaczego klient powinien być karany za zgłoszenie serii błędów o wysokim priorytecie?
Robbie Dee,
@RobbieDee, który twierdzi, że oprogramowanie jest niskiej jakości? To nie jest pytanie o to, jak naprawić złą praktykę w kodzie, chodzi o to, jak powstrzymać klientów od eskalacji każdego problemu wsparcia do wysokiego priorytetu.
user1666620,
Mówisz o hipotetycznym koszcie lub limicie?
Robbie Dee,
@RobbieDee - To zależy. Coś takiego zostało wdrożone w pierwszej firmie, dla której pracowałem, ponieważ proces wsparcia był dysfunkcyjny i doprowadził do sytuacji, w której jeśli wszystko jest nagłe, nic nie jest. W naszym przypadku, po opanowaniu wewnętrznej sytuacji, nowy menedżer nałożył twardy limit na liczbę spraw o wysokim priorytecie, które klient mógł złożyć w zależności od tego, ile zapłacił w ramach umów wsparcia. Jeśli przekroczą limit, albo zakaszlą więcej gotówki, albo problem wsparcia zostanie obniżony w pierwszej kolejności.
user1666620,
Ach, OK - to ma sens.
Robbie Dee,
3

Zdarza się to niezwykle często w dużych korporacjach, w których IT jest postrzegane jako pomocnicze i / lub zlecane na zewnątrz. Ludzie biznesu nie rozumieją oprogramowania i nie dbają o to, obchodzi ich tylko to, że „ich” błąd został naprawiony wczoraj, niezależnie od tego, jak nie jest krytyczny. Nie zdają sobie sprawy ani nie dbają o to, że istnieje setka innych użytkowników zgłaszających błędy, a zespół może około 5 programistów jest w stanie to naprawić.

Sytuację pogarsza słabe zarządzanie, zwłaszcza menedżerowie niezwiązani z IT, którzy nie mogą powiedzieć „nie” lub po prostu pozwalają przedsiębiorcom ustawić priorytet błędu. (W obu przypadkach wspomniany menedżer nie wykonuje swojej pracy.) Większość menedżerów będzie priorytetowo traktować błąd, z którym skontaktowano się po raz ostatni, ponieważ „jest to pilne”; wynik netto jest taki, że programiści kończą przeskakiwanie od błędu do błędu, w związku z czym naprawianie pojedynczego błędu trwa dłużej (przełączanie kontekstu), a na koniec wszyscy są niezadowoleni. „Gdy każdy błąd jest błędem o wysokim priorytecie, żadne błędy nie mają wysokiego priorytetu”.

Byłem w takiej sytuacji i generalnie jedynym sposobem na ucieczkę jest wydostanie się. Wskazówki dotyczące zgłaszania błędów są zawsze ignorowane, ponieważ użytkownicy nie podają jako ** t. Próba wprowadzenia segregacji błędów albo zostanie odrzucona, albo zostanie wdrożona, a następnie zignorowana, gdy następnym razem użytkownik zadzwoni do Twojego menedżera, aby złożyć skargę na „swój” błąd.

Zasadniczo, jeśli programiści nie mają kontroli nad priorytetem , już straciłeś.

Ian Kemp
źródło
Programiści kontrolujący priorytety mogą być równie problematyczni. Mogą skakać na szybkie wygrane lub zbierać błędy tylko w obszarach, które są im znane.
Robbie Dee,
@RobbieDee Nie widzę nic złego w tym, że najpierw wybieram nisko wiszące owoce jako polisę.
Pieter B,
1
Polityka braku błędów jest godnym podziwu celem, ale IMO jest całkowicie nierealistyczna - błędy są artefaktem tworzenia oprogramowania, ponieważ ludzie nie są doskonali. Właśnie dlatego potrzebujesz segregacji - aby dowiedzieć się, co należy teraz naprawić , co można naprawić, jeśli / kiedy będzie czas, i czego być może nie trzeba nigdy naprawiać. W ten sposób możesz pozbyć się najbardziej rażących problemów przy jednoczesnym udostępnianiu funkcji.
Ian Kemp,
1
@RobbieDee Byłem zarówno deweloperem funkcji, jak i naprawiaczem błędów, i stwierdzam, że problem polega na tym, że faceci z funkcji i osoby naprawiające kończą silosowanie we własnych mini-zespołach, ponieważ nie pracują nad ten sam kod, a zatem nie trzeba wchodzić w interakcje. To stwarza różnego rodzaju problemy związane ze spójnością zespołu i morale, szczególnie jeśli faceci i osoby zajmujące się naprawą nigdy nie zmieniają swoich ról.
Ian Kemp,
1
@RobbieDee I jeszcze gorzej, jeśli role zostaną zmienione - jeśli zrobisz to w ustalonym czasie, ludzie zostaną zatrzymani w środku pracy, a „nowi” ludzie będą musieli ponownie się rozwijać; jeśli zrobisz to na podstawie zakończenia pracy, będzie nieszczęście, ponieważ niezmiennie ktoś poczuje się skrępowany („dlaczego zawsze kończę na błędach”). Z mojego doświadczenia wynika, że ​​jedynym sposobem, który działa, jest upewnienie się, że wszyscy deweloperzy łączą funkcje i naprawianie błędów - na przykład, tworzenie funkcji przez 4 dni w tygodniu i błędy przez 1 dzień.
Ian Kemp,
3

Jako firma chcesz rozwiązać problemy o najwyższym stosunku ważności do kosztów. Użytkownicy decydują o znaczeniu, inżynieria decyduje o kosztach. Jeśli użytkownicy przywiązują taką samą wagę do wszystkich błędów, wówczas liczy się sam koszt.

W praktyce oznacza to, że określasz priorytet jako wagę / koszt i nie pozwalasz użytkownikom ani programistom na bezpośrednie ustawienie tego priorytetu. Żadna ze stron nie ma pełnego obrazu.

Jeśli użytkownicy zdecydują się ocenić wszystkie problemy na równi z ważnymi, to jest OK - ale oznacza to, że inżynieria (koszt) decyduje o tym, co zostało zrobione. Wyjaśnij im, że znaczenie jest jedynym sposobem, w jaki mogą wpływać (ale nie decydować) na priorytet.

MSalters
źródło
1
To działa. Tak długo, jak wszystkie problemy dotyczą w równym stopniu każdego użytkownika. W przeciwnym razie pamiętaj, że moje błędy zawsze mają priorytet.
Deduplicator,
Teoretycznie to działa. Ale to tak naprawdę nie rozwiązuje pierwotnego problemu, że „prawie każdy zgłoszony błąd jest błędem o wysokim priorytecie”, użytkownik może nadal zgłaszać każdy błąd jako „ważny”, a ostatecznie staje się „łatwym błędem jako pierwszy”.
RayLuo
3

Kilka czynników ...

  • Często osoba zgłaszająca błąd nie zna większego obrazu i nie jest w stanie zdecydować, jak znaczący jest błąd.
  • Często błędy o niskim priorytecie nigdy nie są segregowane ani rozważane, dlatego lepiej jest dać priorytet, który jest zbyt wysoki i pozwolić osobie zajmującej się segregacją go obniżyć.
  • Jako programista często przeglądałem raport o błędzie i stwierdziłem, że kryje się za nim bardzo wysoki priorytet, ale menedżer produktu zajmujący się segregowaniem go nie obchodzi.

Myślę więc, że wszystkie raporty o błędach powinny być SZYBKO przejrzane przez jednego do dwóch doświadczonych programistów, dodając swoje przemyślenia do raportu o błędzie, a następnie błąd należy wyselekcjonować. Oczekiwanie, że osoba, która znajdzie błąd, będzie mogła ustawić użyteczny priorytet w momencie, w którym go znajdzie, po prostu wymaga zbyt wiele.

Ian
źródło
3

Całkiem możliwe, że wszystkie wymienione błędy mają wysoki priorytet. Byłem przy projektach, które były zarówno niedofinansowane, jak i nieokreślone, a kiedy rozpoczęły się testy jakości, a użytkownicy po prostu zrezygnowali z zgłaszania elementów o niskim priorytecie, ponieważ wiedzieli, że błędy ortograficzne lub usterki w użyteczności byłyby stratą czasu, jeśli podstawowa funkcjonalność projektu był całkowicie wężowy. Jeśli twój zautomatyzowany system bagażowy rozbija wózki i niszczy bagaż , kogo to obchodzi, jeśli czcionka na metkach jest 2pt za mała?

W takiej sytuacji projekt się nie udaje. Jeśli podejrzewasz, że jest to nawet możliwe, potrzebujesz serca do serca, aby ludzie zgłaszający usterki się dowiedzieli. Jeśli ludzie pompują raporty o błędach, pomocne będą inne odpowiedzi. Jeśli błędy są tak złe, jak zgłoszono, musisz podjąć ekstremalne działania .

Alan Shutko
źródło
2

Większość już zostało powiedziane, ale destyluję listę „zoo błędów” do czegoś nieco mniej szczegółowego:

Odp .: Błąd zatrzymuje użytkownika w martwym punkcie, podaje błędne dane wyjściowe, ogólnie uniemożliwia korzystanie z systemu / funkcji / funkcji. To błąd „o wysokim priorytecie”.

B: Wszystko inne. Są to błędy „do negocjacji”.

Błędy, które można NEGOCJOWAĆ, podlegają różnym obawom (które można by umieścić w swoim własnym porządku):

1: Błędy wpływające na bezpieczeństwo;

2: Błędy wpływające na użyteczność (przydatność do zamierzonego celu);

3: Błędy wpływające na estetykę;

4: Błędy wpływające na wydajność (być może podzbiór użyteczności?);

5: Błędy, które obrażają Twoją wrażliwość jako profesjonalnego programisty;

6: Błędy zmniejszające ZAUFANIE UŻYTKOWNIKA;

Więc to jest utopijny świat, w którym nikt z nas tak naprawdę nie mieszka. Westchnienie Aby uzupełnić moją odpowiedź na zadane pytanie PO, w całej branży oprogramowania, jest bardzo często, że wysiłki programistyczne mają status, w którym każdy błąd jest priorytetem - one-super-banger-special. I wiesz, co mówią o „specjalności”: kiedy wszyscy są wyjątkowi, nikt nie jest wyjątkowy.

dwoz
źródło
2

Zasadniczo kwestia ta jest zakorzeniona w problemie decentralizacji priorytetów. Zawsze powinna istnieć nieparzysta liczba osób zdolnych do ustalania priorytetu obciążenia pracą zespołu, a 3 to za dużo. Tak, że 1 osoba jest odpowiedzialna za efektywne -małżeństwo. I powinien to być menedżer / analityk, w porozumieniu z głównym deweloperem / architektem. Proces ten jest dość prosty i można go również zastosować do żądań funkcji. Jaki jest koszt opracowania? Jaka jest wartość oczekiwanego wyniku dla firmy. Wyjście tej funkcji ma przypisany priorytet.

OCZYWIŚCIE każdy użytkownik chce, aby jego problem został naprawiony jako pierwszy. I gdy tylko na to pozwolicie, chaos. Nie masz ważnego priorytetu. Potrzebujesz tego zrobić POJEDYNCZA osoba posiadająca uprawnienia (w razie potrzeby konsultująca się z innymi), która ma WIDOCZNOŚĆ we WSZYSTKICH kwestiach i potrzebach biznesowych, i jest wystarczająco kompetentna, aby zebrać wymagane porady biznesowe i eksperckie w zakresie IT, a tym samym wygenerować dość dokładne szacunki wskaźników powyżej.

Brad Thomas
źródło
1

Ryzykując stwierdzenie oczywistości zamierzam założyć, że nie ma oprogramowania do śledzenia błędów, które ustawiałoby błędy na wysoki priorytet jako domyślne (lub zostało ustawione na to ustawienie).

Obawiam się, że przy braku kontroli jest to domyślny scenariusz dla wielu zespołów, klientów itp. Zgłaszających się. Jeśli nadużywane jest status quo, zdecydowanie potrzebny jest jakiś proces segregowania.

Szybką wygraną, którą widziałem w przeszłości bardzo dobrze, jest to, że P1 (błędy o najwyższym priorytecie) spawnują mnóstwo alertów zarządzania. Jeśli system został wykorzystany, natychmiast zostaje zderzony. Lub jeśli jest to naprawdę pilne, zdarza się, że połączenie konferencyjne lub fizyczne spotkanie rozwiązuje problem jak najszybciej.

Zakładam tutaj, że mówisz o wszystkich błędach, nie tylko tych z początkowego rozwoju. Jeśli zazwyczaj wynajmujesz broń do opracowywania zielonych pól, z pewnością nie jest niczym niezwykłym, że większość błędów ma wysoki priorytet po początkowej wersji alfa.

Robbie Dee
źródło
W JIRA domyślnym priorytetem problemów jest Major („Poważna utrata funkcji”)
Carlos Gavidia-Calderon
1
@CarlosGavidia Wtedy usterka wydaje się być związana z konfiguracją. Systemy błędów są zwykle konfigurowane tak, aby wszystko miało jakiś średni priorytet.
Robbie Dee,
0

Nie możesz po prostu mieć priorytetu i oczekiwać, że wszystko magicznie się ułoży. Czasami ludzie wymyślają to sami, ale nie zawsze.

Aby poprawnie przypisać priorytety, musi istnieć definicja dokładnie tego, co stanowi każdy priorytet. Kryteria te muszą być obiektywne, aby uniknąć faworyzowania błędów i priorytetów politycznych. Jeśli obiektywne kryteria nie są przestrzegane, musisz zmusić zespół do ich przestrzegania.

Naprawdę nie da się tego obejść - jeśli nie możesz mieć obiektywnych kryteriów co do tego, do czego trafia błąd, a jeśli ludzie umyślnie odmówią uszanowania tych kryteriów, możesz równie dobrze nie mieć priorytetów przypisanych przez zgłaszającego - albo obejść się bez priorytetów, albo mieć strona trzecia przypisuje priorytet zgodnie z sugestiami innych. Dane z crowdsourcingu działają tylko wtedy, gdy podmioty przesyłające dane współpracują i nie aktywnie sabotują gromadzenia danych.

Jeśli trudność wynika z niemożności stworzenia obiektywnych kryteriów, możesz zastosować kryteria względne:

  • Mają prostą kolejkę wszystkich błędów. Użytkownicy mogą wstawiać błędy w dowolnym miejscu w kolejce. Powinny wstawiać tylko w danym miejscu, jeśli uważają, że ich błąd jest ważniejszy niż wszystko poniżej. Naprawa błędów rozpoczyna się od początku kolejki.
  • Zakładając, że masz już zestaw dobrze sklasyfikowanych błędów, powiedz wszystkim, że warunkiem nadania błędu priorytetowi Xjest to, że musi on być ważniejszy niż wszystkie błędy w pierwszej kolejności X-1.
  • Powiedz zgłaszającym, że w żadnym momencie liczba błędów z priorytetem nie Xmoże przekroczyć liczby błędów z priorytetem X-1.

Wygląda jednak na to, że twój problem nie jest definicją, ale przekonaniem zgłaszających, że błędy o niskim priorytecie nie zostaną naprawione. Prawdopodobnie nie można ich przekonać inaczej, ponieważ (z tego, co mówisz) ich wiara jest w gruncie rzeczy uzasadniona. Dlaczego więc zmuszasz ich do zgłaszania tych błędów? W końcu jest niczym innym, jak pracą. Możesz na przykład po osiągnięciu pewnej liczby aktywnych błędów powiedzieć wszystkim, aby nie zawracali sobie głowy tworzeniem raportów, chyba że uważają, że znaleźli coś ważniejszego niż większość zaległych błędów. To prawda, to tylko rozwiązanie kolejki z górnym limitem długości kolejki.

Superbest
źródło