Język programowania to tylko narzędzie, Praca w IT

Senior i co dalej? Spostrzeżenia Software Engineera

senior ścieżka kariery

Być może nieraz w Twojej głowie rodziło się tytułowe pytanie. Zastanawiasz się, w którą stronę iść, by nie stać w miejscu. Za Tobą tyle pokonanych szczebli w karierze, że zatrzymanie się pewnie nie wchodzi w grę. Co zrobić w takiej sytuacji?

Zauważyłem, że wielu z nas na szczeblach branży IT, plasuje siebie na poziomie seniorskim. Często mamy za sobą wiele lat ciężkiej pracy, nauki, tysiące godzin spędzonych na rozwiązywaniu problemów tzw. pierwszego świata, wymyślania koła na nowo, pisania własnych frameworków oraz wyważania otwartych drzwi.

W naszym bagażu doświadczeń jest wiele projektów udanych oraz tych, o których nie chcemy wspominać. Po latach boju w świecie IT czujemy się w nim pewnie. Wiele spraw,  które kiedyś były nie lada wyzwaniem i spędzały sen z powiek, dziś załatwiamy od ręki.

Z czasem pojawia się stagnacja, wypalenie – mimo wysokich zarobków czujemy, że coś nie gra. Zastanawiamy się, czy to wszystko ma sens: “a może rzucić to wszystko, otworzyć piekarnię, agroturystykę lub własny browar?”. Pasja, która kiedyś dawała tyle radości, wypala od środka.

Przyznaję, brzmi to dość negatywnie i być może Ciebie, czytelniku_czko nie dotyczy… ale czy na pewno? Jaką masz gwarancję, że nie nie dotknie w przyszłości?

Może Team Lead?

Zauważyłem, że branży IT często panuje przeświadczenie, że kolejnym “levelem” na ścieżce kariery po seniorze jest Team Lead. 

Idealny Team Lead to osoba, która ma wysokie kompetencje techniczne, motywacyjne, komunikacyjne, zarządcze. Lider to osoba, która jest drogowskazem dla całego zespołu, potrafi nim efektywnie zarządzać i wykrzesać z niego, jak najwięcej pozytywnych wartości dla firmy. Leader mieści w sobie wiele seniorskich kompetencji.

Czy każdy senior może być liderem? Będąc na ścieżce planowania dalszej kariery, warto zastanowić się, czy osobowość, posiadane talenty i zdobyte umiejętności są wystarczające. Praca w zespole bywa trudna i skomplikowana, a rola lidera wymaga nie tylko bycia jego częścią, lecz przede wszystkim umiejętnego zarządzania nim.

Motywowanie. Wyobraź sobie sytuację, że trzeba ruszyć kod, którego nikt nie lubi, ale aktualnie nie ma innego wyjścia – trzeba to zrobić. Jak do tego działania zmotywujesz członków zespołu?

Umiejętne przekazywanie wiedzy. W wielu organizacjach lider ma szeroką wiedzę biznesową i techniczną, bierze udział w różnych spotkaniach, na których ta wiedza jest wymagana, przez co często taka osoba staje się tzw. wąskim gardłem. Twoim zadaniem będzie umiejętne przekazywanie dalej tych informacji.

Rozwiązywanie konfliktów. W branży spotkałem wiele ciekawych osób, przeważnie mają one inne podejście i doświadczenie w wytwarzaniu oprogramowania. Z tych różnic rodziły się przeróżne konflikty. Rolą lidera jest je dostrzec i pomóc zespołowi rozwiązać.

Gdybym miał podsumować lidera jednym krótkim opisem, to powiedziałby, że to osoba z niezwykle otwartą głową. Czy masz do tego odpowiednie talenty, wiedzę i umiejętności?

Jak nie Team Lead, to może architekt?

Zapewne za Tobą wiele rozwiązanych problemów architektonicznych. Rysowałeś_aś system od podszewki, rozbijałeś_aś monolity na mikroserwisy, moduły. Wydzielałeś_aś dziedziny i planowałeś_aś jak przelać to, co chce biznes, w język techniczny. Nawet jeżeli nie robiłeś_aś tego na co dzień, to na pewno brałeś_aś udział w spotkaniach omawiających architekturę – czujesz, że masz w tym jakieś doświadczenie i może to dobra droga na ścieżce kariery.

Dobry architekt to osoba, która odnajduje się w świecie biznesu i technologii, która potrafi dwa światy umiejętnie połączyć ze sobą, aby funkcjonowały w symbiozie. Jednym z bardzo ważnych zadań architekta jest komunikacja z wieloma rolami w organizacji, np. z tzw. biznesem, project managerem, devopsami, programistami. Wymaga się od niego nie tylko wysokich umiejętności technicznych, lecz również miękkich, nieszablonowego myślenia i planowania. 

Architekt często nie dotyka kodu oraz implementacji – pracuje na wyższych warstwach. Jednym z głównych zadań architekta jest to, aby architektura systemu była czysta, zrozumiała, niezbyt skomplikowana, odpowiadała potrzebom biznesu i nie stwarzała problemu podczas implementacji. Niezwykle istotna jest także dokumentacja. Dobry architekt powinien mieć również umiejętność przekonywania, zrozumienia szerszego kontekstu oraz biznesu. W roli architekta raczej nie ma czasu na programowanie.

A co, jeżeli żadna z powyższych ról nam nie odpowiada? Jeśli nie czujemy się na tyle mocni lub chętni do zarządzania zespołem i nie chcemy porzucić programowania na rzecz architektury? 

Senior +

Często identyfikujemy się z jednym, dwoma językami programowania i czujemy się z nimi bardzo dobrze. Przeszliśmy długą ścieżkę nauki oraz poznawania frameworków, znamy te technologie na wylot. Posiadamy szeroką wiedzę na temat wybranych technologii, które towarzyszyły nam przez ostatnie miesiące i lata – za bardzo nie widzimy możliwości zmiany. A może jednak warto poddać ten temat pod dyskusję i rozszerzyć swoje kompetencje, aby kolejne projekty realizować z wypiekami na twarzy?

Mając duże zaplecze innych języków i znając możliwości, jakie dają, można łatwiej implementować systemy, które przynoszą sprawniej wartość dodaną biznesowi, a my z nich jesteśmy zwyczajnie dumni i usatysfakcjonowani.

Czyli mam porzucić swój język, w którym czuje się komfortowo na rzecz innego i startować jako junior? Nie. “Senior” nie należy się tylko i wyłącznie za przepracowane lata i pisanie idealnego kodu. To zbiór wielu innych kompetencji i doświadczeń, dzięki którym realizujemy swoje zadania na wysokim poziomie. Kod i język programowania może być tylko narzędziem pracy, tak samo, jak IDE lub system operacyjny.

Jeżeli zaczniemy się realizować w innym języku, nie musimy przechodzić kariery od samego początku. Fakt, przez pierwsze tygodnie pracy będziemy czuć dyskomfort w nowej składni i przy wielu problemach będzie nam towarzyszyło uczucie “placka”, ale z czasem będziemy w stanie porównać inne języki, wyciągnąć wnioski i wykorzystać tą wiedzę efektywnie. 

Poznawanie nowego języka często jest mocnym zastrzykiem motywacji, który może spowodować, że ponownie będzie ”się chciało” usiąść przed ekranem i pokombinować. Czujesz dyskomfort w pisaniu kolejnego CRUDA? Problem z nową składnią będzie pozytywnym napędem.

Doba ma 24 godziny

Nauka nowego języka może budzić obawy ze względu na ograniczenia czasowe. Porozmawiaj w takiej sytuacji ze swoimi przełożonymi o możliwości poświęcenia paru godzin tygodniowo na nowy język. Przedstaw możliwości, jakie niesie ze sobą ta decyzja. Firmy w branży IT coraz przychylniej reagują na takie inicjatywy, ponieważ często po czasie wnoszą wartości dodane do projektów.

A co jeżeli przełożeni nie widzą takiej możliwości i nie są chętni na takie propozycje? Poszukaj firmy, która ma ten etap za sobą. W branży jest wiele organizacji, które mają otwarte podejście do wielu języków. Firmy te traktują język jako narzędzie do rozwiązywania problemów i potrzeb biznesu. Starają się nie identyfikować systemu z jednym językiem – na szczęście sam pracuję w takiej organizacji. 

Pewnie nie jeden raz korzystałeś_aś z jego systemu płatności podczas zakupów w internecie. Specyfika systemów płatniczych jest na tyle skomplikowana, że aby były one wydajne, bezpieczne i skalowalne należy wykorzystać wiele języków, które są wybierane w zależności od potrzeb. Dlatego głównymi językami w Tpay są PHP, JAVA, Javascript, TypeScript, ale firma nie zamykamy się na inne. Na wielu płaszczyznach zauważa nowe możliwości innych języków i stara się je testować i wpasowywać w system. Oczywiście wszystko w zakresie zdrowego rozsądku. 

Wykorzystanie i testowanie nowych języków nigdy wcześniej nie było takie łatwe, korzystając w pełni z możliwości, jakie dostarcza konteneryzacja oraz architektura mikroserwisów, szybkość i bezpieczeństwo implementowania nowych funkcjonalności są na bardzo wysokim poziomie. Stosując się do zasad i reguł architektury, koszt zmian, wyboru i przetestowania innego języka dla wybranych części systemu, jest niezwykle niski i nie wpływa na działanie reszty systemu. Dodatkowo dużym plusem jest fakt, że gdy z jakichś powodów nasza decyzja co do wyboru języka nie była trafna, można bardzo łatwo mikroserwis przepisać w innym języku. 

Jeżeli mamy możliwość skorzystania w pełni z dobrodziejstwa, jakim jest konteneryzacja oraz architektura mikroserwisów i pracujemy w organizacji, która rozumie te zagadnienia, to warto na nowo zastanowić się nad kolejnymi wyzwaniami. Programowanie znów może być ciekawe. 

Legacy?

Większość z nas chce realizować systemy w najnowszych technologiach, opartych o czystą architekturę, gdzie pojęcie długu technicznego nie jest znane. Niestety, mając doświadczenie seniorskie zwykle zdajemy też sobie sprawę, że to raczej utopia. Prędzej czy później każdy system w jakimś stopniu będzie zawierał dług techniczny, z którym ktoś będzie musiał się zmierzyć. 

Jeżeli masz wieloletnie doświadczenie we wspomnianych obszarach, to dlaczego nie wykorzystasz tego do wychodzenia z długu? Co jest większym wyzwaniem crud w najnowszych technologiach, czy podbicie wersji PHP w projekcie? Walka z długiem to nie tylko podbijanie technologii do kolejnych wersji, to również zmiany na warstwie architektury, bezpieczeństwa czystości kodu i wiele innych. Realizując te zagadnienia, często musimy mieć obszerną wiedzę na wielu warstwach. Praca z legacy nie musi być ostatecznością, może być ciekawy kierunkiem w branży, jeżeli tylko zmienimy podejście i będziemy umieli czerpać z tego radość.

Zdjęcie główne artykułu pochodzi z unsplash.com.

Senior Developer w Tpay

Od nastoletnich lat informatyka była dla niego pasją. Uwielbia majsterkować nie tylko z językami programowania i technologiami. Z pracy stara się czerpać jak najwięcej radości i satysfakcji.

Podobne artykuły

[wpdevart_facebook_comment curent_url="https://geek.justjoin.it/senior-i-co-dalej-spostrzezenia-software-engineera/" order_type="social" width="100%" count_of_comments="8" ]