Ucieczka z Wyspy Gilligana

Oryginalny post: Escaping From Gilligan’s Island

Autor: Jeff Atwood

Uważam, że warto odświeżyć listę klasycznych błędów procesu tworzenia aplikacji stworzoną przez Steve’a McConnella, oraz towarzyszące jej studium przypadku, przynajmniej raz do roku. Zastopujcie mnie, jeżeli słyszeliście to już wczesniej:

“Spójrz Mike” powiedział Tomas. “Mogę przekazać mój kod dzisiaj i nazwać go ukończonym, ale prawdopodobnie będę potrzebował jeszcze trzech tygodni na uporządkowanie go, jeśli go teraz oddam.” Mike zapytał, co Tomas miał na myśli przez „uporządkowanie”. „Nie dostałem logo firmy żeby umieścić na każdej stronie i nie dostałem nazwiska i numeru telefonu agenta do umieszczenia w stopce każdej strony. Drobiazgi w tym stylu. Wszystkie ważne funkcje działają dobrze. Praca jest ukończona w 99 procentach.”

Jak głosi stare przysłowie programistów, pierwsze dziewięćdziesiąt procent zadania zajmuje dziewięćdziesiąt procent czasu, a ostatnie dziesięć procent zadania zajmuje kolejne dziewięćdziesiąt procent czasu.

Klasyczne Studium przypadku błędu czyta się z pewnym niepokojem. Być może przesadzone, ale jest to dziwnie dokładne streszczenie wszystkich patologicznych projektów programistycznych, w których brałem udział, czyli w praktyce prawie wszystkich, z jakimi miałem do czynienia.

To zjawisko McConnell przyrównuje do mechanizmu znanego z Wyspy Gilligana. Co tydzień pojawia się tam jakiś nowy, szalony plan ucieczki z wyspy, ale na koniec odcinka rozbitkowie zawsze zostają uziemieni na wyspie co najmniej na kolejny tydzień.

Obsada Wyspy Gilligana

Jeżeli na pierwszy rzut oka nie widzisz powiązań z procesem tworzeniem oprogramowania, pozwól mi przypomnieć długą i ponurą historię błędów w projektach programistycznych. Klasyczne błędy są klasycznymi, ponieważ są tak kuszące. Musisz aktywnie rozpoznawać kiedy wpadasz w jedną z tych pułapek. Jak powiedział kiedyś Steve w jednym z wywiadów:

Właściwie to sukces w tworzeniu oprogramowania zależy nie tyle od niepopełniania kilku błędów, co od dążenia do robienia większości rzeczy prawidłowo.

Oczywiście niezbędne do tego jest doświadczenie zdobyte w poprzednich projektach oraz wiedza zdobywana poprzez odpowiednie projektem programistycznym jest procesem w pewnym zakresie powtarzalnym. Właśnie dlatego powinniście od teraz mieć w pamięci każdy z poniższych 36 klasycznych błędów podkreślonych w książce McConnela Rapid Development:

Błędy ludzkie Błędy procesu Błędy produktu Błędy technologiczne
  1. Podważona motywacja
  2. Słabi ludzie
  3. Niekontrolowani problematyczni pracownicy
  4. Bohaterstwo
  5. Dodawanie ludzi do spóźnionego projektu
  6. Głośne, zatłoczone biura
  7. Tarcia pomiędzy twórcami a klientami
  8. Nierealistyczne oczekiwania
  9. Brak efektywnego sponsoringu projektów
  10. Brak zainteresowanych stron
  11. Brak zdania użytkownika
  12. Polityka ponad istotą sprawy
  13. Pobożne życzenia
  1. Zbyt optymistyczne planowanie czasu
  2. Niedostateczne zarządzanie ryzykiem
  3. Błędy wykonawców
  4. Niewystarczające planowanie
  5. Rezygnacja z planowania pod presją
  6. Strata czasu na rozmyty początek
  7. Niewystarczające aktywności początkowe
  8. Nieodpowiednie projektowanie
  9. Niewystarczające zapewnianie jakości
  10. Niewystarczająca kontrola zarządzania
  11. Przedwczesna lub zbyt częsta zbieżność
  12. Planowanie nadrobienia później
  13. Tworzenie kodu rodem z piekła
  1. Zbytnie precyzowanie wymagań
  2. Zbytnie dodawanie funkcjonalności
  3. Zbytni perfekcjonizm programistów
  4. Przepychanki w negocjacjach
  5. Programowanie sterowane badaniami
  1. Szybkie rozwiązywanie kłopotliwych spraw
  2. Przeszacowane oszczędności z tytułu użycia nowych narzędzi lub metod
  3. Zmiana narzędzi podczas trwania projektu
  4. Brak automatycznej kontroli wersji

Zacząłem coraz mocnej wierzyć, że jedyną różnicą pomiędzy doświadczonymi, a niedoświadczonymi programistami jest to, że ci doświadczeni mają świadomość popełnianych błędów. Ta sama reguła odnosi się do projektów programistycznych i menadżerów projektów. Jeżeli nie przeglądasz aktywnie Klasycznych Błędów Rozwoju Programowania podczas prac nad projektem, nie masz nawet pojęcia, jak duże jest prawdopodobieństwo, że właśnie robisz jeden z tych błędów.

Popełnianie błędów jest nieuchronne, ale powtarzanie tych samych w kółko już niekoniecznie. Powinieneś postarać się, by popełniać całkowicie nowe, spektakularne, nigdy nie widziane przedtem błędy. Na koniec, Steve McConnell podkreślił kilka nowych klasycznych błędów na swoim blogu, które chce dodać do kanonu 10 lat później:

  • Mylenie oszacowań z celami
  • Nadmierna wielozadaniowość
  • Założenie, że całościowy development ma niewielki wpływ na łączne wysiłki
  • Niejasna wizja projektu
  • Zaufanie do mapy większe niż do terenu
  • Outsourcing jako zmniejszenie kosztów
  • Pozwolenie by ludzie pracowali w oddzieleniu od siebie (zastępując poprzednie “braki w zarządzaniu”)

Steve szuka też naszej opinii. Wydał Ankietę odnośnie Klasycznych Błędów i zaprosił każdego do udziału. Jeżeli macie jakiekolwiek doświadczenie w tworzeniu oprogramowania, proszę, przyłączcie się.

To prawda, wszystko przemawia przeciwko wam. Ale to dobry pomysł, by okresowo przypominać sobie, że może, tylko może – jeżeli będziecie w stanie unikać popełniania tych samych klasycznych błędów, które popełniono w tak wielu poprzednich projektach przed Tobą - moglibyście któregoś dnia wydostać się z wyspy.

Data publikacji oryginału: 18 czerwca 2007

2 komentarze:

Anonimowy pisze...

"Pozwolenie by ludzie w oddzieleniu od siebie" - a cóż to znaczy?

rafek pisze...

@Anonimowy: przeoczenie - poprawione. Dziękuję.

Prześlij komentarz

Related Posts with Thumbnails