Dylemat "seniora" - w jakim kierunku się rozwijać.

1

Hej,

Jako że ostatnio często nachodzi mnie poczucie, że w swojej karierze zawodowej dotarłem do rozdroża, powstanowiłem opisać swoją sytuację i wrzucić ten opis na forum. Może ktoś coś podpowie.

Mam 35 lat i kilkanaście lat doświadczenia. Jestem programistą z zamiłowania. Zaczynałem jeszcze w liceum. Później studia informatyczne i w trakcie studiów pierwsza praca. W obecnym miejscu pracy jestem już prawie 10 lat. Jest to pewne korpo we Wrocławiu.
Początkowo głównie programowałem w C++ na różne platformy, później trochę w Javie na Androida. Ostatnio zajmuje się przeważnie uczeniem maszynowym aka ML), gdzie jest dużo protoypowania w Pythonie.

Tu dochodzimy do sedna sprawy - otóż w ML zostałem niejako wrzucony i choć próbuję nadrabiać wiedzę we własnym zakresie, to mam poczucie, że ta moja wiedza wciąż jest fragmentaryczna, pełna uproszczeń i black boxów. Kojarzę czym jest regresja liniowa, logistyczna, jak działają DNNy itd. ale jakbym miał to zakodzić mając tylko numpy do dyspozycji, to pewnie poległbym z kretesem.

Z drugiej strony, mam wrażenie, że zajmowanie się projektami "proof of concept" gdzie często trzeba na szybko odpalić prototyp, przeskakuje się między technologiami, i nikt się zbytnio nie przejmuje dobrymi praktykami wytwarzania oprogramowania, sprawia, że podupadam jako programista. Nie mam czasu na wgłębianie się w nowe ficzery C++ czy dobre praktyki Pythona, bo co rusz cisną mnie terminy, a czas i zasoby pochłaniają próby ogarnięcia tajników ML.

Tak że mimo tego całego doświadczenia, nie czuję sie ani data scientistem i machine learning expertem, ani guru od architektury softu, znającym na wylot 5 języków programowania i wszystkie wzroce. Coraz częściej nachodzi mnie myśl, że nie pożenię jednego z drugim. Trzeba iśc albo w ML albo w software engineering. Niestety nie jestem genialny i zrozumienie matematyki lezącej u podstaw uczenia maszynowego to dla mnie duże wyzwanie. Zawsze lepiej szło mi chwytanie nowych technologii, bibliotek, jezyków programowania. I lubię to. Ale ponoć nie idzie programować przez całe życie zawodowe. Wraz z nabywaniem doświadczenia rośnie presja żeby iść w zarządzanie. Więc, kombinuję sobie, może jednak ten ML byłby tutaj wyjściem, żeby wymigać sie od liderowania, a jednocześnie nabyć cenne na ryku pracy twarde skille.... Taki oto mam dylemat.

Co zrobić, żeby było dobrze? :)
(A przynajmniej, żeby za kilka kolejnych lat nie obudzić się w zawodowej czarnej dziurze).

4

Tu dochodzimy do sedna sprawy - otóż w ML zostałem niejako wrzucony i choć próbuję nadrabiać wiedzę we własnym zakresie, to mam poczucie, że ta moja wiedza wciąż jest fragmentaryczna, pełna uproszczeń i black boxów. Kojarzę czym jest regresja liniowa, logistyczna, jak działają DNNy itd. ale jakbym miał to zakodzić mając tylko numpy do dyspozycji, to pewnie poległbym z kretesem.

Na na ML nieznam się w ogóle, ale byłem kiedyś na konferencji w Gliwicach gdzie człowiek kodzący coś dla satelit mówił że zawsze chciał napisać własną bibliotekę do MLa, ale taką zupełnie od podstaw. I zawsze poległ na tym, że nie umie napisać własnej biblioteki do liczenia pochodnych/całek/różniczek (już nie pamietam dokładnie). Puenta jest taka że jak nie umie tego zrobić człowiek piszący soft dla satelit no to chyba jest to bardzo trudne :)

Ale ponoć nie idzie programować przez całe życie zawodowe. Wraz z nabywaniem doświadczenia rośnie presja żeby iść w zarządzanie.

Co innego programujący leader, a co innego manago. Ja manago być bym nie chciał. Zresztą w firmie w której pracuję chyba nawet ich nie ma. Odpowiadam bezpośrednio przed dyrektorem. Więc może ta presja też zależy od rodzaju firmy?
Co do programującego leadera to w tej chwili mam tylko programującego architakta nad sobą (zespół jast bardzo mały), więc tam gdzie pracuje nawet presji żeby awansować mieć nie można bo nie ma gdzie awansować :D

9

Niestety nie jestem genialny i zrozumienie matematyki lezącej u podstaw uczenia maszynowego to dla mnie duże wyzwanie.

Taki tekst słyszę najczęściej od osób, które nie umieją w temacie kompletnie nic i chciałyby od razu zrozumieć to, co jest na końcu. A pomiędzy jest jeszcze sporo do nauczenia. Pewnie dlatego nie rozumiesz ML.

Nie mam czasu na wgłębianie się w nowe ficzery C++ czy dobre praktyki Pythona, bo co rusz cisną mnie terminy, a czas i zasoby pochłaniają próby ogarnięcia tajników ML.

Nie bardzo wiem co odpowiedzieć osobie, która nie ma czasu na naukę. Tkwić w tym samym źle. Uczyć się też źle.

2
mirkp napisał(a):

Tu dochodzimy do sedna sprawy - otóż w ML zostałem niejako wrzucony i choć próbuję nadrabiać wiedzę we własnym zakresie, to mam poczucie, że ta moja wiedza wciąż jest fragmentaryczna, pełna uproszczeń i black boxów. Kojarzę czym jest regresja liniowa, logistyczna, jak działają DNNy itd. ale jakbym miał to zakodzić mając tylko numpy do dyspozycji, to pewnie poległbym z kretesem.

Po prostu spróbuj zaimplementować regresję liniową czy algorytmy uczenia maszynowego i liczenia błędu. Wbrew pozorom nie jest to coś mocno skoplikowanego. Sam zagłębiając temat ML tworzyłem sobie prototypy sieci w excelu i porównywałem czy mam taki sam rezultat jak w artykułach. Potem przepisywałem to na c#. Najtrudniejsza rzeczą jaką spotkałem to regresja wielomianowa metodą najmniejszych kwadratów - tu już nie jest tak prosto :p

5

@mirkp: co znaczy "zostałem wrzucony", kurcze rodzice Ci kazali czy jak? a ta presja żeby iść w zarządzanie to skąd? Siedzisz w korpo i uważasz że doradzą Ci mając na uwadze Twoje dobro? Nie , dobro korpo i kolesiów jest ważne

4

W obecnym miejscu pracy jestem już prawie 10 lat. Jest to pewne korpo we Wrocławiu.

w ML zostałem niejako wrzucony

Trzeba iśc albo w ML albo w software engineering

IMHO zasiedziałeś się w jednej firmie.

We Wrocku jest masa firm, z ML, bez ML, ot wybierz sobie coś świeżego i fajnego dla siebie i Twoje problemy znikną.

Nie mam czasu na wgłębianie się w nowe ficzery C++

Nie chcę robić flame, sam jestem programistą C++, ale po co to komu, skoro C++ to głównie legacy code, gdzie tych nowości i tak nie ma? :-)

4

Ale ponoć nie idzie programować przez całe życie zawodowe. Wraz z nabywaniem doświadczenia rośnie presja żeby iść w zarządzanie. Więc, kombinuję sobie, może jednak ten ML byłby tutaj wyjściem, żeby wymigać sie od liderowania

Nie za bardzo rozumiem tę logikę. Piszesz tak jakby pójście w ML miało być krokiem na przód (po drabinie kariery) jednocześnie zapewniając Ci możliwość dalszego zajmowania się programowaniem, a jako alternatywę stawiasz zajmowanie się innym rodzajem programowania (bardziej biznesowe jak mniemam), architekturą oprogramowania itp. Tyle tylko że pójście w ML to nie jest krok w przód, tylko w bok. Nie sprawia że nagle awansujesz po drabinie kariery programisty, równie dobrze mógłbyś pójść w game dev i też tam być programistą. To po prostu inny rodzaj oprogramowania i cała otoczka z tym związana.

Poza tym dla czego masz presję aby iść w zarządzanie? Jeśli pisanie kodu sprawia Ci przyjemność to rób to dalej, ewentualnie zmień pracodawcę żeby dostać lepsze zarobki.

No chyba że pisząc "zarządzanie" masz również na myśli że nie chcesz być architektem itp. Ale wtedy wracamy do tego co napisałem wyżej- rób dalej to co lubisz i tyle.

1

Cześć,

Dzięki wszystkim za odpowiedzi.

Pociągnę jeszcze temat, żeby rozjaśnić (mam nadzieję) Wam i sobie, o co mi chodzi.

Po pierwsze, co tak naprawde chciałbym robić? Odpowiedź brzmi: siedzieć w zacisznym kąciku i rozwiązywać problemy techniczne. Na przykład: potrzebujemy komponentu, który robi X - zaprojektuj i zaimplementuj. Coś nie działa/wolno działa/źle działa - znajdź przyczynę i popraw. I tak dalej. Nie zrozumcie mnie źle. Rozumiem, że budowanie softu to praca zespołowa i trzeba się komunikować, robić review, integrować różne rzeczy, dyskutować. Mimo że nie są to moje ulubione elementy pracy programisty, to rozumiem ich potrzebę i je akceptuję. Czego nie mógłbym zdzierżyć, to praca polegająca głównie na dyskusjach z klientem i zespołem, rozdzielanie zadań, monitorowanie zadań, reklamowanie projektu, rekrutowanie i tak dalej. To jest to "zarządzenie" którego chciałbym uniknąć. A czuję, że z kolejnymi latami doświadczenia i siwymi włosami (albo ubywaniem włosów) na głowie, jest coraz większe oczekiwanie, że programista odejdzie od programowania na rzecz wspomnianego zarządzania. Nie upieram się, że to jakaś ogólna zasada. Po prostu tak to widzę, tu gdzie jestem.

Zdaje się, że to co opisałem jako rzeczy które lubię robić, pasuje bardziej pod specyfikę pracy na levelu "mid", a nie "senior". No i spoko. Czy mogę się po prostu trzymać tego co lubię? Oczywiście. Problemy są następujące: zamrożenie zarobków i spadająca konkurencyjność na rynku pracy. Raz, że chciałbym zarabiać kiedyś te mityczne kilkanaście tysięcy na rękę, a dwa - obawiam się że gostek 40+ który zajmuje się głównie kwestiami czysto technicznymi, tak jak je wyżej opisałem, jawi się pracodawcy jako ktoś dziwny; mając do wyboru takiego gościa albo "młodego dynamicznego", wiadomo, kogo wybierze. Doświadczenie nie pomoże.

Wymyśliłem zatem, że rozwiązaniem, które pozwoli mi pozostać blisko kwestii czysto technicznych, jako indywidualny kontrybutor do projektu, a przy tym uniknąć wspomnianych problemów, jest dopakowanie ściśle technicznej wiedzy domenowej. Tu pojawia się temat Machine Learningu. Moje wyobrażenie jest takie, że kombo wiedzy o budowaniu softu z wiedza o tworzeniu modeli ML jest na tyle cenne i rzadko spotykane, że ktoś taki może dyktować warunki i jak nie będzie chciał, to nikt mu nie będzie zawracał głowy zarządzaniem.
Tylko, niestety, czas płynie, a ja czuję, że mimo wysiłku włożonego w uczenie się uczenia maszynowego, nadal jestem w temacie cienki. Co gorsze - im więcej pary ładuje w zgłębianie ML, tym bardziej oddalam się od kiedyś mi bliskiego świata inżynierii programowania, wzorców projektowych, dobrych praktyk, różnych nowinek. Więc, myślę sobie, może porwałem się z motyką na słońce jeśli chodzi o to uczenie maszynowe. Może trzeba trzymać się tego co zawsze lubiłem i co ponoć szło mi nieźle - budowania softu. Podszkolić się z nowych standardów C++ i Pythona, bibliotek, narzędzi i wrócić na rynek pracy. Ale czy nie skończy się to tak, że za kilka lat okaże się że nikt nie chce mnie zatrudnić....

Long story short, jak to zrobić, żeby do późnej starości móc sobie spokojnie grzebać w kodzie i nieźle przy tym zarabiać?

5
mirkp napisał(a):

Mam 35 lat i kilkanaście lat doświadczenia.

chciałbym zarabiać kiedyś te mityczne kilkanaście tysięcy na rękę

Zmień pracę.

jak to zrobić, żeby do późnej starości móc sobie spokojnie grzebać w kodzie i nieźle przy tym zarabiać?

IMO dobić jak najszybciej do mniej więcej sufitu zarobków, a potem się tam zasiedzieć xd

8

pasuje bardziej pod specyfikę pracy na levelu "mid", a nie "senior"

Co? o_O

obawiam się że gostek 40+ który zajmuje się głównie kwestiami czysto technicznymi, tak jak je wyżej opisałem, jawi się pracodawcy jako ktoś dziwny

Co? o_O

Pracuje i pracowałem z ludźmi 50+ którzy zajmują się kwestiami technicznymi i generalnie za granicą to nie jest nic dziwnego. Nie ma tylu pozycji dla dyrektorów i managerów żeby wszystkich starszych developerów tam upchnąć i zresztą nie miałoby to często żadnego sensu. Ścieżka managera jest równoległa do ścieżki inżynierskiej - nie jest jakimś awansem.

Oczywiście w CRUDowni jasne że nie potrzeba ludzi z 30 letnim doświadczeniem i lepiej wziąć skończoną liczbę studentów którzy umieją najnowszy hipsterski frameworki. Trochę inaczej sytuacja wygląda kiedy robisz projekt za milardy euro, jakieś systemy krytyczne, które np. mają działać przez wiele lat. Takich pozycji:

nie zapełnisz sobie młodym dynamicznym bo ktoś bez 10-15 lat doświadczenia zwyczajnie fizycznie nie będzie w stanie spełnić stawianych wymagań (bo np. dowolny projekt kosmiczny ciągnie się powiedzmy 10 lat żeby widzieć full lifecycle a tu masz mieć już doświadczenie z różnymi fazami takich projektów).
Jak jesteś doświadczonym technicznym seniorem to uderzaj albo na jakieś architekta/tech leada do normalnej firmy (ale takich pozycji będzie na rynku mało, bo fizycznie takich ludzi trzeba w firmie niewiele) albo uderzaj gdzieś gdzie robią R&D czy jakieś złożone systemy i potrzebują całe zespoły takich seniorów.

2
mirkp napisał(a):

Niestety nie jestem genialny i zrozumienie matematyki lezącej u podstaw uczenia maszynowego to dla mnie duże wyzwanie.

Jeśli nie rozumiesz matmy, znaczy, że masz niedopasowane źródła wiedzy. Zmień podręcznik albo zacznij się uczyć z Youtube (najlepiej po angielsku). Zrozumienie matematyki było problemem z 10-20 lat temu, ale nie dzisiaj, kiedy wszystko jest w necie, tłumaczone na tysiąc różnych sposobów, do wyboru do koloru. Choć matmy lepiej uczyć się w swoim tempie, a nie gnać z materiałem bez zrozumienia.

Raz, że chciałbym zarabiać kiedyś te mityczne kilkanaście tysięcy na rękę,

Sam pan prezydent daje ci rozwiązanie:

Jak masz kilkanaście lat doświadczenia, to i kilkanaście tysiaków się należy ;) Ale serio, w końcu chyba jakieś skille nabyłeś przez ten czas, które byłyby tyle warte na rynku? No chyba, że się zasiedziałeś w jednym schemacie i twoje kilkanaście lat doświadczenia to 1 rok powtórzony kilkanaście razy?

2

Skoro nie zarabiasz tych mitycznych 15k to ja na Twoim miejscu zrobiłbym rachunek sumienia co w Twojej karierze poszło nie tak.
Sorry, byle przeciętny MID javy na spokojnie wyciągnie w okolicach 10k lub więcej na rękę (czasem UoP czasem B2B ale jednak).

Może to technologia (C++), może to zastanie w jednej firmie (osobiście stawiałbym na to najbardziej).
Powodzenia ;)

8
RequiredNickname napisał(a):

Może to technologia (C++), może to zastanie w jednej firmie (osobiście stawiałbym na to najbardziej).
Powodzenia ;)

Jest też trzecia opcja. Niezauważenie że stawki w IT znów poszły do góry. Znajomy dwa miesiące temu negocjował pensję w nowej firmie. Wynegocjował, a potem znów artykuł Stawki w IT poszły o 20% procent do góry i jego reakcja Nosz kur'a, mogłem chcieć jeden tysiąc więcej

Więc może zamiast pytać o rady w co iść to warto wysłać pare CV i sprawdzić jaka jest twoja aktualna wartość na rynku? Możliwe że w firmie obok dostaniesz 50% więcej za to samo

2

Jak nie chcesz bawić się w ML to się nie baw, nic prostszego nie przychodzi mi na myśl. Jeśli nie możesz robić tego co lubisz w obecnej firmie to chyba czas odświeżyć cv.

0

To znowu ja - OP.

Postanowiłem rozesłać CV i sprawdzić co się stanie. Po tylu latach, to dziwne uczucie.

Pocieszam się, że przez te lata, choć w jednym miejscu, to jednak robiłem różne rzeczy: brałem udział w kilku projektach, używałem różnych technologii.
Z drugiej strony, tkwiłem w roli indywidualnego kontrybutora i skutecznie wymigiwałem się od liderowania.

Gdzie mnie to stawia? Cóż, pozostaje sprawdzić.

Zastanawiam się, czy da się pogodzić tytuł seniorski z brakiem umiejętności i zapału do przewodzenia zespowi.
Ja po prostu najbardziej lubię, jak dostaje coś do zrobienia - projektowanie i implementację - i mogę się na tym skupić.

Jak jest u Was, czy "senior" oznacza, że ktoś w praktyce jest liderem technicznym?

1
mirkp napisał(a):

Zastanawiam się, czy da się pogodzić tytuł seniorski z brakiem umiejętności i zapału do przewodzenia zespowi.

Da się :) Wystarczy znaleźć zespół gdzie jest kilku seniorów i tylko jeden lider

2
mirkp napisał(a):

Jak jest u Was, czy "senior" oznacza, że ktoś w praktyce jest liderem technicznym?

W sensownych firmach, gdy ktoś ma być liderem, to ma w nazwie stanowiska lider. To czy lider ma kompetencje, czy zastępują go inni, to jakby inny temat, ale znowu w sensownych firmach raczej się takie rzeczy nie dzieją. No i lider techniczny nie potrzebuje zapału do przewodzenia. Lider techniczny to nie team leader.

1

Tym „liderowaniem” to bym się umiarkowanie przejmował. Pytanie na ile przez te 10 lat się rozwinąłeś, a na ile, pardon my French, „przechowywałeś w korpo”. Jeżeli jesteś w stanie szybko znajdować potrzebne informacje i klarownie się komunikować to raczej bym się nie martwił za bardzo, skakanie po technologiach też nie musi być wadą, aczkolwiek brak jakiejkolwiek wyraźniejszej specjalizacji już tak.

@Shalom

Ścieżka managera jest równoległa do ścieżki inżynierskiej - nie jest jakimś awansem.

Ośmielę się nie zgodzić. To naprawdę bardzo potrafi zależeć od specyfiki firmy i bynajmniej nie mówimy tu o CRUDziarniach.

5

obawiam się że gostek 40+ który zajmuje się głównie kwestiami czysto technicznymi, tak jak je wyżej opisałem, jawi się pracodawcy jako ktoś dziwny

Nie martwiłbym się o to specjalnie, bo i tak niedługo nie będą mieli specjalnego wyboru. Nadchodzi kryzys demograficzny w "zachodnich" krajach więc jak będziesz dobijał do 50 to programiści 40+ to będzie normalne zjawisko. Jako milenials jesteś teraz z końcówki wyżu demograficznego jako dziecko/wnuk pokolenia powojennego, dlatego masz trochę zaburzone postrzeganie co do średniej wieku w firmach. Już jakieś 10 lat temu rozkład dwudziestolatków do trzydziestolatków w moim zespole układał się pół na pół, w moim obecnym projekcie samych technicznych osób mamy jednego typa dwa lata po studiach, pięciu po 30, trzech po 40 i jednego po 60 :) Także średnia wieku w branży będzie się przesuwać, chyba, że zachodnie firmy masowo zaczną zatrudniać studentów z indii lub chin.

0

Zdziwiło mnie że część osób wskazywało technologię jako przeszkodę.
Czy w C++ w porównaniu do innych języków zarabia się mniej?

2

@mirkp:
Moim zdaniem Twoja wartość jest sumą trzech składowych:
umiejętności x znajomości x umiejętność sprzedaży
wzór nigdy nie potwierdzony i nie poprawny żadnymi badaniami

Jak się nie rozwijasz to inna osoba, która się rozwija Cię wyprzedza.
Jak nie chodzisz na meetupy, konferencje, nie znasz ludzi ciężej będzie Ci znaleźć ofertę jak nie masz znajomych o podobnym profilu.
Jak nie umiesz się sprzedać to trudniej będzie Ci wynegocjować dobrą stawkę

Taka moja opinia :)

1

Mam 35 lat i kilkanaście lat doświadczenia.
Raz, że chciałbym zarabiać kiedyś te mityczne kilkanaście tysięcy na rękę

Dziwne, w jakim mieście pracujesz?
W #warszawa już 3 letnim midom dają po 12-16k na fakturze.
Nie czai się i wołaj 20k.

Mam 2 lata dośw. i jak zawołałem 12 k na fakturze to zaproponowali 13.
W innej rekrutacji zawołałem 10k brutto uop to rekruter kazał mi je zwiększyć na 10-14, a w obecnej firmie wołałem 10k brutto uop i dostałem 13.

Wcale nie jestem jakiś super, jestem przeciętniak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1