Od mida do seniora. Od czego zależy awans? Devdebata
– Po pierwsze, upewnij się, że faktycznie masz na tyle umiejętności, żeby zostać seniorem. Po drugie, miej odwagę zaznaczyć swoje oczekiwania. Daj znać “tym wyżej”, że jesteś gotów na awans i pokaż jak bardzo Ci zależy – powiedział w devdebacie Paweł Dyląg, Senior Android Engineer w Revolut.
Zaprosiliśmy trzech seniorów do rozmowy o awansie, o tym, jak wyglądały ich ścieżki kariery. Mamy nadzieję, że w ten sposób udało nam się pokazać, co zrobić, by przejść z etapu mida na etap seniora.
W devdebacie udział wzięli:
- Filip Rachwalak, Senior Systems Engineer w F-Secure. Swoją programistyczną karierę rozpoczynał w 2016 roku jako Python developer, lecz szybko jego obowiązki zaczęły oscylować bardziej wokół wdrażania kodu, automatyzacji testów oraz rozwijania infrastruktury. Krótko potem – w czasie migracji do chmury Amazona – odkrył świat AWS’a, w którym już pozostał. Dziś prowadzi zespół DevOpsów opiekującym się istniejącą infrastrukturą, wdrażaniem nowych produktów oraz ich migracją do AWS. W wolnej chwili prowadzi szkolenia (w stylu „From Zero to Hero”) również z zakresu chmury Amazona.
- Łukasz Kliś, Full Stack Engineer w Coya. W wieku 15 lat rozpoczął przygodę z programowaniem, a dwa lata później zrealizował pierwsze zlecenie. Współorganizował trójmiejskie spotkania dla społeczności IT (PoolCamp, meet.js Gdańsk) oraz konferencje (meet.js Summit, CSSconf EU, JSConf EU). Pracował w kilku firmach, zarówno z siedzibami w Polsce, jak i za granicą. W 2013 roku przeprowadził się do Niemiec dla pracy w startupie Wimdu. W grudniu 2019 wrócił do Wrocławia i zdalnie pracuje dla firmy Coya.
- Paweł Dyląg, Senior Android Engineer w Revolut, do którego ofertę pracy znalazł na JustJoinIT. Absolwent studiów informatycznych UJ, choć czasem sypiał na wykładach. Mówi na co dzień po Kotlinowemu i po Javowemu, a od jakiegoś czasu rozmawia z kotem po Dartowemu. Zaczynał pracę jako grafik komputerowy i nie myślał o programowaniu, aż do momentu jak nie wyprintował “hello world” w C. Od tego czasu spod jego klawiatury wypłynął kod paru aplikacji SmartCity firmy SoInteractive, kod SDK’ów do beaconów Estimote, kod do aplikacji norweskiego fintechu Vipps, czy w końcu kod do appki Revolut, z której korzysta już ponad 12 mln użytkowników na całym świecie.
Spis treści
Jaka jest różnica między seniorem a juniorem/midem?
Filip Rachwalak, Senior Systems Engineer w F-Secure:
Poza aspektem wiedzy i umiejętności (warunkiem koniecznym przy awansie), to bardzo rzuciła mi się w oczy szczególna cecha, którą – uważam – każdy senior posiadać powinien: odpowiedzialność. Seniorowi można powierzyć zadania dowolnej trudności i powinniśmy się spodziewać, że to zadanie zostanie zrobione, przetestowane i wdrożone w skończonym czasie. Być może senior nie zrobi wszystkiego sam, ale na pewno będzie się czuł odpowiedzialny za “dowiezienie” tego do końca, więc zwróci się do tych osób (być może bardziej doświadczonych), których potrzebuje, by skończyć zadanie.
Łukasz Kliś, Full Stack Engineer w Coya:
To zależy – różnice wynikają z tego, jak konkretna firma definiuje wymagania odnośnie konkretnych ”poziomów” programistów. Każda organizacja ma inne oczekiwania wobec pracowników ze względu na wewnętrzną strukturę, procesy, itp. Ciężko jest podać konkretne różnice, które są reprezentatywne dla wszystkich firm zatrudniających programistów. Inne wymagania odnośnie każdego z poziomów startupy, małe i średnie przedsiębiorstwa, czy duże korporacje.
Abstrahując, z moich doświadczeń w pracy, jako programista oraz menedżer, mógłbym pokusić się o zdefiniowanie bardzo ogólnych różnic pomiędzy juniorem, midem oraz seniorem – sposób i świadomość tego, jak wykonać powierzone zadania. Juniorzy wymagają stałego (lub bardzo częstego) nadzoru oraz precyzyjnie określonych wymagań/podejść do rozwiązania danego problemu. ”Midy” są w stanie wykonać większość typowych zadań od czasu do czasu konsultując rozwiązania z innymi. Seniorzy natomiast wymagają minimalnej ilości nadzoru odnośnie wykonywanych zadań oraz pełnią rolę mentorów dla juniorów oraz midów.
Warto pamiętać, że wiedza, na podstawie której wykonujemy zadania, nie ogranicza się jedynie do znajomości technologii, a również do znajomości produktu oraz procesów wewnątrz organizacji.
Paweł Dyląg, Senior Android Engineer w Revolut:
Po roku pracy w mojej pierwszej firmie wydawało mi się, że trzymam wysoki poziom. Cały projekt miałem w jednym palcu, znałem większość linijek kodu, debugowałem z szybkością równą TGV, edukowałem resztę zespołu, a nawet jeździłem prezentować produkt za granicę. Patrząc z zewnątrz – prawdziwy senior. Jakiś czas później zrezygnowałem z pracy w korporacji i zmieniłem klimat na startupowy dołączając do Estimote. Nie ciężko się domyślić, że to tam spadło na mnie kowadło rzeczywistości.
Okazało się, że pisanie kodu w jednej klasie nie jest dobrym pomysłem, opisywanie każdej funkcji elaboratami komentarzy nie jest proste w utrzymaniu, a pisanie testów nie oznacza bynajmniej szkolnej kartkówki. Takie doświadczenie pozwala mi zauważyć, że ciężko jest wyraźnie narysować granice między juniorem, midem, a seniorem. W każdej firmie jest inna definicja tych stanowisk i często ktoś będący seniorem w jednej firmie, w drugiej byłby zaledwie juniorem. Z perspektywy czasu wiem na pewno, że ktoś o umiejętnościach seniora powinien umieć powiedzieć “nie” (co wcale nie jest takie proste jakie się wydaje!). To proste słowo pozwala niekiedy uratować produkt przed katastrofalnymi decyzjami, pochopnymi pomysłami, czy zwykłym, ludzkim pośpiechem.
Po jakim czasie od zostania midem dostaliście awans na seniora? Dlaczego tyle to trwało?
Filip Rachwalak, Senior Systems Engineer w F-Secure:
Dwa lata. Myślę, że to ani krótko, ani długo – normalny etap.
Łukasz Kliś, Full Stack Engineer w Coya:
Po półtora roku od kiedy dołączyłem do firmy (mid z 4-ketnim doświadczeniem). Aby przejść na seniora musiałem dobrze poznać produkt, model biznesowy, procesy wewnątrz firmy oraz wykorzystywane technologie.
Paweł Dyląg, Senior Android Engineer w Revolut:
W moim przypadku było to około 3 lat pracy w startupie. Przez ten okres pracowałem pod okiem bardziej doświadczonych programistów, co pozwoliło mi w całkiem niedługim czasie zdobyć ogrom praktycznej wiedzy.
Czy to Wy zabiegaliście o to, by przejść na stanowisko seniora? Przełożony powiedział, jak zmieniły się oczekiwania wobec Was po zmianie roli?
Filip Rachwalak, Senior Systems Engineer w F-Secure:
Myślę, że są dwa podejścia, jeśli chodzi o podwyżkę/awans – albo się samemu inicjuje rozmowę z LM’em, albo swoim performancem zmusza się go do awansowania Cię. Oczywiście druga opcja nie zawsze się uda, ale ja osobiście nigdy o awans nie prosiłem (ale też nigdy nie byłem zmuszony, zawsze ktoś dostrzegł moje zaangażowanie) i uważam, że taki sposób na pewno zdecydowanie lepiej smakuje.
Łukasz Kliś, Full Stack Engineer w Coya:
Zacząłem czuć się bardzo pewnie w tym, co robiłem na dany moment, a co za tym idzie chciałem dalej rozwijać swoje umiejętności i podnieść sobie poprzeczkę. Po rozmowie z przełożonym, ustaliliśmy wstępne oczekiwania dotyczące tego, co to znaczy być seniorem w firmie i co dwa tygodnie spotykaliśmy się na tzw. 1-1, gdzie śledziliśmy na bieżąco postępy.
Paweł Dyląg, Senior Android Engineer w Revolut:
Skoro musimy postawić granicę, to szczerze mówiąc na początku tytuł seniora przypisałem sobie sam. Zupełnie nieoficjalnie, i raczej na gębę, gdyż w startupie nie ma takich ścisłych ram jak w korporacjach. Nie mieliśmy specjalnie wytycznych jakie powinien spełniać senior, a nawet junior, czy mid. Liczyło się tak naprawdę, ile wartości ktoś wnosił do zespołu, oraz czy jego wiedza i umiejętności pozwalały rozwijać produkt – tworzyliśmy wtedy parę SDK’ów do Estimote’owych beaconów.
Takim pełnym seniorem z krwi i kości tak naprawdę stałem się dopiero po przejściu rekrutacji na to stanowisko w Revolucie. Oczekiwania tutaj są wysokie, gdyż naszej appki używa ponad 12 mln użytkowników na całym świecie, co ciągnie za sobą ogromny nacisk na jakość i testowalność kodu – coś, czego w małych startupach (i w wielu korporacjach) na próżno szukać.