Diversity w polskim IT
Lokajit Tikayatray
Lokajit TikayatrayConsultant, IT Architecture @ Dell

Seniorze! Czy zasługujesz na swoje miejsce w zespole?

Jak wygląda typowy dzień pracy seniora w IT? Czy rzeczywiście jest wart swojego miejsca w zespole?
15.07.20226 min
Seniorze! Czy zasługujesz na swoje miejsce w zespole?

W zeszłym roku mój siostrzeniec dostał pracę w firmie zajmującej się oprogramowaniem. Niedawno skończył studia, a to była jego pierwsza praca jako Software Developer. Do pracy przystąpił pełen entuzjazmu i z własną wizją o karierze programisty.

Po pierwszych kilku tygodniach zadzwonił do mnie, aby poskarżyć się na kulturę pracy w firmie. Jego problem polegał na tym, że zmuszali młodszych programistów do wykonywania całej pracy (czytaj kodowania”). Starsi programiści uczestniczyli tylko w spotkaniach lub pracowali nad dokumentami i poświęcali minimalną ilość czasu na kodowanie.


Przez cały czas trwania rozmowy próbował mnie przekonać, że seniorom płaci się dużo za nicnierobienie. To nie był pierwszy raz, kiedy słyszałem takie żale od świeżaków czy też młodszych programistów.

W mojej ponad 10-letniej karierze programistycznej słyszałem wiele skarg, że starsi programiści nie są warci swojego miejsca i że juniorzy mogą ich łatwo zastąpić.

Ponieważ są to dość powszechne wyobrażenia - przejdźmy przez typowy dzień pracy, jaką wykonuje senior w większości firm, aby sprawdzić, czy rzeczywiście jest wart swojego miejsca w zespole.

Rozumienie i przekładanie wymagań funkcjonalnych na specyfikację techniczną

Jedną z najbardziej znaczących luk pomiędzy klientami a zespołem programistów jest różnica w zrozumieniu wymagań. Klienci nie rozumieją wyzwań związanych z technologią. Jednocześnie programiści nie mogą wczuć się w problemy, które klienci próbują rozwiązać w swojej firmie.

Osoby na stanowisku Product Owner starają się jak najlepiej udokumentować wymagania klienta w uproszczonej formie. Jednak prawie zawsze dokumentacja sporządzana jest w terminologii biznesowej. Zespołowi technicznemu trudno jest ją zrozumieć i przekształcić później w kod.

Seniorzy spędzili nad aplikacją konkretną ilość czasu. Wiedzą, co zostało już zaimplementowane i lepiej rozumieją problem klienta. Ze względu na ich doświadczenie, łatwiej jest im wypełnić lukę pomiędzy specyfikacją funkcjonalną, a techniczną.

Może się to wydawać trywialnym zadaniem, ale w praktyce, jeśli dasz odpowiedzialność za analizę wymagań młodszemu programiście, to pogubi się na dobre. Jeśli zespół nie zrozumie wymagań, to projekt jest skazany na porażkę.

Znajomość ograniczeń systemowych

Po zrozumieniu wymagań kolejnym zadaniem zespołu projektowego jest określenie, czy są one możliwe do wdrożenia. Odpowiedzialność za zrozumienie ograniczeń systemu i uświadomienie tego interesariuszom spada na barki starszego programisty.

To dość powszechne w projektach programistycznych, że klient chce zbudować rakietę, ale z budżetem można zbudować papierowy samolot. Jest to skrajny przykład, ale wiesz, o co chodzi.

Nie można wdrożyć wymogu obciążenia milionem żądań na godzinę za pomocą serwera, który w tym czasie może obsłużyć tylko kilka tysięcy. Starsi programiści muszą znać ograniczenia systemu i komunikować je szefostwu. Szef czy też Product Owner musi być w posiadaniu takich informacji zwrotnych przy negocjowaniu z klientem wymagań.

Dzięki ich doświadczeniu w pracy nad wieloma systemami starsi programiści lepiej rozumieją, która konfiguracja może obsłużyć jaki rodzaj obciążenia. Wiedzą oni, która technologia najlepiej nadaje się do realizacji konkretnych wymagań.

Jeśli pozostawisz zadania analizy wykonalności młodszym programistom, dziewięć na dziesięć przypadków będzie próbowało je wdrożyć w oparciu o jakąkolwiek ograniczoną wiedzą, którą posiadają. Jako programiści, wszyscy zaczynaliśmy w miejscu, gdzie posiadaliśmy młotek i myśleliśmy, że każdy problem to gwóźdź.

Kodowanie i review kodu

Istnieje wiele punktów widzenia, z których możemy spojrzeć na czas spędzony na kodowaniu. Starsi programiści mogą myśleć o różnych scenariuszach, gdy próbują zaimplementować wymaganie. Tak więc dużo czasu spędza się na analizowaniu najlepszego sposobu kodowania, aby uniknąć awarii w przypadkach brzegowych.

Daj to samo zadanie młodszemu programiście, a zakoduje je szybciej, ponieważ nie będzie zastanawiać się dwa razy podczas czytania wymagań. Ich podejście przypomina raczej konwersję języka angielskiego na język Java (lub jakikolwiek inny język programowania, którego używają).

To nie jest tak, że młodsi programiści źle kodują, ale nie mają oni jeszcze takiego doświadczenia, które pozwoliłoby im myśleć o wielu możliwych scenariuszach powiązanych z zadaniem. Tak więc kodują to, co pierwsze im przyjdzie na myśl w związku danym wymaganiem.

Do codziennych zadań seniora należy przeglądanie kodu innych osób. Zajmuje mu to znaczną część czasu. Odpowiedzialność za upewnienie się, że system wywali się przez nieobsłużone przypadki brzegowe lub niezamierzonego złego kodu spoczywa na starszym programiście.

Obsługa eskalacji i incydentów produkcyjnych

Jednym z podstawowych obowiązków starszych programistów jest obsługa eskalacji i incydentów produkcyjnych. Uważam to za jeden z głównych powodów, dla których seniorzy są niezbędni dla zespołu.

Na początku swojej kariery programiści nie posiadają umiejętności niezbędnych do radzenia sobie z ludźmi podczas trudnych dyskusji. Kiedy cały bajzel wypływa na powierzchnię, prawdziwa odwaga starszych programistów zostaje wystawiona na próbę. Jadą na wezwanie i pierwszą rzeczą, jaką starają się zrobić, jest zrozumienie problemu i opanowanie sytuacji.

Doświadczeni programiści wiedzą, jak uspokoić publiczność i zaszczepić w niej pewność, że świat się jednak nie zawali. Prowadzą rozmowę w sposób logiczny i wykorzystują swoje doświadczenie, aby jak najszybciej rozwiązać problem.

W każdym problemie najważniejszym krokiem jest analiza przyczyn u źródła. Po jej znalezieniu i dostarczeniu rozwiązania, każdy, kto zna się na kodowaniu, może naprawić problem. Ale bez starszyzny, całe przedsięwzięcie może się opóźnić o wiele godzin.

W większości przypadków, opóźnienia w znalezieniu pierwotnej przyczyny eskalacji problemów produkcyjnych mogą spowodować znaczne straty dla klienta i firmy. Dlatego w sytuacjach kryzysowych menedżerowie zawsze polegają na starszych programistach. Mogą uratować dzień zespołu dzięki swojemu doświadczeniu i zdobytej wraz z nim wiedzy.

Coroczna ocena i prezentacja

Co roku każdy zespół musi uzasadnić swoją pracę, aby uzyskać roczny budżet projektu zatwierdzony przez klientów lub odpowiedni szczebel w firmie. Zespoły muszą również okresowo prezentować swoją bieżącą pracę wyższym stanowiskom.

W obu przypadkach menedżerowie polegają właśnie na seniorach, którzy przygotowują prezentacje i przedstawiają szczegóły techniczne niezbędnym odbiorcom. Młodsi programiści są zupełnie nieświadomi tych działań. Wielu z nich nie wie nawet, w jaki sposób przydzielany jest budżet na ich projekt.

Zadaniem seniora jest przekonanie zarządu, dlaczego pewne funkcje są wymagane w aplikacji. Pomagają one decydentom mieć żywy obraz tego, nad czym pracuje zespół, jak również zrozumieć, w jaki sposób praca przynosi korzyści firmie i jej klientom.

Menedżerowie nie mogą zostawić prezentacji młodszemu programiście, kiedy ich wiceprezes lub CIO jest na widowni. Nie będą oni pytali o najdrobniejsze szczegóły kodowania podczas prezentacji.

Będą oni w pewnym stopniu zainteresowani, aby dowiedzieć się, co można zrobić lepiej, aby poprawić działanie i niezawodność aplikacji. Odpowiedzi na te pytania mogą pochodzić jedynie z doświadczenia, które posiada starszyzna.

Przemyślenia końcowe

Teraz masz już dość dobre pojęcie o tym, co starsi koledzy robią w zespole. Powinno być jasne, dlaczego ich wkład w pracę zespołu nie powinien być mierzony na podstawie linii kodu, które produkują.

Mam nadzieję, że przedstawione powyżej fakty i argumenty są wystarczające, aby zrozumieć, jak ważne jest doświadczenie podczas realizacji i utrzymania projektu.

Jeśli u Ciebie są młodsi programiści, którzy mogą zrobić to wszystko i kodować tak samo, jak każdy inny w zespole, możesz z pewnością pozbyć się seniorów. A jeśli nie, to teraz już wiesz, dlaczego dobrze jest trzymać się swoich doświadczonych pracowników, nawet jeśli wydają się wnosić mniejszy wkład w kodowanie.

Co sądzisz o tym odwiecznym pytaniu? Uważasz, że starsi programiści zasługują na swoje miejsce w zespole? Zapraszamy do wyrażenia swojej opinii w komentarzach.



Oryginał tekstu w języku angielskim przeczytasz tutaj.

<p>Loading...</p>