Dotrzymać terminu lub mniej błędów?

15

W idealnym świecie lepiej jest dotrzymywać terminu przy mniejszej liczbie błędów. Ale z twojego doświadczenia, które jest bardziej preferowane / dopuszczalne:

  1. Dotrzymać terminu, ale ma wiele błędów, ponieważ deweloper spieszy się do rzeczy
  2. Mniej błędów, ale nie do końca dotrzymano terminu, ponieważ programista jest bardzo rygorystyczny w pisaniu kodu
Joshua Partogi
źródło
7
Co z upuszczaniem funkcji? Z mojego doświadczenia wynika, że ​​możesz wydać akceptowalną wersję na czas, jeśli możesz upuścić dodatkowe funkcje, jeśli nie pasują już do projektu. Powinieneś zarezerwować wystarczająco dużo czasu, aby pozbyć się błędów na końcu projektu. Wszystko, co do tej pory nie zostało zaimplementowane, będzie musiało poczekać do następnej wersji.
Anne Schuessler,
Najpierw wypuść względnie wolne od błędów wydanie.
abel
Kiedy robisz prawdziwy scrum, błędy istnieją nie dłużej niż tydzień :) Korzyści: A) płacenie za błędy z góry jest znacznie tańsze, i B) Kiedy płacisz z góry, wiesz, jaki jest prawdziwy koszt.
Job
3
XKCD jest tak samo ważny jak zawsze. xkcd.com/844
Maxpm

Odpowiedzi:

5

Odpowiedź na to pytanie zależy w dużej mierze od celów biznesowych, a także od klienta.

Przedsiębiorstwo :

Jeśli prowadzisz interesy z klientem na poziomie przedsiębiorstwa, który ma ugruntowaną pozycję na rynku, są mniej elastyczni i nie mogą tak szybko dostosować się do zmian. Dlatego w większości przypadków stabilność jest absolutnym wymogiem. Istnieją wyjątki w zakresie badań i rozwoju oraz wprowadzania nowych branż. W niektórych przypadkach szybciej kończy się jako pierwszy.

Tego rodzaju klienci zazwyczaj rozumieją, że dobre oprogramowanie wymaga czasu i będą współpracować z Tobą, aby osiągnąć cele.

Startupy :

W przypadku nowego startupu zasady są drastycznie różne. Jako startup musisz od razu wiedzieć, czy produkt, który budujesz, rzeczywiście spełni zapotrzebowanie, zgodnie z przewidywaniami badań marketingowych. Na początek, jak najszybsze udostępnienie prototypu na rynku może zebrać wiele cennych opinii na temat kierunku, w którym powinien iść produkt.

Może także zapewnić Ci pozycję lidera na rynku, pomagając zdobyć cenny udział w rynku w nowej branży, zanim zostanie nasycona konkurencją.

Ponieważ startupy są małe, elastyczne i mogą szybko dostosowywać się do zmian, ten model działa najlepiej dla nich.

Podsumowując, należy wziąć pod uwagę inne czynniki, ale główną ideą jest to, że każdy projekt jest inny i będzie miał inną jakość i czas na osiągnięcie celów rynkowych. Określenie skutecznej strategii biznesowej, która obejmuje dokładną analizę kosztów alternatywnych wyboru jednej metody, zależy od kierownictwa wykonawczego.

jmort253
źródło
14

lub ... 3. Wytnij niepotrzebne funkcje

Czasami, ze względu na techniczne cukierki lub funkcje cukierków wymagane przez klienta, terminy są trudne do dotrzymania i z natury powstaje większa liczba błędów. Stosowane są zasady KISS i YAGNI .

Cytując z tej książki „Rework”, niezbędne / kluczowe / epicentrum z twojego oprogramowania jest tym, co firma musi funkcjonować, podobnie jak stojak na hot dog może być stojak na hot dog bez żadnych dodatków, czego nie można wyciąć hot dogi.

Renegocjuj

Jedną z najtrudniejszych rzeczy do nauczenia jest to, jak zadowolić klientów. Z mojego doświadczenia wynika, że ​​można to łatwiej osiągnąć dzięki mniejszym iteracjom produktów.

Czasami terminy wymagają oprogramowania działającego na wysokim poziomie produkcji od pierwszego dnia. Menedżerowie / klienci nie zawsze wiedzą (co jest przez większość czasu), czego tak naprawdę potrzebują do oprogramowania. Spróbuj więc ograniczyć zbędne funkcje i zachować jakość. Ostatecznie zależy to od tego, jak krytyczne będzie środowisko produkcyjne, ale spróbuj wyciąć dodatkowe funkcje i zapewnić jakość. Cytując ponownie z „Rework”:

Robienie później oznacza także robienie lepiej

... a także dotrzymywanie terminów przy mniejszej liczbie błędów

dukeofgaming
źródło
2
Jest to ortogonalne w stosunku do pierwotnego pytania. Wiele razy po prostu nie można wyciąć funkcjonalności. Jest dobrze, kiedy możesz, ale nie sądzę, że sama w sobie jest dobrą, ogólną odpowiedzią na pytanie.
Jason Baker
funkcjonalność jest niezbędna. wszystko.
mauris
1
Nie wszystkie funkcje są niezbędne .
Jürgen A. Erhard
2
Nie wszystkie funkcje są niezbędne. Wiele z nich może być miło mieć lub może poczekać do następnej wersji (przy założeniu, że planowana jest kolejna wersja). Nigdy nie pracowałem w projekcie, w którym nie można było wyciąć niektórych funkcji.
Anne Schuessler,
4
Zwykle jeśli w ten sposób zadajesz pytanie „Czy cała ta funkcjonalność jest niezbędna?”, Otrzymasz odpowiedź „Tak!”. Jeśli jednak podzielisz go na wystarczająco małe fragmenty, zwykle są funkcje, które deweloper uznał za niezbędne, ale klient nie dba o to. To wymaga ciągłej komunikacji, aby odkryć. Ponadto, jeśli poprosisz klienta o uszeregowanie funkcjonalności, na dole listy zwykle znajduje się kilka pozycji, które mogą spaść lub poczekać do „terminu”. Nie uważam tej odpowiedzi za ortogonalną, wydaje się, że jest martwa.
Marcie
9

Cóż, możesz to sformułować w ten sposób: czy chcesz zapłacić za jakość teraz czy później? Albo poświęć trochę czasu, aby zrobić to dobrze, albo spędź później, naprawiając wszystkie problemy. Twierdziłbym, że ta faza naprawy błędów po opracowaniu funkcji może być droższa, ponieważ może być również bardziej ryzykowna i podatna na zhackowane rozwiązania, ponieważ istniejący kod już istnieje i prawdopodobnie nie jest wystarczająco wysokiej jakości.

Matt H.
źródło
To bardzo dobra uwaga. :-)
Joshua Partogi
8

Dotrzymać terminu i przedstawić listę znanych problemów.

Ludzie NIENAWIDZĄ znajdowania błędów, ale jeśli powiedziano im to z góry, są znacznie łagodniejsi.


źródło
5

Zależy to całkowicie od sytuacji ....

Należy wziąć pod uwagę wiele czynników:

  1. Jak łatwo jest wprowadzać łatki?
  2. Czy można z czasem wydać podstawową, uproszczoną wersję, a następnie załatać nową funkcjonalność (Edge Case)?
  3. Jaka jest ogólna kultura branży klienckiej dla takiego produktu? Czy oczekują jednorazowych doskonałych wydań, czy też są przyzwyczajeni do ewoluującego systemu, który może być wadliwy przy pierwszym wydaniu?
  4. Jakie ryzyko dla firmy stanowi błędna wersja początkowa, a nie przekroczenie terminu?

Krótko mówiąc, nie ma na to czarno-białej odpowiedzi. Na przykład: w przypadku systemu wbudowanego, który jest trudny i kosztowny we wdrożeniu na urządzenia w terenie, najlepiej spróbować poczekać (w miarę możliwości renegocjować terminy) i wydobyć go tak, jak to możliwe, bez błędów. Z drugiej strony, dla czegoś takiego jak duży system portalu internetowego (napisany jako aplikacja internetowa), który można łatwo zaktualizować w dowolnym momencie, wprowadzając poprawki po ich opublikowaniu, bardziej sensowne może być wydanie początkowo podejrzanej wersji, i następnie łataj problemy (i funkcjonalność krawędzi), gdy do tego dojdziesz.

Ale na koniec z mojego doświadczenia wynika, że ​​była to raczej decyzja biznesowa niż decyzja technologiczna. Jeśli znajdujesz się w sytuacji, w której przekroczenie terminu to wielka sprawa, a posiadanie błędnej wersji początkowej nie jest (lub odwrotnie) - będziesz musiał rozważyć te rzeczy przy podejmowaniu decyzji.

UWAGA: Jako programista oczywiście wolę pomysł polerowania produktu w jak największym stopniu przed jego uwolnieniem (do cholery, wolałbym nigdy nie mieć żadnych terminów;)). Ale realistycznie nie jest to możliwe w prawdziwym życiu. Często uproszczona wersja początkowa jest dobrym rozwiązaniem na środku ziemi.

Stoły Bobby'ego
źródło
2

Widziałem wielu premierów, którzy bali się powiedzieć klientowi, że nie możemy dotrzymać harmonogramu i nalegać, aby wysyłać znane błędy. Mogę ci powiedzieć, że za każdym razem, gdy robią to klientowi, jest on zwykle bardziej zainteresowany mniejszymi błędami i przesuniętym terminem. Gwarantuję, że zapamiętają błędy bardziej niż przekroczony termin, chyba że termin ten jest absolutnie niemożliwy do przeniesienia (np. Początek sezonu podatkowego, gdy tworzysz oprogramowanie podatkowe) lub wpłynie na niektóre inne rzeczy, których przeniesienie będzie bardzo kosztowne (IMHO 98% wszystkich terminów nie spełnia tych kryteriów).

HLGEM
źródło
1

Myślę, że to zależy od błędu. Czy chcesz opóźnić wydanie, aby naprawić błąd, w wyniku którego aplikacja ulega awarii w momencie uruchomienia na dowolnym komputerze? Tak, zdecydowanie. Czy musisz naprawić błąd, który występuje tylko w systemie Windows ME, gdy jest pełnia księżyca? To prawdopodobnie może poczekać.

Jeśli jest to błąd krytyczny, najlepiej wykonać rozdanie numer 2. Powodem jest to, że naprawa kosztuje wykładniczo więcej, jeśli musisz wypchnąć tę poprawkę w aktualizacji.

W przypadku mniej krytycznych aktualizacji możesz wydać aktualizację pakietową, która do pewnego stopnia obniża ten koszt.

W razie wątpliwości mówię, że wybierasz numer 2, ale nie zdziwiłbym się, gdy otrzymam takie podejście od zarządzania. Podejrzewam, że menedżerowie są częściej oceniani na podstawie tego, jak dobrze są w dotrzymywaniu terminów, niż nie powodują niepotrzebnych aktualizacji krytycznych.

Jason Baker
źródło
1

Ani. Dlaczego nie upiec jakości w swoim kodzie? Czy jesteś w stanie dotrzymać terminów dzięki kodowi jakości? Możesz wypchnąć mniej funkcji, ale jeśli jakość zostanie wprowadzona do procesu, możesz osiągnąć jedno i drugie.

To, co się teraz stanie, będzie wymagało upoważnionego kierownika zespołu lub menedżera deweloperów, który może odepchnąć firmę i przeprowadzić rozmowę na temat dwóch rzeczy:

  1. Jakość zapisana w kodzie = 2 mniej funkcji na kompilację
  2. Priorytetyzowanie najbardziej potrzebnych funkcji od interesariuszy, co NAPRAWDĘ potrzebują.

Następnie możesz skoncentrować się na funkcjach o najwyższej wartości i wypchnąć je z doskonałością.

Zwinny Zwiadowca
źródło
0

Jeśli chodzi o testowanie, nigdy się nie kończy. jest skończony, ale nigdy nie skończony.

Idź na premierę z błędami z dotkliwością i większą ostrożnością.

maz3tt
źródło
4
Tak, ale nie popełniasz samobójstwa, bo i tak umrzesz. Prowadzisz tak długie i zdrowe życie, jak potrafisz. Z tego samego powodu nie wypychasz gówna tylko dlatego, że i tak nigdy się nie skończy. Próbujesz zrobić to tak skończonym, jak to tylko możliwe.
Jason Baker
Dobrze powiedziane @Jason. +1
Dan McGrath
0

Dotrzymanie terminu z wieloma błędami sprawia, że ​​jesteś biedny w branży, a klient nie przyjdzie ponownie. Możesz porozmawiać z klientem, aby uzyskać opóźnienie o dwa lub trzy dni.

Abimaran Kugathasan
źródło
0

Jeśli spojrzysz na to od końcowego użytkownika, byłbym bardzo odrażony, gdyby ktoś obiecał zrobić coś na poniedziałek, a kiedy spróbuję go użyć, to nie działa, lub wszystko jest wadliwe.

Ale jeśli spojrzysz na stronę „proceduralną”, oznacza to, że aplikacja wymaga więcej testów i jest częścią naturalnego życia oprogramowania.

Moim najlepszym podejściem jest próba sprawienia, aby rzeczy działały tak, jak powinny.

guiman
źródło
0

To pytanie, na które tylko ty możesz odpowiedzieć. Zależy to od rodzaju produktu, kim jest klient, czego wymaga klient itp. Nie ma sposobu, aby udzielić prostej odpowiedzi „a lub b”. To całkowicie zależy od sytuacji.

Ale przypomnę ci, że koszt naprawienia błędu po wydaniu jest znacznie wyższy niż naprawienie przed wydaniem. Więc weź to pod uwagę, podejmując decyzję, czy poczekać do momentu opublikowania, aby naprawić błąd, ponieważ poświęcisz na to więcej czasu / wysiłku / pieniędzy.

Grandmaster B.
źródło