2006 05 Antywzorce w zarządzaniu projektami informatycznymi [Inzynieria Oprogramowania]

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


Wyszukiwarka

Podobne podstrony:
tematy 2011 DK v1.03, Inżynieria Oprogramowania - Informatyka, Semestr IV, Zarządzanie Projektami In
2006 10 Łączenie kodu C z zarządzanym kodem NET [Inzynieria Oprogramowania]
szablon projektu2011 DK v1.03, Inżynierskie, Semestr VI, Zarządzanie projektami informatycznymi
praca inzynierska-ExtremeProgramming, rok III, Zarządzanie Projektami Informatycznymi
ZARZĄDZANIE PROJEKTAMI - WYKŁADY, Inżynieria Produkcji, Zarządzanie Projektem
INF II stopien Projektowanie i zarzadzanie projektami informatycznymi
PROJEKT INFORMATYCZNY sciaga, WSB Poznań, Zarządzanie Projektem Informatycznym
zarzadzanie projektami informatycznymi, ŚCIĄGI Z RÓŻNYCH DZIEDZIN, zarzadzanie
SSADM-graf, rok III, Zarządzanie Projektami Informatycznymi
Zarządzanie projektem informatycznym
zarzadzanie projektami informatycznymi
Porownanie i analizaXPinne, Zarządzanie Projektami Informatycznymi
cz 1d zarzadzanie projektem informatycznym tryb zgodnosci
Frączkowski Zarządzanie projektem informatycznym

więcej podobnych podstron