Pierwsze 90 procent kodu stanowi pierwsze 90 procent czasu programowania. Pozostałe 10 procent kodu stanowi pozostałe 90 procent czasu programowania.
- Tom Cargill, Bell Labs
Co to dokładnie znaczy w praktyce? Że programiści wykonują znaczną ilość pracy i że dają z siebie 180% lub?
programming-practices
theory
Josip Ivic
źródło
źródło
Odpowiedzi:
Wyobraź to sobie tak: Kiedy zaczynasz pracę nad oprogramowaniem, możesz napisać ogromne ilości kodu w stosunkowo krótkim czasie. Ten nowy kod może dodać ogromną liczbę nowych funkcji. Problem polega na tym, że często ta funkcjonalność jest daleka od „ukończenia”, mogą występować błędy, niewielkie zmiany (małe w biznesie małe) i tak dalej. Oprogramowanie może więc wyglądać na gotowe (90% zrobione), ponieważ obsługuje większość przypadków użycia. Ale oprogramowanie nadal wymaga pracy. Chodzi o to, że pomimo tego, że oprogramowanie wydaje się prawie gotowe, ilość pracy związanej z doprowadzeniem tego oprogramowania do prawidłowego działania jest tak duża, jak osiągnięcie tego stanu „prawie ukończonego”. Jest tak, ponieważ naprawianie błędów jest często czasochłonne, ale nie generuje dużo kodu.
Problem polega na tym, że większość deweloperów ocenia, że oprogramowanie jest w stanie „prawie ukończonym”, ponieważ jest to stosunkowo proste w porównaniu z faktycznym oszacowaniem całkowitego wysiłku, jaki oprogramowanie to zrobi.
źródło
Jest to odniesienie do wspólnego scenariusza, który niestety wciąż występuje dzisiaj:
„90%” jest liczbą arbitralną, ale dobrze to rozumie: szacunki są domysłem i prawdopodobnie będą błędne (często bardzo błędne), a natura ludzka zapewnia, że prawie zawsze jesteśmy niedoszacowani, więc sprawy się przekraczają.
źródło
other 90%
Słyszałem inną wersję tego (zwaną także „regułą 90–90”), która wygląda następująco:
Obie wersje odnoszą się do trudności z prawidłowym oszacowaniem wysiłków związanych z opracowywaniem oprogramowania i typowych pułapek, w które ludzie wpadają:
źródło
Ta reguła uzupełnia zasadę 80-20. Istnieje wiele różnych interpretacji reguły 80-20, ale dwie najbardziej mi się podobają:
W praktyce oznacza to: rozwój rozpocznie się i będzie trwał do pewnego momentu, w którym zauważone zostaną pierwsze opóźnienia. Opóźnienia mogą mieć różny charakter:
Najważniejsze jest to, że o wiele łatwiej jest zbliżyć się do celu niż faktycznie go osiągnąć.
źródło
Uważam Wikipedia wyjaśnienie dość pouczające:
źródło
Nie, programiści zawsze wykonują taką samą pracę na jednostkę czasu. Oferta dotyczy niedoszacowania kosztów i przekroczeń. 180% to czas i pieniądze, które projekt kosztuje.
Z grubsza oznacza to „Zajmie ci to dwa razy tyle, ile myślisz” i „Będziesz myślał, że dobrze sobie radzisz, dopóki nie będzie już za późno (termin jest bliski)”.
źródło
W praktyce oznacza to, że ludzie okłamują samych siebie.
Jeśli programista powie „skończyliśmy w 90%”, oznacza to, że 90% wysiłku na rzecz zbudowania funkcji zostało wydane.
Jeśli kierownik projektu powie „skończyliśmy w 90%, potrzebuję tylko kogoś, kto to dokończy”, oznacza to, że jest to 90% z budżetu (i prawdopodobnie 50% zrobione). To klient bez pieniędzy, wysokich oczekiwań i złego nastawienia.
Różnica polega na tym, że ukończenie projektu wymaga więcej wysiłku niż funkcji kodowania: qa, poprawki błędów, kopiowanie edycji, wdrożenie.
Tymi rzeczami należy zarządzać w projekcie, a odpowiedzialność za nie ponosi kierownik projektu. Często zaskakuje to nowych premierów, którzy wybierają „ukończenie 90% funkcji”, tylko po to, aby zdać sobie sprawę, że są w połowie drogi do „projektu zakończonego”.
źródło