Niezgodnie z planem

by Jan Szpakowski

Co zrobić, gdy wszytko idzie niezgodnie z planem? Czyli krótka refleksja o dostosowaniu się do niełatwej rzeczywistości.

Wszystkie poważne firmy planują. Planowanie stanowi nieodłączny element procesu wydań. Pozytywów jest wiele. Gdy mamy przewagę czasu możemy znacznie sprawniej rozłożyć obowiązki i pracować wydajniej. Wszytko brzmi pięknie aż do momentu, w którym nasz plan nie legnie w gruzach… Plan na ten artykuł również był zupełnie inny, lecz ze względu na obecne wydarzenia nie było innej drogi niż przystosowanie się do aktualnej sytuacji. Szybka reakcja na teraźniejszość jest równie ważna co pieczołowite planowanie przyszłości.

Życie zawodowe wielu z nas ulegnie zmianie w ciągu najbliższych kilku miesięcy. Czeka nas spowolnienie gospodarcze, krach na giełdzie, a co za tym idzie brak płynności finansowej wielu przedsiębiorstw. Nawet jeśli uda nam się bezpośrednio uniknąć konsekwencji to dotkną nas one poprzez kontrahentów, rodzinę lub najbliższą okolicę. Kwarantanna wstrzyma spory odsetek zgiełku, który był naszą codziennością. Sytuacja pokrzyżowała nam plany, czasem te drobne – jak wyjazdy zagraniczne, a czasem te większe jak np. wesele. Plan – niespodziewane zdarzenie – zmiana planu. Każdy, kto pracuje w IT przeżywał ten sam schemat wielokrotnie. Oczywiście skala przeżyć i ewentualnych konsekwencji jest nieporównywalna. Chciałbym skupić się tylko i wyłącznie na reakcjach na niespodziewane sytuacje i w nich szukać podobieństw z aktualnymi wydarzeniami. Wirus to przykład zamętu w skali globalnej, wpływającego na niezliczoną ilość ludzkich planów. Historia pokazuje nam, że byliśmy zaskakiwani wielokrotnie, a część z nas nie potrafiła sobie poradzić z niespodziewanymi wyzwaniami. Aby historia nie powtarzała swych niechlubnych okresów w świecie wytwarzania oprogramowania – wynaleziono SCRUM.

Współczesne koncepcje zarządzania pokazują nam jak organizować czas, by dać z siebie jak najwięcej. Skupiamy się zatem na najmniejszych detalach przy projektowaniu przyszłego tygodnia, miesiąca, a nawet roku.

Niestety bywa tak, że tydzień rządzi się swoimi własnymi prawami i w nosie ma nasze założenia i oczekiwania. Przy skomplikowanym sofcie ilość problemów, jakie mogą nas zaskakiwać jest praktycznie nieskończona: błędy w kodzie, biblioteki, problemy konfiguracyjne, hosting, VPN, uszkodzenie sprzętu, brak backupu, zakłócenia sieci, a także przejechanie krzesłem po kablu HDMI oraz wyczerpane baterie w myszce. Do tego dochodzi jeszcze czynnik ludzki – nieporozumienie, bariera językowa, zobojętnienie, choroba kluczowego członka zespołu czy zwykły brak życzliwości. Łańcuch ludzi, który poświęcają wiele godzin tylko i wyłącznie na jednym zadaniu – dostarczeniu nowej funkcjonalności czasem się ukruszy, a czasem pomimo braku zakłóceń po prostu się pomyli. Kiedy mamy do czynienia z pomyłką, musimy zweryfikować nasze plany. I to jest ta najtrudniejsza część. Reakcje na niespodziewane wydarzenia bywają nieprzyjemne – mamy wrażenie, że coś zostało nam niesłusznie odebrane, powtarzamy sobie: “Nie tak miało być!”, “Jak do tego doszło? (nie wiem)” – próbujemy szybko znaleźć winnego i pokazać konsekwencje. Źle, źle, źle – nie teraz! O wyciągnięciu lekcji z tego błędu będziemy rozmawiać później, najlepiej po wydaniu! Przed nami jeszcze długa, wyboista droga. W takiej sytuacji trzeba skupić się na odpowiednim skierowaniu naszych sił.

Postawmy sobie dwa pytania. Czy da się to naprawić i jeśli da się to naprawić, to z czego będziemy musieli zrezygnować? Okazuje się ze umiejętność adaptacji jest równie ważna, co umiejętność planowania. Często jesteśmy tak zafiksowani na naszej wizji, którą przecież wspólnie uzgodniliśmy, że nie jesteśmy w stanie wyobrazić sobie innego jej kształtu.

Pomimo problemów dążymy zatem do wykonania 100% założonej normy. W efekcie kończy się to różnie. Najgorszym z możliwych rozwiązań jest nieodpuszczanie żadnej z nowych funkcjonalności i praca nad rozwiązaniem do ostatnich minut przez releasem. Wtedy zdajemy się już tylko i wyłącznie na łut szczęścia. Mmożemy na zmianę modlić się i zaciskać kciuki, żeby zmiany bohatersko dodane na ostatnią chwilę nie naruszyły żadnej kluczowej funkcjonalności. Być może rozsądniejszym wyjściem z sytuacji byłoby ograniczenie scope’u i dodanie jednego z ficzerów w fix-wersji? Klient zapewne lepiej zareaguje na informację, że jeden drobny element zostanie dostarczony z małą obsuwką niż na wielki napis “Unexpeced Error” w trakcie wykonywania podstawowych czynności za pomocą waszej apki lub na piękną czterysta czwóreczkę tuż po zalogowaniu.

Czasem najtrudniejszą, ale też najlepszą decyzją jest wycofanie się z pierwotnego planu i zaproponowanie alternatywny, która być może nie będzie równie perfekcyjna jak pierwowzór, ale będzie znacznie lepsza niż oryginał z wieloma błędami. W tym miejscu pojawia się problem lawiny opóźnień wynikającej z pierwszej obsuwki. Czy rzeczywiście pierwsze przekroczenie deadline’u musi oznaczać całoroczny nawarstwiający się problem? Podobnie jak zdarzają się okresy nieprzychylne spowalniające nasze działania, tak samo zdarza się, że niektóre zadania idą nadspodziewanie gładko i zostawiają miejsce na nadgonienie tych, które sprawiły nam więcej kłopotów. Żeby dobrze wykorzystać nadarzające się okazje do wyrównania porachunków z losem trzeba czujnie antycypować.

Cała sztuka planowania polega na tym, żeby to planowanie nie ustawało po spotkaniu zwanym “planingiem” a pozostawało w głowach wszystkich każdego dnia. Adaptacja do realnych wyzwań jest kluczowa, dla jakości wydawanego produktu. Odpowiednia prędkość komunikowania zastanych problemów jest równie istotna, aby osoby decyzyjne miały jasne spojrzenie na rzeczywistość i dzięki temu mogły odpowiednio dopasować wymagania do chwili obecnej. To naturalne, że zdarzą się rzeczy, których przewidzieć się nie da. Co zatem zrobić, gdy pierwszy plan nie wypali? Odpowiedź jest bardzo prosta i bardzo trudna zarazem – trzeba skutecznie skonstruować nowy plan.


Artur, Software Tester

Zadowodwo: Analityczny, skupiony na celu tester, który uważa że komunikacja jest równie ważna, co zgłaszanie bugów. Prywatnie: Niepoprawny optymista, fan Monty Python’a, NBA, Jacka White’a oraz improwizacji.