background image

46

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   5/2006

Antywzorce w zarządzaniu 

projektami informatycznymi

A

rtykuł  o  zarządzaniu  projektami  informa-

tycznymi  w  czasopiśmie  dla  deweloperów?  

Czyżby i już tutaj sięgały macki wszechmoc-

nych  menadżerów?  Otóż  nie,  artykuł  ten  jest  adre-

sowany  do  Ciebie  –  dewelopera,  biorącego  udział 

w projekcie informatycznym.

Na co dzień żyjesz w świecie pełnym wyzwań, być 

może tworzysz przełomowe rozwiązanie lub utrzymu-

jesz  starożytny  system  informatyczny.  Musisz  doko-

nywać cudów w piątkowy wieczór i uczyć się podczas 

snu. Na biurku wśród stosów dokumentacji, gdzieś pod 

kubkiem  od  kawy  leży  ponowienie  ponowienia  proś-

by o wykorzystanie zaległych urlopów. Realizujesz za-

danie, do którego potrzeba 1.4241 dewelopera. Brzmi 

znajomo? Jeśli tak, ten artykuł jest właśnie dla Ciebie. 

Postaram się wskazać najczęściej pojawiające się błę-

dy w zarządzaniu projektami. Tematyka poruszona w 

artykule to antywzorce projektowe, złe praktyki rozpo-

znawane i opisywane od lat. Jeśli chcesz wiedzieć, dla-

czego tak wiele projektów kończy się niepowodzeniem, 

a idolem dla większości z Nas jest Dilbert i Chuck Nor-

ris – zapraszam do lektury.

Antywzorce projektowe

Podstawowe informacje dotyczące antywzorców za-

warłem w artykule „Antywzorce projektowe” (SDJ 2/

2006),  dla  przypomnienia  jednak  –  kilka  podstawo-

wych faktów. 

Antywzorzec to opis złej praktyki – błędu popełnia-

nego na tyle często, iż został zidentyfikowany, nazwa-

ny i udokumentowany. Podczas gdy wzorce projektowe 

prezentują  poprawne  rozwiązania  pewnych  klas  pro-

blemów, antywzorce wykorzystujemy w celu identyfika-

cji błędów w sztuce. Okazuje się, że człowiek jest na ty-

le skomplikowany, iż łatwiej zapamiętuje przykłady ne-

gatywne niż pozytywne – z tego też powodu antywzor-

ce są poręcznym narzędziem dydaktycznym.

Antywzorzec  nie  byłby  przydatny,  gdyby  zawie-

rał tylko opis błędu. To, czego potrzebujemy i co zo-

stanie  zaprezentowane  również  w  niniejszym  arty-

kule, to przykłady działań, które należy podjąć, aby 

naprawić  popełniony  błąd.  Większość  antywzorców 

jest  efektem  konkretnej  postawy  członków  zespołu, 

w  którym  go  zidentyfikowano.  Poprzednio  opisane 

zachowania  ludzkie  prowadzące  do  powstawania 

złych praktyk to między innymi duma, lenistwo, za-

chłanność, pycha czy ignorancja. 

Wzorce  projektowe  często  kojarzone  są  jedynie 

z konstrukcjami programistycznymi. Antywzorce projek-

towe  omówione  poprzednio,  dotyczyły  głównie  zadań 

związanych  z  tworzenia  oprogramowania.  Nie  można 

jednak zapomnieć, iż wzorce i antywzorce w projektach 

informatycznych  napotykamy  na  każdym  etapie.  Czy 

to podczas zbierania wymagań, tworzenia architektury 

systemu, kodowania, czy też w zarządzaniu projektem.

Błędy w zarządzaniu projektami

Nim przejdziemy do omówienia poszczególnych antyw-

zorców projektowych, pragnę poprosić Cię o jedno. Je-

śli zauważysz, iż w Twoim projekcie wystąpił antywzo-

rzec, porozmawiaj o tym z członkami zespołu. Zgłoś to 

menadżerowi  i  nie  poddawaj  nawet  jeśli  nie  spotkasz 

się z pozytywną reakcją. Podstawowy antywzorzec to 

brak  świadomości  istnienia  antywzorców.  Być  może 

brzmi to enigmatycznie, zauważ jednak, iż gdy potra-

fisz zidentyfikować błąd, potrafisz się przed nim ustrzec 

– wszak po to właśnie opracowuje się antywzorce!

„Don't Worry, Be Happy”

Tytuł  piosenki  Bobby'ego  McFerrin'a  świetnie  oddaje 

stan  jaki  panuje  w  wielu  projektach  informatycznych. 

Pośpiech,  lenistwo  lub  brak  doświadczenia  w  prowa-

dzeniu projektami, stwarza sytuacje, w których nikt nie 

pomyślał  o  zastosowaniu  choćby  podstawowych  za-

sad zarządzania procesem wytwarzania programowa-

nia. Antywzorzec ten, zwany też inaczej „nil desperan-

dum” (łac. nie ma powodu do rozpaczy) jest dość łatwo 

zidentyfikować. Jeśli słyszysz lub być może sam nie-

dawno  wypowiedziałeś  magiczne  zaklęcie  „Powiedz 

mi, czego chcesz, a ja to zakoduję” - masz do czynienia 

Stefan Turalski

Autor pracuje na stanowisku - projektant oprogramowa-
nia w firmie Silicon & Software Systems Polska. Z za-
interesowaniem przygląda się rozwojowi technologii IT, 
dawno już straciwszy nadzieję, że jest w stanie ogarnąć 
tą dziedzinę wiedzy.
Kontakt z autorem stefan.turalski@gmail.com

Rysunek 1. 

Elementy przykładowego procesu 

wytwarzania oprogramowania

�����������������

������������

�������

���������

����������

background image

Antywzorce w zarządzaniu projektami informatycznymi

47

www.sdjournal.org

Software Developer’s Journal   5/2006

z tym antywzorcem. Myślisz, że nie potrzebujesz projektu syste-

mu? Nie ma potrzeby kłopotać klienta i spotykać się w celu prze-

dyskutowania wymagań? Piszesz doskonały kod, który nie po-

trzebuje testów? Proszę powiedz, że na żadne pytanie nie odpo-

wiedziałeś twierdząco.

Niestety,  brak  świadomości  istnienia  procesu  wytwarzania 

oprogramowania  prowadzi  do  przekroczenia  kosztów  budowy 

rozwiązania informatycznego, zerwania kontraktu, czy też stwo-

rzenia nikomu nie potrzebnego systemu.

Przykładem może być tu projekt dotyczący stworzenia Intra-

netu w pewnej firmie. Projekt został zaplanowany na 2 tygodnie, 

deweloperzy,  aby  lepiej  współpracować  pojechali  kodować  do 

siedziby  klienta.  Po  2  miesiącach  stworzono  zalążek  systemu, 

który pracownicy klienta przeklinali, bo chociaż był piękny, to pra-

cował bardzo wolno. Nikt nie przewidział, że zespół klienta to po-

nad 2 tysiące pracowników, znacznie obciążających serwer Intra-

netu. Co więcej, mimo, że deweloperzy twierdzili, iż spełnili wy-

magania klienta, ten nie chciał zapłacić uzgodnionej kwoty. Ja-

ko powód podał brak 75% wymaganej funkcjonalności. Czy tylko 

zbiegiem okoliczności było to, że pozostałe 25% zostało wykona-

ne perfekcyjnie i pracowało na potrzeby działu HR, z którym są-

siadował pokój programistów? Na całe szczęście tego typu sytu-

acje zdarzają się dość rzadko.

Większość menadżerów ma już świadomość istnienia pro-

cesu zarządzania projektem informatycznym, a i dla dewelo-

perów znajomy jest Rysunek 1.

Jeśli jednak nie wiesz, czym jest proces wytwarzania opro-

gramowania,  ten  artykuł  Ci  nie  pomoże.  Temat  ten  stanowczo 

wymaga zgłębienia i jest zbyt rozległy, aby poruszyć go na tych 

kilku stronach. Nie muszę chyba mówić, że to będzie także Two-

ja wina, jeśli np. nie przetestowane rozwiązanie zostanie (w naj-

lepszym  przypadku)  zwrócone  do  kosztownych  poprawek.  Je-

śli więc posiadasz odpowiednie doświadczenie, nie zgadzaj się 

na łamanie podstawowych zasad i dobrych praktyk wytwarza-

nia  oprogramowania.  Podstawowy  antywzorzec  rozwiązuje  się 

bardzo prosto – należy wprowadzić proces zarządzania projek-

tem. Niestety bez pracy nie ma kołaczy lub jak mawiają Anglosa-

si „No pain, no gain”.

Nieracjonalne zarządzanie

Załóżmy,  że  dysponujemy  kierownictwem  zespołu  rozumieją-

cym,  że  planowanie  jest  potrzebne.  Konieczne  jest  upewnie-

nie się, że menadżerowie nie popełniają podstawowych błędów 

w planowaniu. Śledzenie projektu na każdym z etapów prac jest 

niewątpliwie potrzebne, jednak nikt nie potrafi poprawnie osza-

cować zadań zależnych od specyfikacji wymagań klienta, które 

jeszcze nie zostały dostarczone.

Błędy w zarządzaniu projektem zdarzają się zawsze, mogą 

przyjąć rozmiar antywzorców opisanych poniżej, takich jak Marsz 

ku klęsce, czy Zamrożenie w fazie analizy. Najczęściej powodu-

ją je tzw. „Trudni ludzie”, których obecność w projekcie jest tak-

że jednym z antywzorców. Nie potrafiąc lub nie znając specyfi-

ki projektu podejmują błędne decyzje. Nowy menadżer w projek-

cie, który realizuje pewne zadania niespełna od roku, może błęd-

nie alokować ludzi. Brak mocy decyzyjnej może powodować, iż 

przez kilka pierwszych miesięcy tworzy się dokumenty zamiast 

rozpocząć kodowanie. Na efekty nie trzeba długo czekać. Sys-

temy, które powstawały w przeciągu kliku tygodni nie są odpo-

wiednio przetestowane, najczęściej dlatego, iż menadżer nie za-

łożył tego typu zadania.

Można  zaryzykować  stwierdzenie,  że  jeśli  podejmiemy  się 

zarządzania projektem i zatrudnimy menadżera, niemal w 100% 

pewne  jest,  iż  podejmie  on,  choć  jedną  nieracjonalną  decyzję. 

Nie ma ludzi nieomylnych i kontrola samego procesu zarządza-

nia  też  jest  konieczna.  W  przeciwnym  przypadku  otrzymamy 

projekt, który stanie się typowym źródłem antywzorców w zarzą-

dzaniu. Akcje zapobiegawcze w tym przypadku sprowadzają się 

praktycznie  do  podnoszenia  kwalifikacji  menadżerów.  Wraz  ze 

zbieraniem doświadczenia, osoby kierujące projektem zdają so-

bie sprawę z najczęściej popełnianych błędów i potrafią ich uni-

kać. Z punktu widzenia programisty warto zaznaczyć, iż to wła-

śnie Nas często pyta się o oszacowanie czasu projektu – jeśli 

zrobimy to źle, lub przeoczymy pewne zadania, z pewnością za-

płacimy za to w przyszłości.

Marsz ku klęsce

W  znanej  większości  menadżerów  książce  Edwarda  Yourdon'a 

„Death March”, autor opisał i zdefiniował grupę projektów z góry 

skazaną na niepowodzenie. Podana definicja zakłada, iż projekt 

skazany na klęskę to taki, w którym brakuje ponad 50% zasobów. 

Z pewnością powierzono Ci nie raz zadanie, które powinno wy-

konać kliku programistów To przykład braku prawidłowego osza-

cowania  kadry  potrzebnej  do  realizacji  projektu.  Analogicznie, 

o 50% za niski budżet lub zadeklarowany czas trwania projektu 

krótszy od porównywalnych projektów o 50%, prowadzi do fiaska 

danego przedsięwzięcia. Podobne założenie dotyczy także celów 

projektu, które często nie tylko trochę, ale nawet o ponad 50% 

mają przewyższać standardowo opracowywane rozwiązania.

Doświadczenie uczy, iż niemal każdy projekt informatyczny 

to marsz ku klęsce, według definicji Yourdon'a. Nie należy, więc 

od razu załamywać rąk. To co potrafi dobry menadżer projektu, 

to identyfikacja tych zasobów, które są krytyczne i stwarzają ry-

zyko w projekcie. Następnie z wykorzystaniem dostępnych środ-

ków, ryzyko to można próbować minimalizować.

Przykładem może być mała firma programistyczna, która 

choć posiada bardzo niewielkie środki zobowiązała się stwo-

rzyć złożony system o bardzo specjalistycznej funkcjonalności 

(nie trzeba chyba wspominać, iż o dziedzinie problemu, któ-

ry miał wspierać system, w zespole programistów nikt nic nie 

wiedział). Jedyne, co przemawia na jej korzyść to czas projek-

tu, który jest dość luźno określony.

W  takim  przypadku,  sprawny  menadżer  może  zapropono-

wać klientowi dostarczanie kolejnych modułów, jako wyników ko-

lejnych etapów projektu. Firma miast narażać się na kredyt, bę-

dzie miała stałe źródło dochodów, mały zespół łatwiej przetestu-

je, zaprojektuje, wykona i wdroży niewielkie moduły. Korzyść zaś 

z przyrostowego wytwarzania oprogramowania, to w tym przy-

padku możliwość szybkiej reakcji na potrzeby klienta, który prze-

cież  niekoniecznie  musi  posiadać  całą  oczekiwaną  funkcjonal-

ność  od  razu.  Najważniejsze  w  przypadku  zidentyfikowania 

antywzorca  „marsz  ku  klęsce”  jest  odpowiednie  zidentyfiko-

wanie przyczyny marszu. Gdy nic innego już nie pomaga, pro-

ponuję uciekać. Marsz trwa często do kilku lat, w zależności 

od zasobów organizacji. Niestety kadra kierownicza, która nie 

potrafi odpowiednio zareagować i zapobiec skutkom marszu, 

przyczyni się tylko do klęski projektu.

„Mushroom management”

W  kolejnej  kultowej  już  niemal  książce  „The  Soul  Of  A  New 
Machine
”  Tracy  Kidder  opisuje  projekt  informatyczny,  w  któ-

background image

48

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   5/2006

rym udział biorą młodzi deweloperzy oddzieleni od oczekiwań 

klientów. Hodowla grzybów, jak potocznie można przetłuma-

czyć  anglojęzyczną  nazwę  antywzorca,  to  sytuacja  niestety 

nazbyt częsta w projektach.

Kierownictwo  projektu,  architekci,  specjaliści  analizujący 

wymagania klientów, tworzą dokumentację oraz modele opi-

sujące przyszły system. Sami programiści, czyli autorzy roz-

wiązania nie są dopuszczani do rozmów z klientem. Skutkiem 

tego dostarczone rozwiązanie często nie dostarcza oczekiwa-

nej przez klienta funkcjonalności.

Często  programiści  padają  także  ofiarą  dość  swobodne-

go  traktowania  dokumentacji  projektowej  przez  samego  klien-

ta.  Osobiście  byłem  świadkiem  projektów,  w  których  klient  od-

rzucił przedstawione mu rozwiązanie, mimo iż wcześniej zaak-

ceptował przygotowaną dokumentację. Bardzo prostą akcją za-

pobiegawczą  jest  opracowanie  prototypu  systemu.  Przy  możli-

wościach oferowanych przez nowoczesne środowiska i techno-

logie, przygotowanie tego typu przykładowego rozwiązania, nie 

pochłania dużych zasobów, a jest nieocenione w trakcie rozmów 

z klientem. Aby uniknąć sytuacji, gdy programista pisze program 

dla siebie, a nie dla użytkownika, należy go oswoić z problemem. 

Mimo, iż nasze środowisko jest postrzegane przez pryzmat ste-

reotypów, programista nie może być izolowany od klienta i od je-

go potrzeb. Jeśli odpowiednio wcześnie nie zasygnalizujesz, że 

brakuje Ci jasnej wizji systemu, nie mówiąc już o szczegółach re-

alizacji poszczególnych procesów – sam przyczynisz się do po-

rażki tego projektu.

Zamrożenie w fazie analizy 

Brak fazy analizy w projekcie informatycznym jest niemal niewy-

obrażalny. Wszak, zarówno klient jak i zespół budujący rozwią-

zanie informatyczne musi uzgodnić zakres funkcjonalności two-

rzonego systemu. I choć nieczęsto można mówić o doskonale 

przeprowadzonej analizie, istnieją projekty, w których za cel po-

stawiono sobie stworzenie idealnego zbioru wymagań funkcjo-

nalnych oraz projektu systemu. Projekty, w których faza analizy 

przeciąga się, są szczególnie niebezpieczne, gdyż najprawdopo-

dobniej nigdy nie przejdą w fazę implementacji systemu. Szcze-

gólnie dobrze znają ten antywzorzec osoby, które miały okazję 

pracować w projektach wielokrotnie rozpoczynanych całkiem od 

nowa. Przyczyną może być tu zmiana kierownictwa lub główne-

go celu projektu. 

Faza analizy służy do nakreślenia wizji przyszłego systemu, 

w możliwe dokładny sposób. Nie należy jednak kierować się za-

sadą, iż jeśli raz dokonaliśmy analizy systemu nigdy już nie wró-

cimy do tej fazy. Doświadczenie uczy, że dobrze przeprowadzo-

na analiza, to nie ta, która dostarcza kompleksowej wiedzy o bu-

dowanym rozwiązaniu, w tym o najmniejszych jego szczegółach. 

Dobra  analiza  to  taka,  która  pozwala  na  łatwe  wprowadzanie 

zmian, które z pewnością pojawią się w przyszłości. 

Jak  widzimy  na  Rysunku  1.  projekt  informatyczny  można 

traktować zgodnie z modelem wodospadowym, w którym kolej-

ne fazy następują po sobie. Doświadczony menadżer wie jed-

nak, że budowanie systemu informatycznego to proces przyro-

stowy. Po wykonaniu pracy, np. w fazie implementacji lub testo-

wania,  być  może  będziemy  musieli  powrócić  do  faz  początko-

wych w celu weryfikacji pierwotnych założeń.

Menadżerowie mogą nalegać na dostarczanie im kompletnej 

analizy systemu przed podjęciem prac projektowych. Być może 

kierownictwo projektu boi się podjąć decyzję o realizacji systemu 

bez kompleksowej wiedzy o dziedzinie problemu. Możemy mieć 

do czynienia ze szczególnie mocnym przywiązaniem do pewnej 

technologii, pochodzącej z poprzedniego projektu menadżera, a 

nie adekwatnej do potrzeb aktualnego projektu. Zachowania te-

go typu blokują postęp prac projektowych lub jak sugeruje na-

zwa antywzorca – zamrażają je. 

Nawet w sytuacji, gdy projekt wyszedł poza fazę analizy, za-

zwyczaj  długą  i  dostarczającą  bardzo  dokładnej  wiedzy,  anty-

zwozrzec ten może ujawnić się ponownie. Czasem podczas pro-

jektowania, implementacji lub testowania, okazuje się że analiza 

nie przewidywała pewnych sytuacji lub po prostu jest sprzeczna 

z rzeczywistymi wymaganiami klienta. Menadżerowie, którzy już 

poświęcili zasoby projektu na wykonanie analizy, najczęściej bę-

dą bronili już istniejących założeń. A przecież proces wytwarza-

nia  oprogramowania  zakłada  zmiany.  Jeśli  więc  pojawi  się  ko-

nieczność ich wprowadzenia, należy odpowiednio na nie zare-

agować, szacując wpływ zmiany na już istniejący system. Pod 

żadnym pozorem nie można stwierdzić, iż raz wykonana analiza 

jest już dziełem ostatecznym.

Jeśli  jako  programista  zauważasz  tego  typu  błędy  w  za-

rządzaniu projektem, zwróć proszę uwagę kierownictwu. Do-

brze wykonana analiza to analiza, którą można zmieniać. 

Panujące  obecnie  podejście  obiektowe  do  projektowania 

programowania z definicji jest przygotowane na rozszerzanie. 

Coraz  popularniejsze  podejście  architektur  zorientowanych 

na usługi (ang. Service Oriented Architecture) również zakła-

da, iż rozwiązanie – kompletny system informatyczny, zosta-

nie oparte o zestaw usług podatnych na zmiany (z tego to po-

wodu usługa najczęściej prezentuje jedynie interfejs, ukrywa-

jąc szczegóły implementacyjne).

Nie należy więc dążyć do zamknięcia fazy analizy i jej za-

mrożenia. Wręcz przeciwnie, w dobrze zarządzanym projek-

cie, faza analizy istnieje w tle. Każda zmiana wynikająca czy 

to z zmiany wymagań klienta, czy to z dostrzeżonych niespój-

ności lub luk w analizie, powoduje powrót do już poczynionych 

założeń i ich rewalidację.

Podsumowując, faza analizy jest niewątpliwie kluczowa i bar-

dzo ważne jest prawidłowe jej przeprowadzenie. Należy, jednak 

pamiętać, aby nie przesłoniła nam ona celu, jakim jest stworze-

nie rozwiązania informatycznego. A podczas prowadzenia prac 

projektowych  należy  zapewnić  dobre  zarządzanie  zmianami 

wpływającymi na już poczynione założenia.

Plan

Każdy  kto  pamięta  czasy  poprzedniego  ustroju  (PRL’u), 

z pewnością wie czym jest PLAN. Kto zaś nie pamięta, wy-

starczy, że rzuci okiem na kroniki filmowe z poprzedniej epoki. 

Plan na kilka lat, pomagał zarządzać całym krajem. Scentrali-

zowane centrum dowodzenia, najpierw plan taki tworzyło, na-

stępnie go egzekwowało, tzn. wymagało jego wykonania. Re-

Bibliografia

l

  AntiPatterns: Refactoring Software, Architectures, and Projects 

in Crisis

l

  William J. Brown, Raphael C. Malveau, Hays W. McCormick 

III, Thomas J. Mowbray „AntiPatterns in Project Management”

l

  William J. Brown, Hays W. McCormick III, Scott W. Thomas

l

  http://c2.com/cgi/wiki?AntiPattern

background image

Antywzorce w zarządzaniu projektami informatycznymi

49

www.sdjournal.org

Software Developer’s Journal   5/2006

alna realizacja była najczęściej nierealna, a raportowane po-

stępy i wyniki istniały jedynie na papierze.

Sytuaja podobna ma niestety miejsce w wielu projektach 

informatycznych. Z własnego doświadczenia mogę przywołać 

taką oto historię.

Menadżer  projektu,  niekoniecznie  dysponujacy  wiedzą  in-

formatyczną zbudował zręby planu. Podlegli mu kierownicy ze-

społów zdefiniowali grupy zdań, wreszcie programiści wyodręb-

nili pojedyńcze zadania. Oczywiście dzieło takie było nie do za-

akceptowania przez zarząd firmy wykonującej projekt. Plan prze-

kraczał terminy, zakładał szkolenia oraz powiększenie zespołu. 

Zasiedliśmy więc do planowania raz jeszcze. Tym razem kosz-

ty się zgadzały, a kilka zadań sprytnie ukryliśmy tak, że projekt 

został zaakceptowany. Gdy po prawie dwóch tygodniach wystar-

towaliśmy, okazało się, że w planie nie przewidziano połowy za-

dań. Natomiast metodę oszacowania czasu wykonania pozosta-

łych zdań z powodzeniem można byłoby wykorzystać w syste-

mach gier losowych.

Plan  w  projekcie  jest  tylko  narzędziem,  pomagającym 

oszacować koszt i czas. Za pomocą spisanych zadań, ułożo-

nych w piękny wykres Gantta, nie oszczędzimy pieniędzy ani 

tez nie wstrzymamy czasu. Jeśli menadżer projektu naciska 

na wykonanie planu, kiedy widzisz, że zdania uległy zmianie, 

musisz to zasygnalizować.

Głównym zadaniem menadżera w projekcie jest zapewnienie 

dobrej komunikacji między osobami zespołu i zarządzanie pla-

nem projektu. To ta osoba jest odpowiedzialna za aktualizowanie 

danych i śledzenie postępów w projekcie. Jeśli nie otrzyma sy-

gnału o zmieniających się wymaganiach klienta, lub o przeciąga-

jacym się czasie wykonania szczególnie skomplikowanego zda-

nia, nie jest w stanie prawdłowo zareagować, w tym międy inny-

mi oszacować ryzyka powodzenia projektu. Jeśli więc menadżer 

projektu igoruje zgłaszane problemy z wykonaniem planu, jego 

kompetencje należy postawić pod znakiem zapytania.

Odważę się stwierdzić, że nie istnieje projekt w którym nie 

było problemów z oszacowaniem prawdłowego czasu i wysił-

ku jaki będzie potrzebny do stworzenia systemu informatycz-

nego. Zawsze należy być otwartym na zmiany w planie pro-

jektu, odpowiednio zarządzać terminami, kierować się tym, że 

dostarczony ma być system informatyczny (lub jego kompo-

nenty) a nie doskonale zrealizowany plan.

Nawiązując do wstępu tej seksji, wszyscy wiemy jak za-

kończył  się  projekt  PRL.  Obecnie  coraz  więcej  projektów 

wykorzystuje  narzędzia  służące  do  zarządzania  czasem 

oraz planowania, nie jest jednak ważne to czy się te narzę-

dzia wykorzystuje, ale jak się to robi. Plan w projekcie jest 

narzędziem, które ma pomóc w realizacji celu, nie jest ce-

lem samym w sobie – należy o tym pamiętać eliminując ten 

antywzorzec.

Projekt – drukarnia

W każdym projekcie nadchodzi moment tworzenia dokumenta-

cji. Zbieramy wymagania użytkowników, projektujemy rozwiąza-

nie, proponujemy interfejs użytkownika. Tworzymy coraz więcej 

dokumentów, czytanych bądź też nie przez kierownictwo i klien-

tów. Jednak, gdy programiści, testerzy, projektanci skupiają się 

tylko na tworzeniu dokumentacji, projekt zmienia się w efektow-

ną fabrykę makulatury.

Pewien poziom dokumentacji jest jak najbardziej koniecz-

ny w celu zapewnienia sprawnej komunikacji między klientem 

a zespołem wykonującym powierzone zadanie. Również we-

wnątrz zespołu, pomiędzy osobami pełniącymi różne role, do-

kumentacja  umożliwia  zapisanie  podjętych  decyzji,  ich  uza-

sadnienie  oraz  stanowi  punkt  odniesienia  w  przyszłych  dys-

kusjach.

W sytuacji, gdy tworzenie dokumentów przybiera formę 

głównego  celu  projektu,  mamy  do  czynienia  z  antywzor-

cem. Programiści powoli zapominają jak wygląda kod, pro-

jektanci są coraz bardziej sfrustrowani wprowadzaniem ko-

lejnych  poprawek  do  pieczołowicie  wersjonowanych  doku-

mentów. Jedynie menadżerowie cieszą się, że coś się dzie-

je w projekcie, że są efekty. Klient, zaś od czasu do czasu 

występuje z zapytaniem, jak postępują prace Jednak szyb-

ko  milknie  przywalony  setkami  stron  oraz  prośbami  o  ko-

mentarze. Jedyny plus istnienia tego typu projektów to sys-

tem hyperlinków, na którym opiera się Internet. Gdyby nie 

tomy  dokumentacji  i  konieczność  szybkiego  odwoływania 

się pomiędzy stronami, zapewne nigdy nieprędko wymyślo-

no by tego typu rozwiązanie.

Gdy  czujesz,  że  już  tak  dalej  nie  możesz,  że  przeno-

szenie  dokumentów  do  nowego  szablonu  już  Cię  nie  cie-

szy,  a  funkcje  popularnych  pakietów  biurowych  znasz  le-

piej  niż  język  programowania,  którym  zarabiasz  na  życie 

–  czas  powiedzieć  dość!  Zaproponuj  kierownikowi,  iż  za-

miast  kolejnego  dokumentu  „do  20  stron”  stworzysz  pro-

totyp.  Jeśli  jesteś  projektantem,  może  zaproponujesz  do-

świadczenie  architektoniczne.  Nie  musisz  przecież  znać 

szczegółów działania wszystkich warstw aplikacji, zawsze 

można stworzyć moduły symulujące działanie jeszcze nie 

zaprojektowanych elementów.

Przede  wszystkim  nie  pozwól,  aby  wycięto  więcej  drzew 

tylko na potrzeby kolejnego dokumentu, którego nikt nie prze-

czyta. Jeśli wiesz, że dokumentacja, którą przyszło Ci pisać, 

nie zostanie przeczytana zgłoś to kierownikowi projektu. An-

tywzorzec ten naprawdę łatwo rozwiązać, a wspomniane two-

rzenie  prototypowych  implementacji  naprawdę  bardzo  po-

może  zarówno  w  prowadzeniu  projektu  jak  i  w  rozmowach 

z klientem.

Oczywiście  są  sytuacje,  w  których  wykonanie  dokumen-

tacji jest konieczne. Większość projektów dotyczących admi-

nistracji publicznej musi zapewniać łatwość zmiany firmy do-

starczającej  rozwiązanie,  stąd  wszelkie  dokumenty  projek-

towe  są  pieczołowicie  przygotowywane  i  analizowane.  Lecz 

nawet i w tym przypadku, nikt nie podejmuje się sporządza-

nia interpretacji np. ustaw, które wpływają na realizację zadań 

w programie. Jeśli np. Twój zespół buduje światowej klasy kom-

ponent do zarządzania hodowlą słoni afrykańskich, musisz do-

kładnie  opisać  API.  Należy  oprócz  kodu  dostarczyć  przykłady, 

ich opis słowny, może także prezentacje multimedialne. Jednak 

mija się z celem np. pisanie esejów o samej hodowli słoni – klient 

najprawdopodobniej zna temat dużo lepiej niż Ty. 

Budując rozwiązanie informatyczne zawsze patrz na cel, 

który masz osiągnąć, dokumentacja jest tylko jednym z narzę-

dzi, które ma Ci w tym pomóc.

Marudy

Jak już zapewne zauważyliście niemal wszystkie akapity do-

tyczą zachowań ludzi biorących udział w projektach. Jednym 

z bardzo powszechnych zachowań jest narzekanie na realizo-

wany projekt. Brak entuzjazmu, nadziei na sukces jest bardzo 

background image

50

Inżynieria

oprogramowania

www.sdjournal.org

 Software Developer’s Journal   5/2006

częsty, szczególnie wśród programistów, którzy mieli za sobą 

kilka projektów. Nawet ciekawy projekt, wykonany w techno-

logii, której się dopiero uczymy, z bogatym sponsorem, czy-

li marzenie każdego programisty, może stać się koszmarem, 

gdy wciąż powtarzamy sobie, że to się nie uda. Mówimy „mia-

ło być tak pięknie, a wyszło jak zawsze” – jednak czy mamy 

podstawy, aby tak mówić już przy pierwszym niepowodzeniu?

Z pewnością nie – utrzymanie dobrych morali i zarządzanie 

zasobem w postaci Ciebie – programisty, to obowiązek kierowni-

ka projektu. Czy będzie to piątkowe wyjście na miasto, czy zaję-

cia z budowania zespołu (ang. team-building), a może pizza za-

mówiona na koszt firmy w tą szczególnie ciężką noc przed odda-

niem produktu – wszystko ma na celu jedno, podtrzymanie du-

cha zespołu. W przywołanej już książce „The soul in the New 

Machine”, autor słusznie zauważa, że to ludzie są najważniejsi 

w projekcie. Dobrze przeszkoleni, zadowoleni z wykonywanych 

zadań, pracujący w zgranym zespole, są wydajni. 

Zespół  marud,  rzadko  odnosi  sukces  i  choć  pracują  ty-

le  samo  czasu,  używając  tych  samych  technologii,  wykonu-

je znacznie gorszą pracę. Czujesz, że już powinien być piątek 

i siedzisz w pracy za karę, idź do menadżera – jest przecież 

także po to, aby zmienić ten stan rzeczy. Jeśli Twój przełożo-

ny  jeszcze  nie  wie,  że  zadowolony  pracownik  to  dobry  pra-

cownik, być może czas mu to uświadomić. Tylko w taki spo-

sób można naprawić, antywzorzec „marudy”.

Trudni ludzie

Często  w  projekcie  trafiają  się  osoby,  które  ogólnie  moż-

na  określić  jako  trudne.  Czy  to  zwolennik  jednej  konkret-

nej technologii, który podważa sensowność rozwiązań pro-

ponowanych przez inne osoby. Może to być osoba egocen-

tryczna, która w każdym działaniu musi widzieć personalną 

korzyść.  Zdarzają  się  także  programiści  introwertycy,  któ-

rzy  cierpią  po  każdym  zgłoszeniu  błędu  do  modułu,  który 

był ich dziełem.

Trudne osoby są wszędzie, mogą nimi też być osoby kie-

rujące projektem. Zazwyczaj osoba taka wprowadza niezdro-

wą  atmosferę  w  zespole,  doprowadzając  do  podwyższania 

i tak już dużego stężenia stresu towarzyszącego projektom in-

formatycznym. 

Każdy zna sytuacje, gdy prowadzenie projektu utrudnia-

ły nadplanowe inspekcje kodu, nadzorowanie każdej minuty 

pracy pracowników. Dostęp do zasobów sieciowych ograni-

czony  do  kilku  podstawowych  stron,  zablokowane  narzę-

dzia  do  komunikacji  interpersonalnej  (ang.  Instant  Messa-
ging
), tego typu ograniczenia swobody pracowników, wpro-

wadzają  niekorzystna  atmosferę  pracy.  „Trudni  ludzie”  na 

stanowiskach kierowniczych najczęściej nie zauważają pro-

blemu dziwiąc się tylko iż zespół staje się coraz mniej efek-

tywny, ma kłopoty z wymianą wiedzy, a z czasem z podsta-

wową komunikacją.

Zachowań tego typu osób nie sposób uniknąć, chcąc bu-

dować własną karierę lub promują z uporem narzędzia, które 

poznali w poprzednich projektach, a nie są adekwatne do pro-

blemu. Wszak nawet prosty system F-K może być polem do 

popisu i można go zrealizować z wykorzystaniem rozproszo-

nej bazy XML. Z drugiej strony, może natrafiłeś na osobę, któ-

ra odkąd nauczyła się posługiwać narzędziami CASE w celu 

budowania diagramów ERD, nie może się przełamać i wyko-

rzystać możliwości UML’a.

W  szczególnie  niebezpiecznych  przypadkach  mamy  do 

czynienia nawet z sabotażystami. Osoby takie potrafią rozsie-

wać plotki np. o redukcji zatrudnienia, powodując, iż członko-

wie projektu zmieniają miejsce pracy. Tego typu zachowanie 

na całe szczęście jest dość sporadyczne i ma na celu głównie 

nieuczciwą eliminację konkurencji.

Nie  życzę  też  nikomu  pracować  z  osobami  broniącymi 

swojej pozycji w firmie. Istnieją projekty widma, które tak na-

prawdę nie mają celu. Prowadzone jest fikcyjne raportowanie, 

klient otrzymuje sprzeczne komunikaty, efekty ciężkiej pracy 

programistów są pieczołowicie testowane, po czym nigdy nikt 

ich nie wykorzystuje. Cel – ochrona kadry zarządzającej, po-

siadającej poparcie kierownictwa firmy. 

Temat problemu trudnych osobowości z pewnością można 

rozwijać. Każdy z Nas ma też zapewne w sobie, choć część 

cech  tego  typu  osób.  Tylko  odpowiednie  kontrolowanie  wła-

snych emocji i skupienie się na celu projektu może przynieść 

powodzenie przedsięwzięcia.

Muszę  jednak  zmartwić  tych,  którzy  szukają  podpowiedzi, 

jak rozwiązać problem „trudnych” współpracowników. Stosowa-

nych rozwiązań jest naprawdę wiele, jednak tego typu osoby są 

odporne na wszelką krytykę i sugestie. Spotkałem się z sytuacją, 

gdy dla pewnego menadżera stworzono specjalny odrębny dział, 

w nim miał stanowisko z bardzo ważną i ledwo mieszczącą się 

na wizytówce nazwą. W przypadku sprawnie zarządzanych or-

ganizacji, trudne osobowości konfrontuje się ze sobą, np. powie-

rzając im prowadzenie wspólnego projektu. W niektórych przy-

padkach wystarczy szczera rozmowa, w innych odseparowanie 

problemu, którym zajmuje się trudna osoba – tak, aby nie parali-

żowała ona prac całego zespołu.

Gdy jednak tego typu metody nie odnoszą skutków, pozo-

staje polecić naszą czarną owcę agencji rekrutacyjnej. Pozby-

cie się z zespołu tego typu osoby, która najczęściej szczęśli-

wa jest, gdy otwierają się przed nią drzwi do kariery, jest naj-

lepszym rozwiązaniem problemu. 

Wiedza plemienna

Z  pewnością  znasz  projekty,  które  mimo  braku  formalnej  fazy 

projektowania odniosły sukces. Stworzenie portalu internetowe-

go w przeciągu tygodnia przez zespół sprawnych programistów, 

z wykorzystaniem praktyk XP jest jak najbardziej możliwe. Ktoś 

rozszerza tego typu system o moduł integrujący z jednym źró-

dłem danych, ktoś inny zapewnia mechanizmy synchronizacji ze 

starszym, ale wciąż używanym systemem firmy. System się roz-

rasta, początkowo prowadzony mały projekt, wymyka się spod 

kontroli, ale że wszyscy pracują w zgranym zespole, nikt nie wi-

dzi potrzeby dokumentowania zmian, czy też tworzenia projek-

tu lub choć ogólnej architektury. Pewnego dnia do projektu przy-

chodzi nowa osoba – i okazuje się, iż nie znając zastanych me-

chanizmów nie jest w stanie rozpocząć pracy. Nikt, sam przecież 

obciążony  poprawianiem  wciąż  wychwytywanych  błędów,  nie 

ma czasu, aby pomóc świeżemu członkowi zespołu.

Napotykamy kolejny antywzorzec w zarządzaniu projekta-

mi. To co z początku było atrakcyjne, czyli szybkie budowanie 

rozwiązania informatycznego oraz rozszerzanie jego możliwo-

ści bez obciążenia dokumentacją, mści się, gdy należy doko-

nać zmian w systemie, lub wprowadzić do prac nową osobę. 

Trudno jest, bowiem wskazać wszystkie zależności pomiędzy 

istniejącymi komponentami nie posługując się przy tym doku-

mentacją architektoniczną...

background image

Antywzorce w zarządzaniu projektami informatycznymi

Wiedza,  którą  posiadają  najczęściej  tylko  osoby  bezpo-

średnio  zaangażowane  w  projekt,  musi  być  przenoszona  do 

postaci formalnej. Samo spisanie i udokumentowanie proce-

sów  zachodzących  w  aplikacji  powoduje  najczęściej  popra-

wienie  kilku  do  kilkuset  błędów.  Nie  mówiąc  już  o  zaletach 

związanych  z  ułatwionym  rozszerzaniem  systemu  oraz  jego 

konserwacją.

Warto  zauważyć,  że  nowy  członek  zespołu  projektowe-

go może obawiać się o swój wizerunek i przez długi czas nie 

przyzna się, że nie rozumie jak system działa. Co więcej oso-

ba, którą oddelegowano do wprowadzenia nowego programi-

sty w zadanie może posługiwać się nieznaną mu terminolo-

gią lub opisywać wykorzystywanie technologii dotąd niezna-

nej programiście?

Mamy  tu  do  czynienia  z  kolejnym  antywzorcem.  Nowy 

członek  zespołu  nawet,  jeśli  dotąd  programował  jedynie 

w  C++  wykorzystując  bibliotekę  Qt  do  generowania  GUI, 

będzie  nadzwyczaj  często  przytakiwał  osobie  tłumaczą-

cej  zaawansowane  wykorzystanie  Windows.Forms  i  plat-

formy .NET. 

Jeśli jesteś w tej sytuacji, powiedz, że czegoś nie rozu-

miesz.  Skorzystasz  z  wiedzy  zespołu,  a  zespół  zyska  no-

wego  kolegę  –  przecież  każdy  lubi  poczuć,  iż  jego  dzieło 

lub wiedza, są przydatne. 

Nie pozwól, aby wiedza czy to merytorycznie dotyczą-

ca  projektu,  czy  ogólnie  dostępna,  ale  Ci  nie  znana  by-

ła  zamknięta  wewnątrz  plemienia.  Starszyzna  projekto-

wa  ma  obowiązek  podzielić  się  wiedzą,  aby  uniknąć  błę-

dów w komunikacji. Nie ma gorszej sytuacji od tej, gdy jed-

na ze stron myśli, iż jest w pełni zrozumiana tylko dlatego, 

iż widzi nieśmiałe potrząsanie głową (na której widać ozna-

ki rwania włosów).

Podsumowanie

Powyżej  przeprowadzone  rozważania  nie  wyczerpują  oczy-

wiście  tematu.  Problem  błędów  w  zarządzaniu  projektami, 

wykrycia  antywzorców  i  wskazania  prawidłowych  rozwią-

zań  to  niewyczerpany  materiał  na  wiele  książek.  Punkt  wi-

dzenia  uczestnika  projektu  –  programisty,  architekta,  teste-

ra – jest szczególnie ważny. Musimy zdać sobie sprawę z te-

go,  że  większość  ludzi  niemal  naturalnie  wychwytuje  działa-

nia  błędne  i  tylko  lenistwo,  duma,  czasem  brak  asertywno-

ści powoduje, iż tkwimy w potrzasku. Skutkiem tego pracuje-

my w projekcie, w którym rozpoznajemy Antywzorzec. Stresu-

je to Nas, demotywuje, w efekcie zniechęca do pracy. W nie-

długim okresie to my możemy stać się powodem powstawa-

nia  kolejnych  problemów,  a  cały  projekt  będzie  coraz  bliżej 

klęski niż sukcesu.

Pamiętając  o  tym  oraz  o  tych  kliku  wskazówkach,  któ-

re starałem się przekazać w tym tekście, proszę o odrobi-

nę zaangażowania. Nie twierdzę, że zebrane tu uwagi wy-

czerpują temat. Poruszają go jednak choćby pobieżnie, do-

starczając  Ci  podstawowej  wiedzy  do  identyfikacji  antyw-

zorców. 

Jeśli więc wiesz, jak możesz poprawić nie tylko swój kod, 

ale i otoczenie, czemu tego jeszcze nie zrobiłeś? n

Telefonia VoIP Multimedialne sieci IP

Autorzy: Marek Bromirsk

Wydawnictwo: BTC

ISBN: 83-60233-07-1

Ocena: 4

Gdy po raz pierwszy dostałem i zobaczyłem tę książkę zachwyciło mnie jej wydanie, gru-

ba oprawa, 250 stron tekstu ale chwile później mój zachwyt przerodził się w przerażenie. 

Po przeczytaniu spisu treści, który pełen jest niezrozumiałych dla początkujących skrótów 

i nazw, pomyślałem „nie przebrnę” przez tę książkę. Mile się zaskoczyłem, gdy okazało się, 

że  autor,  wykładowca  Politechniki  Warszawskiej  i  Instytutu  Łączności,  opisuje  wszystko 

w sposób zrozumiały i interesujący z pewną dozą humoru, czyniąc lekturę bardziej przystęp-

ną. Książka ta, a jest to raczej monografia, opisuje systemy: H.323, SIP, współpracę mię-

dzy tymi systemami a także przenoszenie danych przez zapory ogniowe. Protokół H.323 zo-

stał potraktowany najdokładniej, jako podstawowy system służący do realizacji usług multimedialnych czasu rzeczywistego 

w sieci pakietowej oraz IP; począwszy od modelu OSI, przez architekturę systemu a kończąc na mechanizmach sterowania 

jakością oraz usługami dodatkowymi. Podobnie system SIP (Session Initiation Protocol), który jest typowym mechanizmem 

sygnalizacyjnym warstwy aplikacyjnej, opis jego doskonale uzupełnia się z H.323.  Dzięki rozdziałowi pt. Przenoszenie da-

nych przez zapory sieciowe zrozumiałem mechanizmy rządzące się w tego typu połączeniach a także poznałem sposoby 

omijania pewnych niedogodności. Telefonia VoIP prezentuje całe „zaplecze” technologiczne wykorzystywane przez Voice 

over IP. Książka jest bogato ilustrowana a także zawiera sporą ilość schematów i wykresów, które pomagają w zrozumieniu 

materiału bądź, co bądź nie łatwego. Książkę mogę śmiało polecić: początkującym, którzy nie mieli bladego pojęcia o Vo-

IP, średnio i zaawansowanym, którzy wiedzą, z czym to się je a także studentom, którzy mają monogram z tego lub podob-

nego systemu.

Zrecenzował: Konrad Synoradzki

http://www.btc.pl/

Księgozbiór