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.

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