Jak oszacować czas potrzebny na naprawę błędu

Jak oszacować czas potrzebny na naprawę błędu

Wątek przeniesiony 2022-05-18 15:51 z Kariera przez somekind.

kalimata
  • Rejestracja:prawie 5 lat
  • Ostatnio:5 miesięcy
  • Postów:131
0

W jaki sposób oszacować czas jaki zajmie usunięcie błędu? Przełożony chce, żebym mu podał czas potrzebny na usunięcie awarii. Czy to w ogóle możliwe, żeby określić czas, jeśli nie mam pojęcia ile mi zajmie chocby znalezienie przyczyny awarii?

SE
  • Rejestracja:prawie 6 lat
  • Ostatnio:13 dni
  • Postów:321
4

To może powiedz mu dokładnie to, co tutaj napisałeś.

edytowany 1x, ostatnio: cerrato
kalimata
Ja mu to mówię cały czas, ale jestem początkującym i może czegoś nie wiem, skoro PM cały czas naciska zeby miec te czasy
SE
No ale czego od nas oczekujesz? Ze wyjmiemy szklana kule i powiemy, ze znajdziesz przyczyne awarii w 2 dni? Komunikacja jest podstawa jakiejkolwiek pracy z innymi ludzmi.
kalimata
Nie nie, pytam was jako bardziej doswiadczonych, czy sa jakies sposoby szacowania tego typu problemów, czy po prostu sie mówi przełożónemu, że nie wiemy ile zajmie poszukiwanie przyczyny
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:2 minuty
  • Postów:973
1

To zależy od problemu. Zazwyczaj jesteś w stanie oszacować czy coś zajmie bardziej 4 godziny czy 3 dni na podstawie samego błędu. Czasem zdarzy się, że coś co wydawało się, że zajmie 30 minut zajmie tydzień ale to wyjdzie w trakcie i wystarczy poinformować przełożonego jak spyta i tyle


Zdalna praca dla Senior Python Developerów --> PW
K5
  • Rejestracja:około 6 lat
  • Ostatnio:2 dni
  • Postów:1002
5

Powiedz mu, że najpierw potrzbujesz jeden MD na analizę, tzn znalezienie sedna awarii (czy to przejrzenie logów, czy debug i reprodukcja), a dopiero potem powiesz ile zajmie fixing :)

CR
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 2 lata
  • Postów:116
2

U mnie w pracy nigdy nie byłem w stanie oszacować długości trwania naprawy buga, parę zdarzyło mi się nawet przepisać całą funkcjonalność, ponieważ dłużej mi szło diagnozować problem niż naprawiać. (Nie mówię tutaj o prostych rzeczach jak wyrównanie CSSem szablonu)

Często te bugi wynikały że ludzie np. używali jakiejś technologii pierwszy raz bo była modna.

Ogólnie wydaje mi się że po analizie problemu można stwierdzić czy będzie to zajmowało tydzień czy dwa dni.

edytowany 6x, ostatnio: crx
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:7 miesięcy
  • Postów:6610
1

Jeśli siedzisz już w projekcie jakiś czas to są takie bugi, które potrafisz naprawić od ręki bo od razu wiesz gdzie się spieprzyło. Z drugiej strony są takie, gdzie zrobienie try - cach na całą metodę i dodanie jakiegoś mega logowania i czekanie aż bug się powtórzy i liczenie na to, że ten log powie coś więcej to jedyne rozwiązanie.


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:12 minut
  • Postów:8409
1

Oszacuj, ile myślisz, ile to zajmie i pomnóż przez n (gdzie n jest tym większe, im więcej niewiadomych)
np.
myślisz, że zajmie to godzinę, więc mówisz 10h.


ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0

W nieczęstych sytuacjach, że z 90% pewnością wiem co jest istotą błędu (wiem, co było ruszane, albo treściwy wyjątek, albo jedno i drugie) to niekiedy daję jakieś deklaracje. Godzina, do jutra, albo "w sobotę zaktualizujemy"

Ale generalną zasadą jest jak piszecie: "może coś da się powiedzieć po analizie przyczyny"


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
Yerbanos
  • Rejestracja:około 7 lat
  • Ostatnio:około rok
  • Postów:46
3

Napisałeś że jesteś początkujący, a jednocześnie rozmawiasz z PMem o terminach naprawienia błędów? Czy oprócz ciebie jest w zespole bardziej doświadczony programista(mający wiedzę o projekcie i doświadczenie w technologi)?

kalimata
jest 2 początkujących i jeden chłopak "ogarniający" programowanie, ale jest z nami od niedawna i tak na prawdę nikt z nas nie ma większej wiedzy o projektach które realizujemy. Mamy kilka projektów i PM sobie wybiera osobe która akurat ma mniej na głowie i zleca jakieś zadania do wykonania.
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Postów:1874
4

Jak ustalisz, co jest do zrobienia, to podasz estymate. Do tego czasu możesz dawać updaty na zasadzie „pracujemy nad tym, następny update za 2h”. Na wczesnym etapie ważne, żeby był owner tematu ;)


”Engineering is easy. People are hard.” Bill Coughran
edytowany 1x, ostatnio: Charles_Ray
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 23 godziny
  • Postów:2368
3

Za tym pytaniem kryje sie jakaś potrzeba PMa. Zapytaj po co mu ta estymata.

PM lubi mieć zarys czynności, które będą wykonywane w ramach usuwania błędu. Daj mu jakiś plan, np. 5 punktów, które pozwolą mu sie poczuć lepiej i umożliwią komunikację z klientem i sprawdzanie czy nastąpiło przesunięcie z pkt. 1. do 2. (PM może zakomunikowac klientowi mały sukces). Taki plan jest też korzystny dla Ciebie (mówisz co będziesz robił i to robisz - to buduje zaufanie do Twojej pracy). Dodatkwo uzyskasz strukturę pracy dotyczącą naprawy problemu.

Możesz tez wykorzystać sytuację, "do oszacowania potrzebuję... " i lecisz z listą życzeń do PMa ;) np. Instalacja u klienta softu z dodatkowymi punktami logowania + obecność użytkowników, którzy problem zreprodukują.

Miang
pkt 1. przygotowanie tego planu 1 h
YA
@Miang: dobry początek, może być i nawet i dłużej, byle nie skończyło sie na drugim punkcie: "Naprawa".
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 14 godzin
  • Postów:3169
1

2x tyle ile Ci sie wydaje ze to zajmie + zmiana jednostki czasu na wieksza.

lsikora
  • Rejestracja:ponad 6 lat
  • Ostatnio:8 miesięcy
  • Postów:40
1

"Będzie zrobione jak będzie zrobione".

Poza tym najczęściej działam w sposób opisany przez @yarel . Na początek konkretne okno czasowe na wstępną analizę i rozpisanie kroków inwestygacji/naprawy. Póżniej to tylko notyfikowanie zainteresowanych o postępach i zakończeniu. Czy to bugi w aplikacji, czy problem na produkcji działam tak samo. Z problemami na produkcji jest nawet prościej - proces rozwiązywania awarii jest udokumentowany, więc każdy wie jak działać. Przy większych problemach, lub takich gdzie widzimy pole do poprawy ruszają procesy związane z analizą przyczyn problemu. Sam proces rozwiązywania problemu też jest analizowany i ulepszany.

Sporo przykładów na procesy analizy awarii można wyszukać na necie, ale to czy działają i istnieją zależy od jakości firmy, pracowników itp. w januszexie trzeba proces hakować ;) albo się wypyszczyć.


Murarz, tynkarz, akrobata
RA
  • Rejestracja:prawie 7 lat
  • Ostatnio:dzień
  • Postów:360
2

Jeżeli chodzi o profesjonalne podejście to należy to podzielić na dwa etapy: 1. znalezienie błędu 2. naprawa błędu.
Na etapie poszukiwania ustala się czas cyklicznych komunikatów na temat statusu, np. co godzinę w zależności od tego jak istotny jest to błąd. Tutaj często jest tak, że kilka razy będziemy musieli podać komunikat, że nadal szukamy jak trafimy na coś bardziej złożonego.
Etap naprawy i jego pracochłonność estymujemy standardowo jak każdy inny task, mając jednak na uwadze czy na pewno znamy przyczynę błędu czy nam się tylko tak wydaje :) co przy pracy pod presją jest wielce prawdopodobne. Tutaj oczywiście też powinna być komunikacja statusu, przede wszystkim wtedy, gdy w trakcie naprawy okaże się, że podana estymata nie była prawidłowa.

edytowany 2x, ostatnio: ralf
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 12 godzin
  • Postów:3277
2

Krótka rada - mówić prawdę.

  • Jak nie możesz zreprodukować błędu, to to mówisz, dodając, że aktualnie nie masz pojęcia ile to zajmie, możliwe, ze za godzinę będziesz wiedział więcej. Na tym etapie może się okazać, ze za 15 minut, bo trzeba zmienić > na >=, albo poświęcić miesiąc na namierzanie gnojka i pół roku na refaktoryzację połowy systemu
  • Jak zreprodukowałeś i wiesz, że mogło walnąć w 1 z 15 miejsc, to mówisz, że aktualnie od 2 godzin, do 2 miesięcy
  • Zlokalizowałeś problem, popatrzyłeś w kod, masz jakąś wizję złożoności, pracochłonności, to mówisz "3 dni", czy co ci tam wychodzi.

Trochę mi się nie mieści w głowie, że w sytuacji typu "klient ma problem z naszym oprogramowaniem, stanęła linia produkcyjna i traci właśnie 3 bańki dziennie oraz dzwoni co 15 minut po update'y", odpowiadać "idź pan w uj, będzie jak będzie". Trzeba udzielać najlepszej dostępnej w danym momencie informacji i pamiętać przy tym, że szacunek to nie tylko czas, ale też niepewność. Dobrze, jeżeli ta niepewność w czasie incydentu maleje.

lsikora
Zapytania od takiego klienta nie powinny trafiać wprost do inżynierów zajmujących się naprawą problemu. Trzeba odwrócić sposób komunikacji zabezpieczając inżynierów. Klient ma prawo pytać co 15minut, ale to nie oznacza, że każde zapytanie ma być delegowane do inżynierów ale do osoby zarządzającej incydentem. Powinna ona na podstawie dostępnych statusów odpowiadać klientowi, a inżynierowie tylko odświeżać statusy jak coś się zmieni. W ten sposób i klient dostaje najświeższe informacje, i inżynierowie nie są wybijani z inwestygacji gdy nic się nie zmieniło.
piotrpo
@lsikora: Zgadzam się. Jedynie twierdzę, że jeżeli już widać jakieś ETD, to należy je podać, oczywiście osoba zarządzająca incydentem powinna zauważać "estimated" w tym skrócie.
lsikora
Tak, jak najbardziej
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 14 godzin
  • Postów:3169
2

@piotrpo: w przypadku jak sie juz ma klientow o takiej skali, warto zainwestowac w status page'a, to ogranicza ilosc komunikacji (ale trzeba aktualizowac)

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)