Skuteczny project manager potrafi w taki sposób pokierować zespołem, aby ten jak najlepiej zrealizował wyznaczony cel. Ponadto ma obowiązki względem interesariuszy oraz trzyma pieczę nad realizacją samego projektu ‒ od momentu jego uruchomienia aż do zamknięcia. Wiąże się to z szeregiem wyzwań, z którymi mierzy się w codziennej pracy.
Szczególnie trudne zadanie stoi przed kierownikami projektów IT. W dobie szybkiego rozwoju technologii, postępującej automatyzacji i wdrażania innowacyjnych narzędzi muszą nie tylko stale uaktualniać swoją wiedzę, ale także potrafić ją wykorzystać w relacjach z klientem biznesowym. ‒ Każdy projekt, do którego przystępujemy, wymaga zestawu umiejętności, który wypełniłby sporo kursów na studiach wyższych. Często wymaga się od nas znajomości tematów, które do tej pory nie zajmowały nas w naszym życiu zawodowym, a nagle stają się one konieczne w danym projekcie. Z tego względu ogromnym wyzwaniem w obszarze IT staje się ciągła edukacja ‒komentuje Jarosław Słowik, PHP tools consultant / developer w Capgemini.
Ciągłe zmiany
Konieczność ciągłego uczenia się wiąże się także z faktem, że podczas trwania projektu, często padają nowe pomysły ze strony klienta. Problem zmiany wymagań można jednak rozwiązać dzięki metodologii Agile. ‒ Mowa tu jednak nie tylko o procesie zarządzania, ale Agile jako sposobie projektowania architektury systemu. Wykorzystując zwinność w procesie rozwoju, możemy bowiem szybko reagować na zmiany i modyfikowaćarchitekturę systemu w taki sposób, aby sprostać nowym wymaganiom ‒ tłumaczy Marek Zając, Lead .NET Developer w Capgemini.
Zrozumienie potrzeb
Praca z klientem biznesowym oznacza doskonałość w każdym calu ‒ bo właśnie tego oczekują osoby zlecające dany projekt. Mowa tu nie tylko o komunikacji, czyli zrozumieniu potrzeb klienta, omawianiu trudnych problemów biznesowych bezpośrednio z nim czy przeprowadzaniu go przez każdy etap cyklu pracy programistów. Chodzi przede wszystkim o dostarczenie aplikacji, czyli produktu, o najlepszej możliwej jakości.
‒ Dla mnie oznacza to przekroczenie oczekiwań klienta w zakresie użyteczności aplikacji. Można to osiągnąć tylko poprzez dogłębne przedyskutowanie i poznanie ich potrzeb, wymagań, wizji i celów. Jeśli jesteś tego świadomy, możesz wykorzystać swoje dotychczasowe doświadczenie, proponując jak najlepsze rozwiązanie. Według mnie tego typu podejście jest synonimem dobrej jakości ‒ podkreśla Jarosław Słowik.
Aby zrealizować to założenie, podczas rozpoczęcia pracy przy projekcie, równie istotny okazuje się podział obowiązków i analiza danych. Warto zauważyć, że na tym etapie problematyczna staje się również integracja z systemami innych firm. ‒ Każdy system wykorzystuje własny format danych. Z tego względu, aby połączyć ze sobą dwa lub więcej systemów, przydatne okazuje się wydzielenie kontekstów ograniczonych (ang. Bounded Contexts) oraz języka opublikowanego (ang. Published Lanaguage) ‒ tłumaczy Marek Zając.‒ Co więcej, nie każdy system posiada interfejs programowania aplikacji (API), za pomocą którego można w łatwy sposób komunikować się z systemem lub dostępne API ma ograniczoną funkcjonalność. Dlatego czasem musimy szukać innych sposobów integracji.
Przykład? Obecnie rozwijane przez zespół Marka Zająca rozwiązanie zakłada integrację z 3 systemami typu ITSM (IT Service Management) od różnych dostawców, bramką SMS, serwerem pocztowym, Skypem oraz kalendarzem Office 365. Przy czym celem wdrożenia jest nie tylko notyfikacja użytkownika (powiadomienie o wystąpieniu jakiegoś zdarzenia, np. awarii), ale wykonanie za niego konkretnego zadania, np. zaplanowanie i organizacja spotkania z odpowiednimi osobami.
Niezawodny system
Warto zauważyć, że ważną częścią integracji wszystkich systemów jest odporność na awarie. Dlatego jeśli jeden z systemów jest niedostępny, opracowane rozwiązanie musi być odporne na nieoczekiwane sytuacje.
Marek Zając: ‒ W tej chwili staramy się projektować nasze rozwiązania według zasady Safe to Fail, w taki sposób, żeby awaria systemu zewnętrznego w jak najmniejszym stopniu wpływała na dostępność całego systemu. Np. jeśli użytkownik klika zamówienie w aplikacji i po nim ma nastąpić wysłanie SMS-a i powiadomienie mailowe, to w sytuacji gdy usługa wysyłania powiadomień będzie niedostępna proces składania zamówienia się wykona, a zadanie wysłania notyfikacji zostanie zakolejkowane i zrealizowane, gdy system będzie znów dostępny.
Rozwiązania takie są powszechnie wykorzystywane przez Allegro, Amazon i inne sklepy e-commerce. Czas od złożenia do potwierdzenia zamówienia może się bardzo różnić, ale awaria mechanizmu do wysyłania powiadomień mailowych nie blokuje realizacji zamówienia i pozwala odnotować informację w systemie.
Wysoką dostępność systemu osiągamy dzięki zapewnieniu odpowiedniej redundancji usług: w sytuacji, kiedy jeden serwis jest niedostępny, drugi przejmuje jego funkcję. Marek Zając: ‒ Pomagają nam rozwiązania oparte o konteneryzację, wykorzystujące otwarte platformy Kubernetes lub Docker. Jest to jeden z przykładów podejścia DevOps. W ostatnich miesiącach nieodłącznym elementem tworzenia systemów IT w naszym dziale staje sięparadygmat Infrastructure as Code, który pozwala przygotować całe środowisko aplikacji w przewidywalny i automatyczny sposób za pomocą dedykowanych skryptów oraz aplikacji (Terraform, Ansible, Chef).
Zwinne podejście
Decydowanie o kierunku i rozwoju projektu, komunikowanie się z zespołem i klientem, czy też reakcja na dynamicznie zmieniające się środowisko projektowe ‒ to działania, z którymi wiąże się wiele wyzwań współczesnych project managerów. Aby nie stracić przy tym głowy, jak sami przyznają, stawiają przede wszystkim na zwinne projektowanie architektury procesu.
‒ Najtrudniejszym problemem jest zmiana wymagań w trakcie trwania projektu ‒ uważa Marek Zając. ‒ Bardzo często zdarza się, że biznes tworzy nowe pomysły w trakcie procesu rozwoju oprogramowania. Dlatego ważne jest, aby projektować systemy z wykorzystaniem metodologii Agile. Wykorzystując zwinność, w procesie rozwoju, możemy szybko reagować na zmiany i ponownie projektować architekturę systemu, aby sprostać nowym wymaganiom.
Jako przykład podaje jeden z poprzednich swoich projektów, aplikację webową do obsługi klienta, wykorzystywaną w złożonym procesie biznesowym. ‒W trakcie prac okazało się, że moduły aplikacji muszą być wdrażane niezależnie od siebie. Często było tak, że gdy jeden moduł był gotowy do wdrożenia w drugim wciąż trwały prace, co wpływało negatywnie na czas dostarczania gotowego produktu do klienta.
Rozwiązanie? Rozbicie aplikacji na kawałki ‒ Przenieśliśmy moduły do osobnych aplikacji i pozwoliliśmy na wymianę informacji między nimi.Pozwoliło to klientowi na korzystanie z systemu, a nam na dalsze jego rozbudowywanie. Drugim istotnym elementem takiego rozwiązania jest to,że zespoły pracują równocześnie i wdrażają nowe funkcjonalności niezależnie od siebie.
Dzięki zwinnemu podejściu zespół może szybko dostarczać działający produkt, a w późniejszych fazach – łatwiejsze poprawki. Pozwala to zespołowi IT na wykonywanie pracy jak najlepiej i zgodnie z wizją oraz oczekiwaniami klienta, który nie musi czekać na produkt. ‒ Bo to jego zadowolenie jest kluczem do udanej realizacji projektu‒ podsumowuje Jarosław Słowik.
Źródło: newsrm.tv