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?)
development-process
issue-tracking
JoelFan
źródło
źródło
Odpowiedzi:
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.
źródło
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.
źródło
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ą:
źródło
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.
źródło
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.
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:
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:
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:
Z biegiem czasu znalazłem wiele poprawek jako przydatnych. Na przykład:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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:
Zaklasyfikowałbym błąd do jednego z następujących typów:
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.
źródło
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.
źródło
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.
źródło
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:
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ń.
źródło
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:
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!
źródło
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ł.
źródło
Myślę, że jest to bardziej pytanie polityczne niż pytanie o najlepszą praktykę.
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ć
źródło