Czy programiści powinni wprowadzać błędy do systemu śledzenia błędów?

76

Podczas opracowywania (funkcji lub poprawek błędów) czasami zdarza mi się odkrywać błędy, które nie są bezpośrednio związane z tym, nad czym pracuję. Co powinienem zrobić w tej sytuacji. Napraw to? Czy pamiętasz, aby to naprawić później? Gdzieś to zapisać? Lub wprowadzić go do systemu śledzenia błędów?

Zazwyczaj wpisuję go do systemu śledzenia błędów i pozwalam, aby proces sam się rozegrał (tj. Triaging, przypisanie itp.). Jednak prawie nigdy nie widziałem, aby inny programista wprowadził błąd. (Dlaczego?)

JoelFan
źródło
48
Dlaczego byś ich nie wprowadził? Czy zapytałeś kolegów, dlaczego nie?
ChrisF
23
Tak, powinni. Kropka.
Pop Catalin
6
Być może problemem jest to, że myślą o tym jako o „ systemie błędów innych osób ”.
Xeoncross
6
Jeśli nie ma takiego mandatu, wprowadź go. Podczas wpisywania kodu dobrym pomysłem jest powiązanie zameldowania z elementem pracy. Ponadto widziałem kilka miejsc, w których ktoś widzi błąd, zakłada, że ​​jest to znany problem i nigdy o nim nie mówi. Nie chcesz tego robić.
JSWork
4
O ile nie jest to prosta i oczywista zmiana, nie powinieneś próbować jej naprawiać. Dodając kolejny element ruchomy w bieżącej poprawce, możesz znacznie utrudnić zarządzanie. Należy go bezwzględnie zalogować, aby uzyskać odpowiednią uwagę. To znaczy. jeśli naprawisz to bez rejestrowania biletu, dział kontroli jakości nie będzie w stanie go przetestować i potencjalnie możesz wprowadzić jeszcze większy problem. To jest niebezpieczne. Inni programiści mogą po prostu nie wiedzieć nic lepszego ... powinieneś to poruszyć.
sam yi

Odpowiedzi:

118

Jeśli odkryjesz błąd, nie mogę wymyślić żadnego dobrego powodu, aby nie wprowadzać go do systemu śledzenia błędów, czy to naprawisz, czy nie. W końcu po to jest system śledzenia błędów.

W niektórych przypadkach bardziej sensowne może być zgłoszenie tego osobie odpowiedzialnej za kontrolę jakości, która ma większe doświadczenie w pracy z systemem, ale w każdym razie błąd należy śledzić.

Możliwe, że istnieje jakiś powód, ważny lub nie, że programiści nie powinni wprowadzać błędów. Jednym z możliwych powodów może być to, że system śledzenia błędów jest widoczny dla osób postronnych, a zbyt wiele zgłoszonych błędów wygląda źle. To bardzo zły powód, którym należy się zająć w inny sposób, który nadal umożliwia śledzenie błędów. Zapytaj swojego szefa.

(Oczywiście, jeśli w kodzie nadal występuje błąd, nad którym wciąż pracujesz, i nie pojawia się on w żadnym wydanym wydaniu, nie ma potrzeby śledzenia go w systemie, chociaż komentarz DO ZROBIENIA w kodzie źródłowym może być dobry pomysł. W skrajnym przypadku „Ten kod nie zostanie skompilowany, ponieważ nie wpisałem jeszcze średnika na końcu tego wiersza”, nie jest to błąd zgłaszalny.)

Jeśli chodzi o to, dlaczego inni programiści nie wprowadzają błędów, musisz je zapytać. Prawdopodobnie powinni.

Keith Thompson
źródło
15
Ponadto śledzenie napotkanych błędów pozwala pisać testy jednostkowe i przeprowadzać testy regresji tego zachowania, nawet jeśli jest to prosta poprawka. Nigdy nie wiadomo, kiedy ktoś wróci i ponownie go złamie, a potem pojawi się deja vu, gdy pomyślisz, dlaczego błąd jest tak znajomy, a następnie nie masz numeru błędu, do którego można by się odwoływać. Nie tak, jakbym wiedział ...
wkl
Zasadniczo wada wykryta przez zespół programistów, a nie klienta, jest określana jako „znany problem”. To, czy wspomniany problem zostanie kiedykolwiek naprawiony, czy nie, jest przedmiotem dyskusji, podobnie jak „błędy”, ale konotacja jest taka, że ​​zespół programistów wie, że jest to problem, więc klient nie powinien zgłaszać „błędu” dotyczącego tej samej usterki lub problemu . To powiedziawszy, tak, jest całkowicie właściwe, aby zespół programistów rejestrował wady w obszarach oprogramowania niezwiązanych z tym, co obecnie kodują. Logowanie błędu w tworzonym kodzie byłoby trochę głupie (chyba że zarabiasz go a la Dilbert).
KeithS
3
@KeithS: Jeśli nadal pracujesz nad błędem w kodzie, tak, zgłoszenie go byłoby głupie. Jeśli jest to błąd występujący w wydanym produkcie, nawet jeśli ma on kod, który właśnie chcesz naprawić, należy go zgłosić, więc jest coś, do czego można się odwołać, jeśli, powiedzmy, użytkownik końcowy go napotka. Raport o błędzie zawiera wartość, nawet jeśli zamkniesz go natychmiast po jego otwarciu (chociaż „zamknięcie” zazwyczaj obejmuje kilka przejść statusu).
Keith Thompson
2
Inną sprawą jest upewnienie się, że ktoś wie o błędzie. Jeśli liderzy zespołów zobaczą wszystkie nowe problemy w momencie ich przybycia, masz to ujęte, ale jeśli wiesz, że problem nie będzie widoczny przez jakiś czas, musisz wiedzieć, że osoba odpowiedzialna za nadanie priorytetu pracy będzie upewnij się, że problem zostanie rozwiązany. Twoje codzienne spotkanie stand-up lub regularne spotkania zespołu mogą być dobrym miejscem do ogłoszenia tych rzeczy lub wysłania e-maila do lidera zespołu, jeśli system śledzenia problemów jeszcze tego nie robi.
S.Robins
1
@ S.Robins: Tak, ale jeśli wprowadzenie błędu w systemie śledzenia nie upewni się, że ktoś o nim wie, oznacza to, że twój system śledzenia nie działa zbyt dobrze.
Keith Thompson
23

Musisz wprowadzić błędy w systemie śledzenia błędów w obu przypadkach:

  • gdy błąd dotyczy bezpośrednio kodu, nad którym pracujesz,

  • gdy błąd dotyczy kodu, nad którym obecnie nie pracujesz, lub części, nad którą pracuje inny programista.

Jest to niezbędne, ponieważ system śledzenia błędów służy do ... śledzenia błędów. Każdy błąd. Jeśli odkryjesz coś nie tak, nie naprawiaj tego. Dokumentuj to przez system śledzenia błędów. Gdy później klient korzystający z poprzedniej wersji oprogramowania zgłosi błąd, który jest dokładnym duplikatem, będzie można połączyć go ze swoim zgłoszeniem. Jeśli nie masz nic do czego można się odsyłać, zmarnujesz swój czas (lub kolegę) na szukanie błędu w poprzednich wersjach, a następnie spróbuj go rozwiązać, aż w końcu odkryjesz, że błąd został już magicznie rozwiązany.

To wyjaśnia również, dlaczego freelancerzy muszą używać zarówno kontroli wersji, jak i systemu śledzenia błędów: te dwa narzędzia są nie tylko dla zespołów.

Arseni Mourzenko
źródło
1
Robisz bardzo dobry punkt, zakładając, że błąd występuje w poprzedniej wersji.
Karl Bielefeldt
2
Mmmm Na pewno nie każdy błąd. Powiedzmy, że czytasz chociaż kod, który właśnie napisałeś, i napotykasz błąd „jeden po drugim” w warunkach pobliskiej pętli. Lub literówka. Napisanie błędu zajmuje więcej czasu niż samo naprawienie, zwłaszcza jeśli cały kod jest wciąż w fazie rozwoju.
Zan Lynx
2
@ZanLynx W takich przypadkach powinieneś pracować nad otwartym raportem o błędzie lub żądaniem funkcji. Jeśli został udostępniony do testowania, otwórz go ponownie i dodaj odpowiednią notatkę.
BillThor
18

Nie ma ważnego powodu, aby nie wprowadzać usterki do systemu śledzenia wad. Jedyne miejsca, w których widziałem poprawki błędów zastosowane bez śledzenia, ponieważ proces został zasadniczo przerwany. W takim przypadku napraw ten proces.

powody nie wchodzenia są:

  • Proces mierzy i karze na podstawie zgłoszenia usterki - nie zgłaszaj, nie daj się ukarać. W takim przypadku opuść organizację
  • Proces ten jest obciążeniem - wejście w wadę i zajęcie jej do momentu zajmuje zbyt wiele wysiłku i czasu. Proces ten powinien zostać zmieniony, aby umożliwić programistom szybkie śledzenie lekkich błędów w procesie triage / accept / fixed.
  • Niektórzy deweloperzy są leniwi / niechlujni / hakerzy, którzy nie dbają o to, jaki wpływ mogą mieć na innych rzeczy. Rekrutuj profesjonalnych programistów.
  • Jestem zespołem jednoosobowym, nie widzę sensu. Idź do pracy dla 2-osobowego zespołu, a będziesz ...
mattnz
źródło
Podejrzewam, że twój drugi punkt jest często przyczyną. Czy XP nie promowało pomysłu naprawiania rzeczy, które okazały się zepsute, zamiast przejścia przez proces? W efekcie jest to szybki tor dla lekkiego błędu. <sarkazm> oprócz testów regresji złapie się, jeśli „poprawka” coś
zepsuje
2
@phkahlr: Zgadzam się, każdy system ma solidne testy regresji, które zapewniają spełnienie idealnie określonych wymagań, a klienci nigdy nie mają nieokreślonych funkcji, Obecni programiści piszą idealny kod za każdym razem, więc nie ma szans na usunięcie błędu wprowadzającego niepożądane efekty uboczne. W tym świecie „po prostu to napraw” może być approrite. W moim świecie, gdzie są miliony linii z ograniczonymi testami regresji wdrażającymi system życia o znaczeniu krytycznym, myślę, że podążę za procesem.
mattnz
14

Naprawienie błędu od razu jest prawdopodobnie złym pomysłem. Po pierwsze, ktoś inny może pracować nad tą samą poprawką, co prowadzi do powielania wysiłków, a także, w zależności od metodologii programowania, którą stosujesz, ustalenie priorytetów nad tym, co będzie dalej pracować (naprawianie błędu lub wdrażanie nowej funkcji) jest bardziej decyzja zarządcza, a następnie decyzja rozwojowa.

Daniel Serodio
źródło
5
Zakłada to duży zespół i środowisko, w którym programiści nie podejmują decyzji. Jeśli jest tylko garstka programistów i możesz obrócić krzesło i powiedzieć „hej, czy ktoś pracuje na X”, nie ma szczególnego powodu, aby nie naprawiać błędu od razu (jeśli czas na to pozwala).
GrandmasterB
Ale to zależy od priorytetu, prawda? Oznacza to, że zadanie, nad którym pracowałeś, może zostać opóźnione. Może również zakłócić przepływ.
JoelFan
1
@JoelFan: Przepływ jest już przerwany. Mój przepływ byłby bardziej zakłócony, gdybym wiedział, że wystąpił nieusunięty błąd.
Zan Lynx
3
@GrandmasterB Ponieważ już mówimy o przepływie, nie chciałbym przeszkadzać wszystkim takim programistom. Jeśli napotkasz błąd, zgłoś go i pozwól innym spojrzeć na niego, kiedy tylko będzie na to czas. Jest to o wiele lepsze dla wszystkich niż zmuszanie ich do zaprzestania robienia tego, co robią, po to, abyś mógł wyjaśnić wszystkim błąd i po prostu dowiedzieć się, że prawdopodobnie nikt nad nim nie pracuje, pozostawiając wszystkie przerwane bez żadnego skutku tego błędu …
poke
+1 dla kierownictwa kierującego twoimi wysiłkami. Niedawno nauczyłem się go dokumentować i iść dalej, zamiast wydawać 2x mój pierwotny kosztorys na naprawianie wszystkiego, co napotkałem.
mskfisher
12

Decyzja nie jest jednoznaczna i wiąże się z kompromisami.

(niektóre) PROS

Śledzenie błędów jest niezbędne w komunikacji, szczególnie w dużych zespołach. Jedną z najlepszych zalet posiadania wielu oczu na kod jest możliwość wcześniejszego wykrycia problemów, i ta korzyść jest tracona, jeśli błędy nie są rejestrowane lub śledzone podczas rozwoju.

  • Często błędy można najłatwiej naprawić, gdy jesteś już częścią kodu, pracując nad jego zrozumieniem.
  • Nawet w mniejszych zespołach istnieje wiele korzyści, jeśli chodzi o morale, ponieważ jest w stanie wymienić błędy i postępy w ich usuwaniu - czasem korzyści moralne są kluczowe nawet w przypadku projektów jednoosobowych.
  • Dokładne wykrycie błędu może być bardzo trudne po fakcie - zobaczenie błędu w kodzie może zaoszczędzić wiele późniejszej pracy w detektywie, próbując dowiedzieć się, gdzie pierwotnie wystąpił problem.
  • Dla ogólnego rozwoju programisty dobrze jest zwracać uwagę na pojawiające się błędy i nabrać nawyku krytycznego poprawiania / czyszczenia / czytania kodu

Rejestrowanie błędów w miarę ich znajdowania jest, ogólnie rzecz biorąc, dobrym nawykiem.

(niektóre) CONS

Wprowadzanie błędów do systemu śledzenia błędów może być uciążliwe i czasochłonne, a także może bardzo zakłócać prace programistyczne - częściej w przypadku pracy w dużych zespołach. Można oczekiwać, że:

  • sprawdź, czy Twój wpis jest duplikatem przed wejściem (może to być nawet domniemane, zniechęcanie do wprowadzania błędu do kolejki tylko po to, aby ją zamknąć)
  • podaj powtarzalne przypadki testowe dla swojego raportu
  • akceptuj późniejsze pytania dotyczące szczegółów błędów, aby zaakceptować / zweryfikować poprawkę po napisaniu
  • pomyśl o niepowiązanych informacjach, które często są gromadzone w systemach śledzenia błędów, takich jak to, który produkt jest prawdopodobnie najbardziej dotknięty, priorytet błędu itp.

Czasami śledzenie błędów nie jest po prostu najbardziej wydajnym wykorzystaniem twojego czasu.


Są to dwie ogólne zasady, które mogą być trudne do zrównoważenia - znalezienie dobrej strategii to trochę sztuka. W takich sytuacjach myślę, że najlepiej jest zastosować elastyczną heurystykę, którą dostosowuję zgodnie z wymaganiami dla danego projektu, zespołu, środowiska pracy i twoich ogólnych umiejętności. Moja strategia zwykle jest zgodna z następującym wzorcem:

  • Zawsze rejestruj problemy tak, jak je widzisz przez cały dzień. Może na lepkiej, może w pliku z boku. Może wszystko, co logujesz, to nazwa pliku i numer linii, a może więcej. Nie pozwól, aby problem zbytnio przerwał twoją obecną linię myślenia.
  • Poświęć trochę czasu na początku każdego nowego dnia pracy, w ramach rozgrzewki do pracy, aby poradzić sobie z lepkami. Zajmuję 10-15 minut, aby przejrzeć listę wykrytych problemów z poprzedniego dnia i zrobić jedną z poniższych czynności, która jest najszybsza:

    • Napraw problem i zatwierdź go (prawdopodobnie dla jednej poprawki lub literówki). Jeśli nie możesz popełnić błędu bez zgłoszenia błędu, utwórz projekt poboczny dla małych zmian. Gdy w pobocznym projekcie zgromadzi się wystarczająca liczba poprawek, poświęć kilka godzin na ich udokumentowanie i zatwierdzenie.
    • Zaloguj problem w systemie śledzenia błędów (w przypadku oczywistych problemów, których usunięcie zajmuje więcej czasu, ale bez uciążliwych kosztów)
    • Zapisz problem w dokumencie „do obejrzenia, gdy nie jest zajęty” (zazwyczaj dodaję do źródła komentarz „// TODO - wygląda na zepsuty, napraw”). Regularnie zajmij dzień (próbuję raz w miesiącu), aby przejrzeć listę i odpowiednio ją zalogować - żądanie funkcji, zgłoszenie błędu, omówienie z menedżerem itp.

Z biegiem czasu znalazłem wiele poprawek jako przydatnych. Na przykład:

  • W bardziej sztywnych środowiskach mogę po prostu zlecić zespołowi testującemu zgłaszanie błędów - poproś testera, aby spotykał się ze mną co godzinę co jakiś czas, przekaż mu listę problemów i poproś o wykonanie logowania. W środowiskach, w których rejestrowanie testów jest dużą sprawą, zwykle tester będzie zadowolony z bezpłatnego zwiększenia wydajności.
  • Niektóre zespoły nie zezwalają na poprawki, które nie zawierają raportu o błędzie klienta. Trzymam projekt pełen poprawek z boku i natychmiast zatwierdzam je, gdy klient zgłosi odpowiedni problem, aby otrzymać bezpłatne punkty brownie.
  • Niektóre zespoły wymagają, aby osoba „posiadająca” fragment kodu była tą, która wykonuje poprawki. Traktuję „właściciela” kodu jak przewód testowy i spotykam się nieformalnie, aby od czasu do czasu przekazać problemy

Uważam, że generalnie, gdy postępujesz zgodnie z tego typu strategią, coraz więcej współpracowników i innych członków firmy zacznie szanować twoją pracę i zaangażowanie w jakość. Po upływie określonego czasu będziesz mieć szacunek i autorytet wymagany do zoptymalizowania całego procesu według własnych upodobań. Uważaj na takie możliwości i wykorzystaj je odpowiednio.

Blueberryfields
źródło
2
„Niektóre zespoły nie zezwalają na poprawki, które nie zawierają zgłoszeń błędów klientów”… naprawdę? Brzmi jak DailyWTF! Mówisz więc, że może istnieć wyraźny błąd, który z pewnością wpłynąłby (i prawdopodobnie miałby) na klientów i po prostu wypuszczają wersje z tym samym naprawionym błędem, nawet nie analizując kosztów naprawy, tylko dlatego, że klient nie już to zgłosiłeś?
JoelFan
1
„Nie naprawiaj, chyba że jest zepsuty”.
blueberryfields
4

Uważam, że jeśli programista napotka błąd, który nie jest związany z tym, co pracują i że nie będzie naprawiał, powinien wprowadzić go do systemu, aby mieć jakiś zapis. W ten sposób, gdy QA rozpocznie testowanie (i nadal nie są naprawione), możesz nadać im listę błędów jako „znane wady”, aby nie zaczęli zgłaszać tych samych błędów.

Być może inni programiści, którzy znajdą błędy, sami je śledzą, jeśli planują to naprawić, ale w takim przypadku ryzykują, że 2 programistów samodzielnie znajdzie i naprawi ten sam błąd.

FrustratedWithFormsDesigner
źródło
2

Dodałbym, że nawet jeśli błąd został już naprawiony (co nie powinno się zdarzyć przed zarejestrowaniem go w narzędziu do śledzenia problemów), dobrze jest go wyśledzić.

W ten sposób, jeśli problem pojawi się ponownie w przyszłości (zdarzają się regresy!), Stosunkowo łatwo jest rozpoznać problem jako „już rozwiązany” i przeczytać, jak został rozwiązany za pierwszym razem.

fdierre
źródło
1

Dlaczego? Ponieważ większość programistów patrzy na problem, który muszą poruszyć i kod, który muszą napisać, i uważa, że ​​łatwiej jest nie zawracać sobie głowy.

Ale to, czy jest to właściwe, zależy od twojego procesu. Czy masz zespół kontroli jakości? Czy sądzisz, że mają coś przeciwko, jeśli zmienisz kod, który nie będzie śledzony? Co z recenzjami kodu? Czy przeskoczy przez ten trzask? Co z biznesem? Czy muszą wiedzieć, że naprawiłeś błąd, aby później go nie zgłaszać?

Co z innymi programistami? Co jeśli naprawią to w inny sposób w tym samym czasie? Co, jeśli później znajdą podobny błąd, a wszystko, co możesz zrobić, to powiedzieć „och, cholera, wiem, że mieliśmy już coś takiego - teraz co to było?”

Istnieje około miliona powodów rejestrowania błędów w systemie śledzenia błędów. Jeśli masz pewność, że nie trafiłeś w żaden z tych problemów, to nie przejmuj się. Ale jeśli w ogóle nie jesteś pewien, powinieneś to nagrać, nawet jeśli większość ludzi tego nie robi.

pdr
źródło
1

Programowanie jest zasadniczo złożoną pracą. Błędy są złożone. więc oceniałem błąd na podstawie dwóch czynników:

  1. Jak często tego rodzaju błędy mogą pojawiać się ponownie w przyszłości? Niezależnie od tego, czy ta prognoza jest dokładna, czy nie, nadal ją szacuj.
  2. Kiedy takie błędy pojawiają się ponownie, czy łatwo to zrozumieć? Jest to dokładne, kiedy analizujesz ten błąd i naprawiasz go.

Zaklasyfikowałbym błąd do jednego z następujących typów:

  1. Prawdopodobnie pojawią się ponownie w przyszłości i są łatwe do zrozumienia
  2. Prawdopodobnie pojawią się ponownie w przyszłości, ale trudne do zrozumienia
  3. Rzadko pojawiają się ponownie w przyszłości i są łatwe do zrozumienia
  4. Rzadko pojawiają się ponownie w przyszłości, ale trudne do zrozumienia

W przypadku 1 książka kucharska lub FAQ to dobre urządzenie dla zespołu, aby w przyszłości naprawić takie błędy.

W przypadku 2, skomplikowany i zrozumiały zapis jest niezbędny dla zespołu, ponieważ strata wysiłku, jeśli inny programista znosi takie błędy. Na przykład: wyciek pamięci.

W przypadku 3 myślę, że nie jest wielkim problemem, że nie ma już nic do nagrania, ponieważ nie poświęcisz zbyt wiele czasu na naprawienie łatwego błędu. Na przykład literówka dla id elementu w HTML.

W przypadku 4 takie błędy tworzą dylemat. Potrzebuje trochę czasu, aby napisać skomplikowany i zrozumiały zapis, aby opisać takie błędy. Ale ten zapis jest rzadko używany w przyszłości. Jednak bez zapisu pojawienie się takich błędów byłoby walką ponownie. Na przykład takie błędy pojawiają się z powodu wirusa komputerowego na czyimś komputerze.

Mike Lue
źródło
1

Oczywiście powinieneś to wprowadzić. Lub przynajmniej zgłoś to swoim pracownikom kontroli jakości, jeśli jest to normalny proces.

Nawet jeśli sam naprawisz błąd, będziesz potrzebować zapisu zmiany, aby można go było przetestować, aby upewnić się, że poprawka rzeczywiście działa i że nie wystąpiła regresja. Możliwe jest również, że użytkownik może zgłosić błąd w pewnym momencie, a jeśli jest on w systemie i oznaczony jako naprawiony, pracownicy wsparcia mogą powiedzieć mu, że został już rozwiązany.

GrandmasterB
źródło
0

Rzeczywiście powinieneś nagrywać je w systemie, a jeśli nie jest to praktykowane, dobrze jest zacząć.

W przeszłości należałem do zespołu ds. Produktu i pracowaliśmy nad wersją beta nowego produktu, a czasami czasami znajdowaliśmy błędy, które w tym momencie notowaliśmy i wysyłaliśmy pocztą do odpowiednich osób obsługujących moduły (mieliśmy system śledzenia błędów, ale nie myśleliśmy o tym, aby je tam przenieść). Później, gdy dni mijały, elementy w poczcie zaczęły być ignorowane z powodu innych priorytetów, co w końcu doprowadziło do nieprzespanych nocy.

A więc, uderz się pewnego dnia, Nirvana! Dlaczego nie używamy narzędzia do śledzenia błędów, nawet jeśli znalazłeś coś, co wydaje się błędem i możliwe, że to nie jest jeden (twoja myśl o tym procesie jest błędna / wadliwa). Przynajmniej nadrabia zaległości na liście, którą następnie można przetestować i najważniejsze ze wszystkich opinii na temat tego, dlaczego jest to krytyczne lub z drugiej strony jest idealne i tak powinno działać z powodów 1 ... 2 ... .

Teraz masz listę, a także dla tych, którzy źle zrozumieli niektóre części aplikacji, mają informacje zwrotne, na podstawie których mogą wyjaśnić swoje myśli. Sytuacja wygrana-wygrana.

V4Vendetta
źródło
0

Zakładając, że jego już przetestowany (a zwłaszcza jeśli wydany) kod jest absolutnie.

Istnieje wiele powodów:

Pamięć - naprawdę mało prawdopodobne jest, aby system zapomniał o błędzie, jakikolwiek programista.

Metryki - Liczba znalezionych, zamkniętych błędów i poświęcony czas mogą być dobrymi, łatwymi do przechwycenia metrykami, informującymi o postępie jakości kodu

Pilność - może to wydawać się najważniejszą rzeczą na świecie dla programisty, jednak czas poświęcony na naprawienie tego problemu można lepiej poświęcić na coś, czego użytkownicy końcowi chcą najpierw (patrz także pamięć).

Duplikacja - być może została już zauważona i jest sprawdzana / naprawiana przez kogoś innego. Ewentualnie być może naruszył zasadę pilności i został odłożony. Oczywiście fakt, że znalazłeś go ponownie, nie tylko oznacza, że ​​nie należy tego robić, może również oznaczać, że (w miarę pojawiania się) jest teraz bardziej pilne do naprawienia.

Analiza przyczyn źródłowych - najłatwiejszym do naprawienia błędem jest ten, którego nigdy nie było. Być może zespół powinien przyjrzeć się temu błędowi, aby dowiedzieć się, jak to się stało. Jest to zdecydowanie nie karanie odpowiedzialnego (co nigdy nie pomaga), ale ustalenie, w jaki sposób można uniknąć tej sytuacji w przyszłości.

Szersza analiza wpływu - najtańszym znalezionym błędem jest ten, o którym wiedziałeś, zanim go znalazłeś. Patrząc na ten błąd (szczególnie po przeprowadzeniu analizy przyczyn źródłowych), można szybko stwierdzić, że problem ten może występować w innych miejscach kodu. W rezultacie zespół może zdecydować się go znaleźć, zanim podniesie brzydką głowę w bardziej zawstydzającym momencie.

Ilość czasu poświęcanego na te (jeśli w ogóle) zależy w dużej mierze od dojrzałości i poziomu jakości kodu. Analiza przyczyn źródłowych prawdopodobnie będzie przesadą dla małego zespołu pracującego nad kodem demonstracyjnym, ale duży zespół zajmujący się krytycznym rozwojem biznesu prawdopodobnie musi nauczyć się lekcji skutecznie i wydajnie.

Z doświadczenia wynika, że ​​istnieją dwa ogólne powody, dla których programiści unikają używania tego narzędzia:

  1. Narzędzie do obsługi błędów i / lub proces są postrzegane jako zbyt ciężkie dla rozwoju
  2. Dla programistów wyzwanie naprawienia błędu jest bardziej interesujące niż rzeczy, nad którymi obecnie pracują.

Punkt 1 oznacza, że ​​może być wymagany lepszy / prostszy system; lub alternatywnie bardziej uzasadnione może być uzasadnienie istniejącego systemu.

Punkt 2 powinien być użytecznym znakiem ostrzegawczym dla lidera ds. Rozwoju przed bieżącymi przydziałami zadań.

Gavin H.
źródło
0

W większości zgadzam się z FrustratedWithFormsDesign, ale myślę, że jest jeszcze jaśniej, jeśli cały problem zostanie podzielony na dwa obszary:

  • Zgłaszanie błędów.
  • Naprawa błędów.

Często są one traktowane jako takie same, a ich rozdzielenie prawie na pewno bardzo pomoże.

Można sobie z tym poradzić za pomocą: Raportowania błędów: - umieść go w systemie, jak wszyscy mówią.

Naprawianie błędów: - Co tydzień lub dwa (dostosuj do harmonogramu rozwoju itp.) Wszyscy spotykają się przy projekcie i decydują, co należy naprawić, przez kogo itp. To było, że wszyscy są na tej samej stronie i mogą zobaczyć, co należy będzie zrobione. W Agile Development jest to spotkanie planowania sprintu.

Dobre narzędzie, z którego ludzie chcą korzystać, również robi dużą różnicę. Lubię Pivotal Tracker, który przeszedł mój test „naprawdę użytecznego narzędzia”, kiedy zacząłem go używać, aby śledzić rzeczy, które chcę robić lub naprawiać w moich prywatnych projektach!

śmieciowy
źródło
0

Jeśli coś zobaczysz, powiedz coś!

Wpisuję nawet raporty o błędach dotyczące moich własnych modułów, ponieważ nie chcę przerywać bieżącego zadania. I mogę zapewnić, że wszystkie kroki do odtworzenia są uwzględnione :-)

Jeszcze lepiej, gdy ktoś inny zobaczy, że wymieniono coś jako znany błąd. Lubią wiedzieć, że ktoś to znalazł.

jqa
źródło
0

Myślę, że jest to bardziej pytanie polityczne niż pytanie o najlepszą praktykę.

  • czy sombody z winy błędów?
  • Czy klient może odczytać wpisy błędów i widzi, że są dodatkowe błędy. Czy jest to kwestia reputacji Twojej firmy?
  • czy to naprawdę błąd lub funkcja, o której nie wiesz?
  • kto będzie płacił poprawkę?

Moim zdaniem dobrą praktyką jest dodawanie nietrywialnych błędów do systemu śledzenia, ale kierownictwo musi zdecydować, jak sobie z tym poradzić.

W przypadkach innych niż trywialne nie powinieneś naprawiać problemu bez konsultacji z kimś innym, aby się upewnić

  • to naprawdę błąd, a nie funkcja
  • sombody może przetestować poprawkę i upewnić się, że poprawka nie wprowadza nowego błędu w innym miejscu (regresja)
k3b
źródło