Kim jest senior developer?

Krzysztof Kempiński
Apr 6 · 11 min read

W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Łukaszem Roth o tym kim jest senior developer.

Posłuchaj naszej rozmowy w wersji audio 🎧 👇

Cześć! Mój dzisiejszy gość to współzałożyciel i CTO Bitnoise. Tata trzech córek, entuzjasta szeroko pojętych nowych technologii, od ponad 18 lat związany zawodowo z branżą IT. Przygodę z programowaniem zaczął od Atari 65XE.

Obecnie współwłaściciel Bitnosie, również w roli CTO. Obserwuje świat It z dwóch perspektyw: inżyniera i biznesu. W wolnych chwilach kupuje gry, w które nie ma czasu grać, marnuje czas przy serialach, a zamiast spać, czyta książki. Bardzo dziwne hobby!

Balansu i czystej głowy szuka na motocyklu i na rowerze. Moim i Waszym gościem jest Łukasz Roth.

Cześć, Łukasz! Miło mi gościć cię w podcaście.

Cześć, Krzysztofie! Dziękuję ci bardzo za to wprowadzenie. Mam nadzieję, że moja perspektywa pozwoli na ciekawą rozmowę i ciekawe spojrzenie na rzeczy, o których będziemy dzisiaj rozmawiać.

No właśnie! Będziemy rozmawiać o temacie trochę z IT, trochę z HR-ów, trochę z różnych punktów widzenia. Mianowicie o tym, kim jest, jak my definiujemy senior developera, jaka jest odpowiedzialność takiej osoby w firmie. Cieszę się bardzo i czekam na tę rozmowę!

Na początek muszę cię przepytać na okoliczność słuchania podcastów, jak to robię z moimi gośćmi. Czy słuchasz podcastów? Może masz jakieś swoje ulubione audycje?

Muszę przyznać, że od podcastów jestem uzależniony z racji tego, że jak typowy człowiek z IT lubię się ze słuchawkami i przy pracy codziennej często siedzę z nimi na głowie i tak mi zostało, więc w chwilach wolnych tak samo, starając się nie marnować czasu.

Natomiast słucham wielu podcastów, jak próbowałem sobie przygotować listę najważniejszych, wyszło mi ok. 30! Żeby więc nie powielać tych, których pewnie słucha więcej osób, bo ja jak inni z naszej branży słucham o biznesie, IT, natomiast mam też trochę rzeczy politycznych, trochę growych, trochę sportowych, natomiast ostatnim moim odkryciem jest bardzo fajny podcast anglojęzyczny, Darknet Diaries. Myślę, że to jest świetna pula bodajże 80 odcinków opowiadających trochę w taki sposób reporterski o zagrożeniach w sieci, o prawdziwych case’ach z włamań, hackingu.

Myślę, że to jest taka rzecz, którą de facto wszyscy powinniśmy posłuchać, a jest to naprawdę profesjonalnie, fajnie zrobione, także szczerze polecam! Super sprawa.

Świetnie, dzięki za tę rekomendację i cieszę się, że nie tylko ja mam podcastoholizm — to jest chyba taka niezdefiniowana jednostka chorobowa, ale widzę, że coraz więcej osób mówi o tym, że jest uzależnionych od słuchania podcastów. Myślę, że bardzo fajna forma do tego, żeby się uczyć, żeby czerpać jakąś rozrywkę.

Cieszę się, że też widzisz w tym wartość!

To jest doskonała alternatywa do ebooków czy audiobooków. Świetne źródło wiedzy.

Pewnie!

Okej! To zacznijmy rozmowę o stanowiskach w IT, które bardzo często definiuje się przez pryzmat lat doświadczenia. Powiedzmy ten junior rok, dwa, później do trzech, czterech mid, pięć i wyżej powiedzmy, senior. To jest najczęściej powielająca się perspektywa, jak sobie spojrzymy np. na oferty pracy. Czy według ciebie to jest dobre podejście do definiowania naszego zaawansowania w branży?

Myślę, że absolutnie nie. Wydaje mi się, że można mieć 10, 15 lat doświadczenia, ale w tak bardzo wąskiej specjalizacji, czyli możemy utknąć w zespole lub też w projekcie, produkcie na wiele, wiele lat. I bezpośrednio nasze doświadczenie wynikające tylko ze stażu pracy, nie będą się przekładały na twoje doświadczenia, na takie holistyczne podejście do projektów, na kontakt z wieloma aspektami naszej pracy, bo dawno się już zmieniła perspektywa tego, że programista jest takim typowym borsukiem, który siedzi przy swojej klawiaturze, nie ma kontaktu z rzeczywistością, natomiast dostarcza fantastyczne linijki kodu.

Myślę, że w kontekście całej tej sytuacji, lata doświadczenia można albo spędzić bardzo produktywnie, albo można je przepalić. Można też nie mieć żadnych aspiracji, bo warto wspomnieć też o tym, że niektóre osoby po prostu lubią w ten sposób swoją działką się zajmować i pewnie ciężko jest mówić o tym, żeby oni zmarnowali w jakiś sposób swój potencjał lat, bo to dla każdej osoby jest co innego, im przynosi satysfakcję i to też jest wartościowe. Natomiast do takiego rozwoju perspektywistycznego w kierunku „seniora” myślę, że same lata nie wystarczą. Myślę, że to jest kwestia dotknięcia przez te lata szerszych aspektów naszej pracy.

Zgadzam się z tym! Skoro zgodziliśmy się, że jest to uproszczenie, to chcę cię zapytać, kim według ciebie jest senior developer i jakbyś mógł w kilku słowach powiedzieć, czym dla ciebie się różni od junior developera?

Dla mnie taka osoba bardzo doświadczona — może niekoniecznie nazywajmy ją „seniorem”, bo konotacje mogą być różne — przede wszystkim wyróżnia się tym, że na projekty, problemy z jakimi spotyka się IT patrzy bardziej holistycznie.

Mamy więc ludzi, którzy nie tylko wiedzą, jak jakąś rzecz zrobić w jakimś konkretnym języku, ale są też świadomi konsekwencji, infrastruktury, są świadomi, co przynosi wartość biznesową, co nie. Potrafią dużo bardziej świadomie podjąć pewne decyzje niż osoba o mniejszym stażu, doświadczeniu.

Mamy więc ludzi, którzy nie tylko wiedzą, jak jakąś rzecz zrobić w jakimś konkretnym języku, ale są też świadomi konsekwencji, infrastruktury, są świadomi, co przynosi wartość biznesową, co nie. Potrafią dużo bardziej świadomie podjąć pewne decyzje niż osoba o mniejszym stażu, doświadczeniu.

Potrafi też na pewno przewidywać potencjalne problemy. Czyli to są zazwyczaj osoby, które są bardzo nielubiane przez biznes, bo często ich pytania są tzw. kłodami pod nogi. Ale to są rzeczy, z którymi ta osoba się wcześniej wiele razy spotkała, przerobił to paręnaście, parędziesiąt razy, wie, o co zapytać, wie co może pójść nie tak.

Z drugiej strony potrafi świadomie odstępować od jakichś zasad, które zostały gdzieś wypracowane. Czyli jeżeli senior ma dowieźć coś na czas, to jest w stanie podjąć świadomą decyzję o tym, że idziemy w danym problemie trochę na skróty lub pomijamy testy. Ale to też odróżnia juniora od seniora, że senior zrobi to świadomie i za jakiś czas będzie w stanie albo do tego wrócić, albo będzie w stanie zdefiniować to na przyszłość, natomiast osoba o młodszym stażu popełnia i robi tak, oby było.

Generalnie nazwałbym to takim holistycznym podejściem do projektów i problemów, natomiast widząc detale to myślę, że drugim ważnym aspektem jest cały szereg miękkich kompetencji plus świadome łamanie zasad. Myślę, że to też jest bardzo ważna rzecz.

Czyli wiem, co robię albo jeśli robię coś niezgodnie z zasadami, to podejmuję to ryzyko i zaciągam ten dług świadomie. Wiem, do czego to może prowadzić, ale mimo wszystko wdrażając różne za i przeciw, podejmuję taką, a nie inną decyzję.

Robimy to też z pełną odpowiedzialnością. Jak podejmiemy taką decyzję, to jesteśmy świadomi konsekwencji, ale jeżeli później pojawi się jakikolwiek problem, to jestem w stu procentach świadom tego, co zrobiłem. Potrafię ponieść konsekwencje. Potrafię też przede wszystkim wytłumaczyć, bo to też jest bardzo ważne.

Właśnie — myślę, że dotknąłeś bardzo ważnego obszaru, a mianowicie odpowiedzialności, jaką można wziąć na siebie. Jako junior ta odpowiedzialność dana mi jest dosyć wąska, mogę, ale nie muszę się poczuwać do tego, żeby brać ją większą, a od seniora oczekuje się tego, że będzie brał większą odpowiedzialność i że będzie w tym świadomy. Myślę, że to też jest jeden z wyróżników, który może nam podpowiedzieć przynajmniej, kto w zespole jest seniorem, mimo tego, że tych lat doświadczenia jeszcze nie ma aż tyle.

Holistycznie patrzy na projekt i bierze tę odpowiedzialność na siebie.

Dokładnie tak. Myślę, że często jest rola nienazwana, sama się kreuje w zespole i wynika trochę z konsekwencji codziennej pracy. Ludzie często sami wybierają osobę, do której idą z pytaniem, z problemem. To też jest wartościowe i trafne, co powiedziałeś.

Skoro tak jest — to efekt nabierania doświadczenia, jakiejś szerszej perspektywy, to domyślam się, że nie ma czegoś takiego, że we wtorek jestem midem a w środę nagle zostałem seniorem, bo doznałem olśnienia.

To zazwyczaj jest ciągły, bardziej rozszerzony w czasie proces.

Wobec tego może się rodzić pytanie: kiedy albo na podstawie jakich czynników, obserwacji, mogę uznać, mogę nazwać siebie seniorem, mogę myśleć o sobie jako senior developer?

Myślę, że to ciekawy temat, bo dla mnie łatka juniora, mida, seniora to jest super charakterystyczne dla naszej wąskiej branży IT, bo ciężko mi sobie wyobrazić chirurga, który przechodzi przez cały proces edukacji i robi potem wszystkie potrzebne staże, dokumenty, formalności, nabywa tego doświadczenia. Potem mamy nagle junior chirurga, któremu pozwalamy się diagnozować, mamy mida chirurga, któremu pozwalam zbadać kolano i mamy seniora, który robi operację na otwartym sercu.

To jest bardzo charakterystyczne dla naszej branży — natomiast myślę, że największy wpływ na tę łatkę czy ocenę seniora ma organizacja, w której się znalazłeś. Jeżeli pracujesz jako programista w startupie, zakładam, że tam nie ma podziału ról. Jeśli jesteś w jakiejś większej organizacji — nie mówię, że coś jest lepsze lub gorsze, myślę, że to jest po prostu definiowane przez daną organizację i przez to dana osoba trafi na jakąś ścieżkę, jakie ma potrzeby, jak chce się rozwijać.

Obserwując to z boku widzę to tak, że większe organizacje bardzo często, tak jak wspomniałeś wcześniej, wprowadzają pewną ścieżkę kariery, wypełniasz odpowiednie — czy nabierasz odpowiednich kompetencji w czasie, przechodzisz wyżej w tabelce i myślę, że organizacja definiuje to, na jakim „poziomie” jesteś.

Natomiast myślę, że to, co jest wartościowe dla mniejszych organizacji, mniejszych zespołów, bardziej elastycznych czy też startupów, to jest to, że ta rola często wynika nie wprost, dzieje się trochę naturalnie, trochę organicznie. W zespołach często wyrastają osoby, które stają się nienazwanym seniorem. Łatwo to poznać. Zazwyczaj jest kolejka do tych osób, są to osoby, które są wypychane na spotkania z klientami. Jeżeli pojawia się jakiś problem, trzeba go omówić, wyjaśnić, wytłumaczyć — czasami jest tak, że w zespole ktoś musi podjąć pewną decyzję i tak jak wcześniej mówiliśmy, ponieść konsekwencje decyzji, to jest to, co moim zdaniem definiuje takiego seniora, osobę dojrzałą w projekcie czy dojrzałego developera.

Tak. Bardzo fajne określenie! Sam lubię myśleć o tym jako o połączeniu dwóch słów. Senior — to rozumiem przez taką dojrzałość życiową i developer — czyli osoba, która ma po prostu jakiś techniczny skill, umiejętności, którymi potrafi się posługiwać.

Chciałbym zacząć od tych umiejętności technicznych. Czy według ciebie jest jakiś uniwersalny ich zestaw czy jakichś obszarów, które taka osoba powinna opanować, którymi powinna umieć się posługiwać, żeby można było o niej powiedzieć, że ma ten skill techniczny na poziomie senior developera?

Całkowicie się zgodzę z twoją tezą. Uważam, że zupełnie naturalnymi umiejętnościami są te, których nabywamy latami. Jeżeli ktoś pracuje przy projektach, siedzi przy komputerze godziny, miesiące, lata, to nabiera pewnych umiejętności technicznych, których nie da się w żaden inny sposób wypracować. Mówię tu o takich rzeczach jak umiejętność korzystania ze swoich narzędzi na komputerze. Ciężko mi sobie wyobrazić dojrzałego develpera, który nie jest biegły w podstawowych narzędziach, z którymi na co dzień pracuje, już pomijając czy to będzie git, IDE czy jakikolwiek edytor tekstu, odrobina infrastruktury, poruszanie się po znanych mu rzeczach. Zakładam, że w tych po prostu powinien być biegły.

Tak samo nie wyobrażam sobie, żeby osoba doświadczona zupełnie naturalnie nie była biegła z pierwszym językiem programowania. Albo nawet nie w pierwszym, ale w takim, w którym aktualnie pracuje, bo to też jest tak, ze zdolności senioralnych — tak jak mówiliśmy wcześniej, związanych z doświadczeniem życiowym, dojrzałością człowieka, natomiast to, w jakim on aktualnie momencie, języku pracuje, to też jest, tak, że nie powinien się zastanawiać czy zaglądać za każdym razem na Stack Overflow, jeżeli ma podstawowy problem, Ale to też nie jest rzecz, której trzeba się uczyć- ona będzie zupełnie naturalna i naturalnie, z konsekwencją tego, w jaki sposób my pracujemy czy co robimy na co dzień, jak ta osoba… Z czym spędza czas!

I wydaje mi się — to już jest znowu trochę z pogranicza technologii, trochę spraw miękkich. Zakładam, że ta osoba przez lata dotknęła wielu aspektów, nawet tych, w których nie jest jakimś ekspertem, to jest w stanie na te tematy się wypowiedzieć, przeprowadzić rekrutację na inne stanowisko niż to, na którym on pracuje czy nawet język, technologia — po prostu ma ogólne o niej pojęcie i z niejednego pieca jadł chleb w swoim życiu i pracował przy różnych stackach, z różnymi klientami, problemami, więc na poziomie narzędziowym to jest osoba, która nie powinna mieć już żadnych problemów z takim szeroko pojętym podejściem do technologii.

Zgodziłbyś się, że można taką osobę nazwać jako doskonałego rzemieślnika? Osobę, która ma te narzędzia na tyle opanowane, że potrafi się nimi sprawnie posługiwać na co dzień?

Myślę, że tak. Że właśnie to też na poziomie takim narzędziowym już, bo to jest to, co odróżnia osobę, która generalnie siada do komputera i może być nawet super fajnym gościem, który przepracował X czasu w jakimś swoim IDE, ale nagle okazuje się, że w firmie mamy zupełne inne narzędzia i ta osoba już ma problem, żeby się na coś przestawić, natomiast osoba, która przez lata pracowała z różnymi narzędziami po prostu ma dużą zdolność i łatwość do tego, żeby chociażby zmieniać swój stack, narzędzia czy ogólnie „poruszać się na komputerze”.

Kilka razy z twoich ust padło określenie „umiejętności miękkie”. Spotykam się z tym, że coraz częściej mówi się o nich jako „power skills” — mogą być mocarne i faktycznie nieraz nawet przeważające.

Jak to jest z tymi umiejętnościami, jeśli chodzi o seniora? Powiedziałeś, że może się zdarzyć, że biznes często wypycha taką osobę do spotkań z klientami, ponieważ potrafi się dogadać, porozumiewać, przedstawić pewne pomysły w zespole, namówić ludzi. Cały szereg umiejętności.

Jestem ciekaw, jak ty na to patrzysz. Jeżeli kogoś rekrutujesz do zespołu, czy bierzesz to pod uwagę?

Myślę, że najciekawszym odniesieniem może być powrót do moich początków pracy jako programista. Nigdy nie byłem też wybitnym programistą, ciężko byłoby mi nazwać się seniorem nawet gdy startowaliśmy w Bitnoise we dwójkę z Adrianem, 12 lat temu.

Myślę, że moją mocną stroną było to, że zawsze starałem się robić rzeczy, które rozumiałem, więc dla mnie zrozumienie biznesu i taka naturalna rozmowa z klientem o tym, co będziemy wdrażać, dlaczego będziemy to robić i przed podjęciem jakichkolwiek decyzji starałem się w pełni zrozumieć scope rozmawiając z klientem. Myślę, że to było moją mocną stroną na początku, tak samo, jak startowaliśmy w Bitnoise byłem jedynym programistą. Zostałem wypchnięty do tego, żeby przedyskutować pewne rzeczy z klientami. Myślę, że tej senioralności nabierałem z czasem, więc myślę, że to jest super ważne.

Z perspektywy czasu, jeżeli miałbym określić osobę dojrzałą w tej chwili na rynku pracy, nawet w momencie, kiedy by ktoś rozglądał się za zmianą swojego miejsca, to bym to podzielił w proporcji 70:30. Myślę, że 30% umiejętności osoby dojrzałej w tej chwili to powinna być przede wszystkim umiejętność definiowania problemów, wytłumaczenia technologii — myślę, że to też jest super ważna rzecz, czyli dla nas pewne rzeczy, skróty myślowe są bardzo zrozumiałe w wewnętrznym środowisku, natomiast w momencie, kiedy idziemy porozmawiać z jakimś inwestorem, klientem czy chociażby project managerem wewnątrz organizacji — super ważne jest to, żeby rozumiał, o czym do niego mówimy i żebyśmy potrafili używać takich słów i sformułowań, i takich porównań do różnych rzeczy, żeby to dla nich też stawało się zrozumiałe.

Myślę, że to super ważne i bardzo podoba mi się twoje nazwanie tego zestawu umiejętności, bo całkowicie odpowiada moim zdaniem na potrzeby rynku i tego, jak teraz postrzegany powinien być dojrzały programista, który jest super wartością nie tylko dla zespołu, ale też całej organizacji.

Jak przeprowadzam rekrutację, myślę, że podobnie szukam takiego zestawu umiejętności, ale zastanawiam się, może czysto teoretycznie — czy wyobrażasz sobie osobę, która 10 lat pracuje w danej firmie. Zna cały stack technologiczny, produkt, infrastrukturę, wszystko w małym palcu — też mogą się do takiej osoby ustawiać kolejki, bo po prostu ona jest ekspertem i doskonale zna te umiejętności, a mimo wszystko trudno się z nią dogadać i raczej jest to zawsze problematyczne, czyli ten zestaw umiejętności miękkich jest na niskim poziomie.

Czy dla ciebie taka osoba — ekspert technologiczny z pewnym niedosytem umiejętności miękkich to jest senior developer czy raczej inaczej byś ją określił?

Myślę, że to jest ekspert. Oddzieliłbym wysoko wykwalifikowanego eksperta, natomiast zdarzało się nam też w historii, przy rozmowach rekrutacyjnych wręcz odrzucić osoby, których było szkoda eliminować z procesu rekrutacji, bo mieliśmy świadomość podczas rozmowy, że jego umiejętności techniczne, wiedza czy umiejętności rozwiązywania problemów jest ponadprzeciętna, natomiast brakowało w tym wszystkim uzupełnienia tej osoby o pasujące do naszej, małej, elastycznej organizacji tych wszystkich umiejętności, które my sobie cenimy, czyli dzielenia się wiedzą, pomagania innym, konsultowania swoich rozwiązań.

Byłbym daleki od tego, żeby nazywać takie superstar developers seniorami, bardziej bym ich traktował na zasadzie ekspertów, którzy są super wartościowi w pewnych rodzajach zespołów, natomiast dla mnie to nie jest osoba senioralna, w moim pojmowaniu tego stanowiska, bo brakuje mu wszystkich miękkich zestawów narzędzi, które są super ważne.

Byłbym daleki od tego, żeby nazywać takie superstar developers seniorami, bardziej bym ich traktował na zasadzie ekspertów, którzy są super wartościowi w pewnych rodzajach zespołów, natomiast dla mnie to nie jest osoba senioralna, w moim pojmowaniu tego stanowiska, bo brakuje mu wszystkich miękkich zestawów narzędzi, które są super ważne.

👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-109-kim-jest-senior-developer/

kkempin’s dev blog

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.

Krzysztof Kempiński

Written by

IT expert. Ruby on Rails/iOS/Elixir programmer. Blogger. Podcaster.

kkempin’s dev blog

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.