Tak zwa­ne „[[les­sons lear­ned]]” ( cze­go nas to wszyst­ko nauczy­ło”) to obo­wiąz­ko­wy” (ostat­ni) etap każ­de­go dobrze zarzą­dza­ne­go pro­jek­tu. W moim przy­pad­ku robię to nie­za­leż­nie od tego czy był to mój pro­jekt czy jedy­nie mam dostęp do wie­dzy o cudzym pro­jek­cie. Okazji mam nie mało, bo nie raz po kimś coś koń­czę a raczej robię to u klien­tów po swo­je­mu” jesz­cze raz. Przykładem moje­go wła­sne­go les­sons lear­ned była opi­sa­na tu dro­ga na skró­ty i roz­wią­za­nie umo­wy.

Jednak z tych lek­cji wyła­nia się pewien ogól­ny wnio­sek, zresz­tą nie taki nowy. Zapewne wie­lu z Państwa zna­ne jest sta­re przy­sło­wie o wybie­ra­niu dro­gi na skró­ty: kto dro­gi pro­stu­je ten w domu nie nocu­je” i ono dosko­na­le odda­je isto­tę pro­ble­mu. Ale po kolei.

Typowe kro­ki pro­jek­tu zwią­za­ne­go z reor­ga­ni­za­cją (jaką­kol­wiek) fir­my to:

  1. Decyzja (jej wypra­co­wa­nie nie raz tak­że może zająć jakiś czas) o pod­ję­ciu dzia­łań mają­cych na celu jakąś poprawę.
  2. Audyt, jego celem jest udo­ku­men­to­wa­nie sta­nu obec­ne­go, zro­zu­mie­nie aktu­al­nej sytu­acji. Powstaje model biz­ne­so­wy, czy­li opis tego jak fir­ma two­rzy war­tość i zyski. Audyt powi­nien być zwień­czo­ny reko­men­da­cja­mi audy­to­ra na temat ewen­tu­al­nych opty­ma­li­za­cji i zwią­za­nych z nimi for­ma­li­za­cja­mi działania.
  3. Jeżeli poja­wi się coś co war­to zmie­nić”, nale­ży to roz­wa­żyć i pod­jąć dzia­ła­nia. Zwracam uwa­gę, że zanie­cha­nie reko­men­do­wa­nych dzia­łań to tak­że dzia­ła­nie i powin­no być świa­do­me. Ten etap (głów­nie for­ma­li­za­cja) oczysz­cza” fir­mę z ryzyk wyni­ka­ją­cych z jej nie­prze­wi­dy­wal­no­ścią (brak pro­ce­dur, nie­kom­plet­ne i sprzecz­ne zakre­sy kom­pe­ten­cji itp.). Na tym eta­pie czę­sto poja­wia­ją się dodat­ko­we pro­jek­ty z zakre­su zarzą­dza­nia wie­dzą i zarzą­dza­nia cią­gło­ścią dzia­ła­nia firmy.
  4. Po skon­su­mo­wa­niu” wyni­ków audy­tu poja­wia się (może się poja­wić) wnio­sek, że uspraw­nie­nie orga­ni­za­cji wyma­ga wdro­że­nia (lub wymia­ny) opro­gra­mo­wa­nia o pew­nych cechach (lub zmian orga­ni­za­cyj­nych, innych metod zarzą­dza­nia itp.). Wyspecyfikowanie tych cech wyma­ga ana­li­zy, któ­rej pro­duk­tem jest spe­cy­fi­ka­cja wyma­gań, a kon­kret­nie usług jakich ocze­ku­je­my od nowe­go opro­gra­mo­wa­nia. Gdyby się oka­za­ło, że takie­go” opro­gra­mo­wa­nia (modu­łu) nie ma na ryn­ku, nale­ży oce­nić ren­tow­ność jego zapro­jek­to­wa­nia i wyko­na­nia, przy pozy­tyw­nej decy­zji, zle­cić wyko­na­nie. Powstaje kom­plet­na spe­cy­fi­ka­cja wyma­gań nowe­go sys­te­mu. Na jej pod­sta­wie dopie­ro wybie­ra­my pro­dukt i jego dostawcę.
  5. Teraz pora na reali­za­cję pro­jek­tu wdro­że­nio­we­go. Mamy wie­dzę co chce­my osią­gnąć i jak to osią­gnąć. Wiemy cze­go ocze­ki­wać, więc łatwo stwier­dzić, czy wdro­że­nie się uda­ło: czy otrzy­ma­li­śmy to co mia­ło zostać dostar­czo­ne i czy odby­ło się w cza­sie i budże­cie jaki zaofe­ro­wał dostawca.

Powyższe kro­ki moż­na zobra­zo­wać w nastę­pu­ją­cy spo­sób (klik­nij by powiększyć):

Jak widać, każ­dy etap daje poważ­ny” wsad w etap następny.

Wykonajmy małe ćwi­cze­nie myślo­we: jakie ryzy­ko wno­si decy­zja o pomię­ciu któ­re­go­kol­wiek z eta­pów pośred­nich? A teraz ostra jaz­da: pro­jekt zaczy­na­my od razu od reali­za­cji czy­li mamy sytu­ację, w któ­rej pro­jekt zaczy­na się od wdra­ża­nia jakie­goś kon­kret­ne­go opro­gra­mo­wa­nia lub od razu zle­ca­my fir­mie pro­gra­mi­stycz­nej two­rze­nie opro­gra­mo­wa­nie bez pro­jek­tu, czy­li reali­zo­wa­ny jest od razu ostat­ni opi­sa­ny etap z pomi­nię­ciem wszyst­kich poprzed­nich… jakie jest ryzy­ko takie­go podejścia?

Zwracam uwa­gę, że prak­ty­ka (kolej­ne naucz­ki”) poka­zu­je, że pro­jekt zwią­za­ny z dostar­cze­niem i wdro­że­niem opro­gra­mo­wa­nia powi­nien zamknąć się w gra­ni­cach roku obra­chun­ko­we­go z uwa­gi na praw­do­po­dob­ne zmia­ny sytu­acji ryn­ko­wej, wewnętrz­nej sytu­acji fir­my i wie­lu innych. Rozpoczynanie pro­jek­tu pla­no­wa­ne­go z góry na trzy, a nie raz i pięć lat (typo­wy czas wdra­ża­nia duże­go zin­te­gro­wa­ne­go sys­te­mu ERP), prak­tycz­nie z góry ska­za­ne jest na nie­po­wo­dze­nie, a mimo to wie­le firm zga­dza się na taką wła­śnie drogę…

Opisane tu podej­ście czę­sto nazy­wa­ne jest kaska­do­wym” (water­fall – wodo­spad). Jest ono dość czę­sto wska­zy­wa­ne jako mitycz­ny powód pora­żek pro­jek­tów, ale moim zda­niem jest to pew­na dema­go­gia, gdyż tak na praw­dę przy­czy­ną więk­szo­ści tych pro­ble­mów jest nie tyle wodo­spa­do­we” podej­ście (ono jak widać z powy­żej opi­sa­ne­go pro­ce­su, ma głę­bo­ki sens), co wzię­cie sobie na bar­ki pro­jek­tu (zawar­cie umo­wy z dostaw­cą na trzy lata to przy­ję­cie w dniu jej zawar­cia ponad rocz­ne­go har­mo­no­gra­mu łamią­ce­go opi­sa­ną powy­żej zasa­dę) na lata, zanie­dbu­jąc zupeł­nie fakt, że oto­cze­nie ryn­ko­we obec­nie zmie­nia się nawet co kwartał.

Mamy więc kurio­zal­ne zesta­wie­nie: pod­ję­cie pro­jek­tu od razu od ostat­nie­go eta­pu (wybór dosta­wy, pro­duk­tu i reali­za­cja) i zapla­no­wa­nie go od razu na np. trzy lata. To pro­jekt w rodza­ju nie wiem co tu jest gra­ne ale kupu­je­my [ten sys­tem] i wdra­ża­my go”. To nie ma pra­wa się udać…

A nasze les­sons lear­ned”? No wła­śnie, zna­ne mi pro­jek­ty zakoń­czo­ne kło­po­ta­mi, to wła­śnie pro­jek­ty na skró­ty. Projekty pro­wa­dzo­ne w myśl powyż­szych zasad (krót­kie i dobrze zapla­no­wa­ne odręb­ne eta­py) są znacz­nie bar­dziej odpor­ne na kłopoty.

Najgorszym powo­dem wdro­że­nia nowe­go opro­gra­mo­wa­nia jest chęć wdro­że­nia nowe­go oprogramowania…

Jarosław Żeliński

Jarosław Żeliński: autor, badacz i praktyk analizy systemowej organizacji: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony).

Ten post ma 7 komentarzy

  1. Mateusz Kurleto

    Zawsze byłeś zwo­len­ni­kiem rze­tel­nych danych, więc nie wiem dla­cze­go water­fall okre­ślasz mia­nem mitycz­ne­go powo­du poraż­ki – sko­ro bada­nie reali­zo­wa­ne na tysią­cach pro­jek­tów poka­zu­ją, że wła­śnie zało­że­nia tego mode­lu wytwa­rza­nia są pod­sta­wo­wą przy­czy­ną poraż­ki. Albo przyj­mu­je­my rze­tel­ne infor­ma­cje, albo nie – myślę, że nie moż­na sobie pozwa­lać na dema­go­gie i wybiórczość.
    Poza tym water­fall w samej swo­jej kon­struk­cji unie­moż­li­wia reali­za­cję pro­jek­tu, któ­ry odby­wa się w jak­kol­wiek zmien­nym śro­do­wi­sku, ponie­waż zamknię­cie eta­pu jest osta­tecz­ne. Nic co zosta­ło zro­bio­ne na eta­pie ana­li­zy wyma­gań nie może się zmie­nić, bo trwa projektowanie.
    Założenie, że jest moż­li­we odkry­cie i opi­sa­nie 100% wyma­gań na sys­tem przed roz­po­czę­ciem jego two­rze­nia jest błęd­ne i to ono pro­wa­dzi do poraż­ki. Potem przy pierw­szym rele­ase ZAWSZE oka­zu­je się, że znacz­na część pro­jek­tu jest do zmia­ny – cza­sem ta któ­ra jest obję­ta rele­asem (pech:P) cza­sem ta zapla­no­wa­na potem (szczę­ście:)). Bezpośrednie powo­dy takiej sytu­acji są róż­ne, ale wystę­pu­je ona nie­mal zawsze.
    Ja bar­dzo lubię pra­co­wać na for­mal­nej ana­li­zie wyma­gań, ale nie jest praw­dą, że jest to lek na całe zło. Trzeba szu­kać zło­te­go środ­ka – a ten w każ­dym pro­jek­cie jest nie­co gdzie indziej – doświad­cze­nie pozwa­la w kolej­nych znaj­do­wać go szybciej.

    1. Jarek Żeliński

      Na tyle na ile przej­rza­łem róż­ne bada­nia” wycho­dzi, że przy­czy­ną pora­żek jest pró­ba utrzy­ma­nia mega wyma­gań w dłu­gich” mega-pro­jek­tach pro­jek­tach. Wieloletni pro­jekt ma chan­ge-mana­ge­ment wpi­sa­ny w życio­rys. Zjawisko kom­plet­nie nie wystę­pu­je (z moich obser­wa­cji) w pro­jek­tach krót­kich”, o takich piszę. 

      Nie demo­ni­zo­wał bym tej osta­tecz­no­ści” w sytu­acji, gdy pro­jekt obej­mu­je kon­kret­ny wąsko-dzie­dzi­no­wy” zakres, któ­ry z zasa­dy nie powi­nien się zmie­niać w jed­nej ite­ra­cji. Po trze­cie nikt nie wyklu­cza tu zmia­ny lub doda­nia funk­cjo­nal­no­ści. Ale haczyk pole­ga na tym, że pla­nu­jąc budo­wę zło­żo­ne­go rowe­ru zapew­ne nie wiesz co powsta­nie po roku, ale pro­jek­tu­jąc kie­row­ni­cę nie będziesz jej zmie­niał w poło­wie pro­jek­tu, jak dobrze prze­my­ślisz będzie OK. Zmienisz koła, peda­ły, licz­be prze­ło­żeń, ale to zmia­ny na pozio­mie archi­tek­tu­ry a nie kom­po­nen­tu. Zmiana wyma­gań doty­czy naj­czę­ściej ska­li makro” ale raczej nie, dzie­dzi­no­wych samo­dziel­nych, słu­żą­cych do kon­kret­nej rze­czy, obszarów. 

      Po pierw­sze wyma­gań się nie odkry­wa tyl­ko ana­li­zu­je i doku­men­tu­je. Założenie, że jest moż­li­we okre­śle­nie wyma­gań w 100% jest jak naj­bar­dziej słusz­ne, pod warun­kiem, że doty­czy kon­kret­ne­go zamknię­te­go obsza­ru pro­jek­tu. Jak porząd­nie zapro­jek­tu­jesz fak­tu­rę VAT to ona nie ma pra­wa się to zmie­nić, mogą się zmie­nić eta­py jej zatwier­dza­nia wte­dy doda­my nową ścież­kę w pro­ce­sie (czę­stym błę­dem jest wbi­ja­nie” kodu obsłu­gi fak­tu­ry w kla­sę fak­tu­ry!), jak zmie­nią się prze­pi­sy doda­my nową fak­tu­rę (lub tyl­ko nowe staw­ki podat­ku), doda­my, doda­my ale nic nie ZMIENIAMY!. Nie wywra­ca­my pro­jek­tu do góry nogami…

      Model dzie­dzi­ny – nie wol­no go uprasz­czać bo to wła­śnie doko­na­ne uprosz­cze­nia czy­nią szko­dy w rodza­ju zmie­ni­ła się sytu­acja, zmie­nia­my projekt”. 

      Ów water­fall jest szko­dli­wy” w meto­dach struk­tu­ral­nych, tu mamy znor­ma­li­zo­wa­ny wiel­ki cało­ścio­wy model danych i ster­tę funk­cji, tu fak­tycz­nie zamro­że­nie jest tra­ge­dią i więk­szość sta­ty­styk” wska­zu­ją­cych na szko­dli­wość water­fall” to wła­śnie struk­tu­ral­ne pro­jek­tu (więk­szość pro­jek­tów w narzę­dziach obiek­to­wych jakie widu­ję to nie­ste­ty pro­jek­ty tak na praw­dę struk­tu­ral­ne, sam fakt pro­jek­to­wa­nia rela­cyj­nej znor­ma­li­zo­wa­nej bazy wystar­czy by go tak zakwa­li­fi­ko­wać). W dobrze pro­wa­dzo­nym pro­jek­cie obiek­to­wym zja­wi­sko to (zmia­na pro­jek­tu) w zasa­dzie nie wystę­pu­je (nor­ma­li­za­cja jest pro­ce­sem strat­nym, nie­od­wra­cal­nym, zmia­na warun­ków wyma­ga zmian modelu). 

      Tak więc bro­niąc tego co napi­sa­łem: klucz tkwi w mode­lu dzie­dzi­ny i tego jak go two­rzy­my. Pojawia się mod­ny ostat­nio CQRS (pla­nu­je arty­kuł o tym), któ­ry zała­twia” kwe­stie wydaj­no­ści i jed­no­cze­snej wier­no­ści mode­lu… (nie uprasz­cza­my mode­lu dzie­dzi­ny by był wydaj­niej­szy, doda­je­my dedy­ko­wa­ne, redun­dant­ne kon­struk­cje tam gdzie jakaś ope­ra­cja ma być szyb­ka, np. trzy­mam bar­dzo zło­żo­ne i nie uprosz­czo­ne (!) agre­ga­ty opi­su­ją­ce pro­duk­ty w maga­zy­nie (kar­to­te­ka pro­duk­tu), ale budu­ję dodat­ko­wo pro­stą trwa­łą kolek­cję (zre­pli­ko­wa­ny klon) będą­cą pro­stym i szyb­kim cen­ni­kiem na potrze­by jego prze­glą­da­nia i fil­tro­wa­nia. Po zna­le­zie­niu potrzeb­ne­go towa­ru na bazie jego indek­su wyszu­ku­je kon­kret­ny zło­żo­ny agre­gat by poznać szcze­gó­ły pro­duk­tu. Nie jest to żad­na trwa­ła rela­cja, szcze­gó­ło­wy opis pro­duk­tu znaj­dę na podst. nr. indek­su a nie aso­cja­cji towar-towar. 

      Złotym środ­kiem jest na pew­no roz­są­dek i prag­ma­tyzm ale moim zda­niem na pew­no nie nad­miar uprosz­czeń i dróg na skróty.

      Popatrz na pre­zen­to­wa­ny dia­gram i wyobraź sobie, że ana­li­za i spe­cy­fi­ko­wa­nie wraz z reali­za­cja trwa poni­żej roku, pro­jekt więk­szy jest «roz­bi­ja­ny” na kom­po­nen­ty miesz­czą­ce się w takich rygo­rach realizacji.

    2. JW

      A może to wła­śnie zmien­ne śro­do­wi­sko” jest przy­czy­ną porażek ?
      Z resz­tą – water­fall jest dość pojem­ną” meto­dy­ką i na pew­no nie wyklu­cza zmia­ny potrzeb biz­ne­so­wych” o ile zacho­dzą one przed roz­po­czę­ciem np. imple­men­ta­cji; jeśli ktoś twier­dzi, że moż­na łatwo” zmie­nić wyma­ga­nia pod­czas reali­za­cji to IMHO, w naj­lep­szym przy­pad­ku – kła­mie (w tro­chę gor­szym – zupeł­nie się nie zna na tym co robi)

      Powiedzmy tak – mało kto potra­fi robić dobrą ana­li­zę (bez zmian co chwi­le”), mało kto potra­fi dobrze imple­men­to­wać (bez codzien­nej refak­to­ry­za­cji”) i w związ­ku z tym w IT jest taka sytu­acja a nie inna.

    3. Jarek Żeliński

      Zmienne śro­do­wi­sko jest śro­do­wi­skiem pro­jek­tu” ;), fak­tem jest że zmien­ność ta nie uła­twia pra­cy, ale też zmien­ność ta ma swo­je gra­ni­ce 9proces legi­sla­cyj­ny i ter­mi­ny wcho­dze­nia w życie” itp. Powtarzając po :„decy­den­tach” u moich klien­tach moż­na chy­ba się zgo­dzić z tezą, że pro­ble­mem nie jest zmien­ność sama w sobie (jest ogra­ni­czo­na jed­nak) a to jak sobie z nią radzi­my. Można sobie łatwo wyobra­zić rower z kil­ko­ma zmien­ny­mi pod­ze­spo­ła­mi, któ­ry pozwo­li wybrać się w nie­zna­ne… z opro­gra­mo­wa­niem jest moim zda­niem podob­nie: nie ma sen­su pro­jek­to­wa­nie szy­te­go na mia­rę obci­słe­go gar­ni­tu­ru” i pró­ba szy­cia go rok… trze­ba prze­wi­dzieć zaszew­ki, moż­li­wość wymia­ny kami­zel­ki, rezy­gna­cji z kape­lusz ana korzyść kaszkietu…

  2. TomaszK

    @JW Akurat refak­to­ry­za­cja (za Fowlerem) powin­na odby­wać się codzien­nie :). W zasa­dzie powin­na być cią­gle prze­pla­ta­na z wpro­wa­dza­niem nowej funkcjonalności.

    1. Jarek Żeliński

      Zależy o jakiej refak­to­ry­za­cji mowa, jak znam Fowlera to myśle­nie o kodzie, w tym jego ulep­sza­nie to jed­no, a publi­ko­wa­nie kolej­nych wer­sji dla użyt­kow­ni­ka to dru­gie (no bo nie codzien­nie ;)). Druga rzecz to czym innym jest wypusz­cze­nie wer­sji o popra­wio­nej jako­ści ale o nie zmie­nio­nej funk­cjo­nal­no­ści 9to moż­na robić czę­sto”), a czym innym jest zmia­na zacho­wa­nia sys­te­mu to jest nowe lub zmie­nio­ne funk­cjo­nal­no­ści, (to powin­no być nie­zbyt często)…

  3. Arek Koralewski

    @JW Waterfall nie jest pojem­na meto­dy­ką. W ory­gi­na­le nie zakła­da reak­cji na zmia­nę. To o czym wywód zro­bił pan Jarek to przed­sta­wie­nie wyż­szo­ści pro­ce­su ite­ra­cyj­ne­go któ­ry powi­nien skła­dać się z kaskad waterfall«a. A fakt że fir­my wciąż wyma­ga­ją two­rze­nia peł­ne­go pro­jek­tu przed roz­po­czę­ciem prac i co gor­sza narzu­ca­ją har­mo­no­gram przed zapro­jek­to­wa­niem funk­cjo­nal­no­ści jest przy­czy­ną w mojej opi­nii porażek.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.