Choć komputery towarzyszą nam od kilkudziesięciu lat, a wraz z nimi rozwijane są różnego rodzaju projekty informatyczne, wiele kluczowych aspektów takich przedsięwzięć wciąż bywa pomijanych lub ignorowanych. Niestety, często prowadzi to do niepowodzeń. Aby lepiej zrozumieć te obszary, warto sięgnąć po analogię z branży budowlanej – zaskakująco bliskiej współczesnej informatyce pod względem struktury i wyzwań projektowych.
Bez dokumentacji ani rusz – etapy prac jak z planu budowy
Porównanie warto zacząć od samego początku – etapu pomysłu, gdzie niemal nie istnieją ograniczenia. Współczesna inżynieria pozwala dziś wznosić konstrukcje, które jeszcze niedawno wydawały się niemożliwe pozornie przeczące wręcz prawom fizyki w miejscach o których czasem nawet nam się nie śniło. Podobnie jest w informatyce: rozwiązania rodem z powieści science fiction stają się rzeczywistością. Co więcej, dynamiczny rozwój sztucznej inteligencji przesuwa granice jeszcze dalej niemal poza horyzont najśmielszych wyobrażeń.
Jednak zanim powstanie jakakolwiek budowla rozpoczyna się żmudna praca zespołów, których nie spotkasz podczas przelotnych wizyt na placu budowy. Inżynierowie, architekci, branżowcy dokonują analiz, projektują, weryfikują czy to co chcesz zbudować nie rozpadnie się niczym domek z kart. Czy będzie funkcjonalne, czy będzie bezpieczne. Czy stawi czoła wymaganiom w danym terenie i miejscu. To dzięki tej pracy gniazdko do nocnej lampki jest dokładnie kilka cm od łóżka a nie w sąsiednim pokoju. Dach pozwala utrzymać ciężar alpejskich śniegów a brudna woda nie wybija ze studzienki w piwnicy. Tak więc jeszcze zanim ktoś wbije łopatę w ziemię często znasz takie szczegóły o swoim nowym domu ponieważ jeśli na tym etapie nie przewidzisz takich detali to ich późniejsze dodanie może okazać się bardzo kosztowne lub czasem wręcz niemożliwe.
Te same zasady dotyczą oprogramowania komputerowego. Choć nie da się go dotknąć a jego błędy nie są tak namacalne jak brak gniazdka za lodówką to ich konsekwencje są zazwyczaj równie kosztowne.
Dlatego gdy klient przychodzi z wyobrażeniami swojej aplikacji, analitycy, architekci oprogramowania, designerzy i UXowcy mają za zadanie przekuć wizję na rzeczywiste rozwiązania informatyczne. Na tym etapie tak jak i przy wspomnianej budowie domu praca toczy się na papierze, czasem wirtualnym, jednak tu aplikacja dopiero nabiera swojego kształtu. Weryfikujemy czy nasze pomysły są realne, czy nie kolidują ze sobą, czy są wykonalne oraz co równie ważne, czy koszt ich realizacji zmieści się w budżecie.
Tak jak murarze i zbrojarze wchodzą na budowę dużo później niż rozpoczyna się projekt budowlany tak też i developerzy swoją pracę rozpoczynają dopiero po wspomnianych wcześniej osobach.
Zmiany i adaptacja – Konieczność, nie opcja
W tym miejscu pojawia się kolejna analogia. Pomimo przygotowanych planów w obu przypadkach mogą pojawić się nieprzewidziane wyzwania. Pierwsze wbicie łyżki koparki w ziemie może odkryć antyczne mury i zatrzymać budowę na wiele miesięcy, lub pod warstwą ziemi można odkryć inny materiał powodujący, że koncepcja posadzenia domu musi zostać zmieniona. Analogicznie w informatyce oparcie się np o dodatkowe zewnętrzne rozwiązania lub konkretną architekturę aplikacji może pokazać, że nie wszystko będzie działać tak jak to zakładaliśmy. Musimy ponownie przeanalizować sytuację i przede wszystkim być gotowym do zmiany planu, czasem harmonogramu a co za tym idzie i budżetu.
Tu z pomocą przychodzi kolejna rola będąca do tej pory w cieniu. Tak jak kierownik budowy tak i kierownik projektu jako osoba doświadczona będzie potrafiła zaproponować najoptymalniejsze wyjście z sytuacji. Przeanalizuje nowe fakty, skonsultuje możliwości ze specjalistami i doprowadzi do stworzenia nowej ścieżki dojścia do celu i podejmie stosowne decyzje.
Co z tego wynika?
Warto pamiętać o tym, że tworząc dedykowane rozwiązanie informatyczne jesteśmy narażeni na bardzo podobne wyzwania jak budując dom. Kilka kluczowych wartych podkreślenia:
- Etapowość – projekty IT tak jak i budowlane przechodzą przez podobne fazy: planowanie, projektowanie, wykonanie, testowanie/odbiór, utrzymanie.
- Złożoność i współzależności – wiele elementów w ramach projektów musi powstać we właściwej kolejności i musi być ze sobą kompatybilne.
- Rola dokumentacji – w obu przypadkach kluczowe są plany, specyfikacje, harmonogramy i budżety.
- Wielobranżowość zespołów – potrzeba różnych specjalistów np. w IT: programiści, UX, testerzy; w budownictwie: architekci, konstruktorzy, instalatorzy).
Warto też pamiętać, że projekty IT z racji swojej niematerialności są bardziej podatne na zmiany w trakcie trwania. Oprogramowanie komputerowe pozostawia wrażenie możliwości zmiany dowolnej jego części w dowolnym momencie co nie zawsze jest prawdą. To tak jak gdyby zmienić kształt domu w połowie budowy. Czy jest to możliwe? Oczywiście. Jednak koszt takiej zmiany może być nieakceptowalny w pierwotnym budżecie. Często niestety tej refleksji brakuje w projektach IT.
