fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
8 minut

Z maila: jak pokierować dalszą karierą?


21.01.2016

Regularnie przez lata dostaję od Was masę maili z pytaniami o karierę programisty. Jak zacząć, jak kontynuować, jak rozwijać… i tak dalej. Raz odpowiedziałem na taką wiadomość postem na blogu (“Początki mojej “kariery” – odpowiedź na maila“) i właściwie nie wiedzieć czemu nie kontynuowałem takiego podejścia. Dzisiaj zatem następna porcja takiej konwersacji.

Życzę miłego zaglądania mi przez ramię w skrzynkę e-mailową!

Pracuję na uczelni jako programista Javy. Klepiemy JavaFX i Swing czyli archaizmy. Sporo się przy tym sam nauczyłem (design patterns, czytelny kod, trochę bibliotek), ale od co najmniej roku się nie rozwijam. Definitywnie pora na zmianę!

Zdecydowanie! :)

Code geekiem nie byłem. Kodować lubię, na zajęciach zawsze wszystko idealnie robiłem, nierzadko po nocach, bo sprawiało mi to frajdę. Lepiej i więcej niż inni – to było moje motto :D Do tej pory tworzę własne projekty od czasu do czasu, ale nie dłuższe niż 2-tygodniowe i dalekie jakością od porządnego produkcyjnego kodu (czesto niedokończone, niedopracowane itp).

Z projektami pobocznymi tak właśnie jest – dopóki ktoś za nie nie płaci to albo ich się nie kończy albo robi często byle jak :). Z drugiej strony – jeśli nikt nie płaci to nikt nie wymaga terminów, więc można poszaleć przy “jakości”, co niestety często skutkuje “niedokończeniem”. Ale w tym akurat nie ma niczego złego, w końcu robi się to dla funu.

Nie wchodząc zbytnio w psychologię od dawna miałem jednak problem z podejmowaniem trudnych wyzwań. Nagle kumple zrobili się profesjonalistami a ja zostałem… Ale dziad z tym :D. Nie ma co lamentować, trzeba to zmienić. Poduszkę finansowa mam na około 1 rok, wiec nie ma dramatu. Pytanie jak ten czas wykorzystać najkorzystniej.

Najważniejszą decyzję – “czas na zmianę” – masz za sobą. A jeśli możesz sobie pozwolić na rok “kształcenia się we własnym zakresie” to już w ogóle szczęście za nogi złapałeś, pora je wycisnąć. Moje dwa ulubione słowa: DO ROBOTY! :).

Opcja 1 – nauka pod pracodawcę. W moim przypadku JavaEE – ogromne monstrum, które nie wiem jak i gdzie ugryźć. Znam Javę, to plus. Ale ilość nauki sugeruje, że długo nie będę produktywny i długo nie napiszę czegoś z czego mógłbym sobie korzystać na co dzień. Poza tym nauka pod pracodawcę “bo tego szukają” daje mniej fanu i średnio mi się widzi. Ale za to masa miejsc pracy i po latach chyba duża satysfakcja z tworzenia skomplikowanych rzeczy i pracy z kumatymi ludźmi :D

Ja z Javą nie mam wielkiego doświadczenia, ale chwilę przy tym dłubałem i… z samą Javą nie chciałbym mieć więcej do czynienia, o EE już nie wspominając :). Najbardziej enterprajsowy szajs jaki widziałem, nie przebranżowiłbym się nawet gdyby płacili 150% pensji. Ale z drugiej strony: co ja tam wiem, skoro na co dzień w tym nie siedzę. To tak jak Javowcy krytykujący .NET, krzyczący że jest 5 lat za Javą. A dopiero co sami dostali w języku lambda expressions. C# jako język mocno się rozwija i ja z chęcią przy nim zostanę.

A praca przy skomplikowanych rzeczach z kumatymi ludźmi to taki trochę święty graal, w “enterprajsie” często praca polega na utrzymaniu starych systemów, poprawianiu błędów i dolepianiu nowych ficzerów – byle jak, aby działało, na siłę. Podczas rekrutacji nikt Ci tego nie powie, ale tak wygląda większość braży (i to nie tylko jeśli chodzi o Javę, w .NET jest podobnie).

Nie wiem z jakiego miasta jesteś, ale nawet w moim Białymstoku nie tylko Javowiec czy .NETowiec łatwo pracę znajdzie. Tym bardziej w większych miejscowościach nie trzeba raczej pod tym kątem wybierać technologii do nauki. Chociaż jakiś szybki research nie zaszkodzi. Najlepiej wybrać się na spotkanie grupy pasjonackiej/meetup, jeśli jest coś takiego organizowane, i tam zapoznać i podpytać ludzi jak wygląda lokalny rynek.

Opcja 2 – Android i urządzenia mobilne… To jest to co kusi mnie niesamowicie. Perspektywa posiadania przy sobie apki własnego autorstwa z której również inni mogą korzystać jest mega! Myślę jednak, ze programista Android bez solidnej wiedzy z zakresu funkcjonowania porządnego webdevelopmentu, webaplikacji i całego tego backgroundu jest jakby trochę wybrakowany. A może się mylę? Może to niezdrowy perfekcjonizm? :D

To parę lat temu też mnie strasznie kusiło, ale nigdy się nie zdecydowałem. I właściwie nie żałuję. Patrząc na jakość wielu appek na androida – strasznie ciężko jest zrobić coś dobrego. A jeszcze żeby działało na pierdylionie różnych telefonów i różnych wersji systemu – to musi być masakra. Nigdy nawet nie próbowałem, ale m.in. dlatego wolę webdev niż desktopowe czy mobilne aplikacje, bo muszę wspierać tylko kilka przeglądarek/rozdzielczości, a nie milion różnych urządzeń jak na androidzie :). Finalnie nie zdecydowałem się nawet spróbować bo doszedłem do wniosku, że takie dostosowywanie aplikacji do różnych durnych wymogów sprzętowych ORAZ zmiennych rekomendacji Google zabiją całą przyjemność z pisania własnej appki. Nie zamierzam do tego tematu wracać w przyszłosci, chociaż nie lubię rezygnować z czegoś nawet nie próbując. Jednak tutaj jestem mocno przekonany, znając siebie, że mam rację :).

Opcja 3 – Webdevelopment. PHP, JS, HTMLCSS, Frameworki, Python, RubyRails, Sencha, Django, webservicy itp… Też kuszące. Widać szybko efekty pracy a w połączeniu z Androidem, daje extra możliwości. Do tego dość przejrzysta ścieżka rozwoju.

Ja bym w to szedł, tak jak poszedłem lata temu (chociaż u mnie to po prostu bardziej aplikacje serwerowe/usługi, a UI webowe to dodatek). Ja robię w .NET, ale to powinno być fajne w czymkolwiek (poza javą ;) ).

Każda opcja nie jest mi jakoś totalnie obca. W każdej mógłbym ustalić sobie jakąś ścieżkę rozwoju, poszukać mentoringu (oczywiście cały czas szukając pracy w temacie bo to jest max korzyść zawsze).
Co byś poradził? Czy ucząc się, iść za głosem serca i ogarniać to co daje od razu fan i budzi zaciekawienie (nieprzewidywalny romans) czy realistycznie analizować rynek i podpasować się pod jego potrzeby (małżeństwo z rozsądku które może nabierze kolorów? :D)

Niezależnie od tego co wybierzesz – mając X buforu finansowego i chcąc się po prostu poduczyć, szukaj praktyk! Nawet bezpłatnych przez pierwszy kwartał. Powinieneś znaleźć bez problemu, a mając, bądź co bądź, doświadczenie w programowaniu, nawet na “płatnego” juniora przy odrobinie szczęścia się załapiesz. Pisz CV i wysyłaj, wysyłaj!

Czy np na stanowisko junior .NET developera (Twoja branża) przyjąłbyś świeżaka z podstawową i suchą znajomością C#/VB oraz platfromy .NET czy raczej gościa piszącego w wolnym czasie apki mobilne na WindowsPhona, z których kilka już opublikował i ktoś nawet z nich korzysta?

Mam nadzieję – z różnych przyczyn – że do tego nie dojdzie, tzn. że nie będę musiał zatrudniać junior developerów :). Ale jeśli bym szukał juniora to dla mnie ważniejsze jest praktyczne doświadczenie i stworzenie samodzielnie czegoś działającego, nawet jeśli tylko na własną rękę a nie “w pracy”. Sucha książkowa wiedza to coś co można łatwo nadrobić, a doświadczenie zdobywane w bojach jest najcenniejsze. A jeśli te boje są organizowane bez przymusu, jako hobby, to tym lepiej :).

I jeszcze na koniec:

Najfajniejszym rozwiązaniem może okazać się połączenie tych dwóch rzeczy: praca/staż w jednej ścieżce, a hobbystyczny rozwój w innej. Jeśli byś takie coś rozważał to wpadaj na bloga 1 lutego, znajdziesz tam kop motywacyjny do robienia “na boku”, a może nawet do uzyskania trampoliny do startu dalszej kariery ;).


Masz podobne dylematy i chcesz poznać moją opinię na dany temat? Bez wahania uderzaj w kontakt!

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
Cieja
Cieja

Z niecierpliwością czekam na 1.02.2016. Nie ukrywam, że na dniach miałem startować z własnym blogiem, ale poczekam na 1.02 ;)

Michał Komorowski

Ja bym jeszcze dodał poradę, że bez względu na to, którą ścieżkę wybierzesz to warto czytać różne rzeczy (blogi, książki) na tematy bezpośrednio związane z tym z czym pracujemy, ale nie tylko. Z pewnością nie wszystko zapamiętamy, ale zawsze coś zostanie w głowie. Brzmi to oczywista oczywistość, ale pozornie. Obserwuję, że nawet programiści z X lat doświadczenia mają braki w wydawałoby się podstawowych rzeczach. Podam przykład, ostatnio robiłem przegląd aplikacji web’owej, w której walidacja danych była robiona tylko po stronie klienta, a co więcej aplikacja zasysała prawie całą bazę danych bo tak było wygodnie. Działało bo baza danych zawierała tylko… Read more »

pawelek

Wg pewnej doktryny ja też nie mockuje. W ogóle. Chociaż akurat do czego są mocki i stuby – wiem.

Michał Komorowski

O jakiej doktrynie mówisz?

Michal Franc

Stosujac zasate przy ktorej tworze proste testy jednostkowe a kompozycja klas pozwala mi zastosowac proste mocki nie musze przejmowac sie takimi problemami bo nie ma jak skomplikowac kodu :)

Michał Komorowski

Szczerze powiem, że nawet nie wiedziałem, że jest taki spór (dla mnie w sumie sztuczny). Ja podchodzę do tematu tak, że robię jak jest wygodniej czyli w zależności od potrzeb używam prawdziwych obiektów, stub’ów lub mock’ów. Trochę zamieszania wprowadza tu nazewnictwo. Pisząc o bibliotekach do mockowania miałem na myśli wszelkie narzędzia, które generują nam “fałszywe” obiekty.

pawelek

Ha ha ha ha.. “A praca przy skomplikowanych rzeczach z kumatymi ludźmi to taki trochę święty graal, w “enterprajsie” często praca polega na utrzymaniu starych systemów, poprawianiu błędów i dolepianiu nowych ficzerów – byle jak, aby działało, na siłę. Podczas rekrutacji nikt Ci tego nie powie, ale tak wygląda większość braży (i to nie tylko jeśli chodzi o Javę, w .NET jest podobnie).” – FCK TRUE Man :) Wiadomo tylko to – korpo daje kasę, ale wiąże w schematy, startup daje wolność, ale czasem ciężko wyżyć. Jak startup zaczyna dawać kasę to za chwilę jest korpo i tak w kółko.… Read more »

Bogusz Pękalski

Na pewno fajnym pomysłem jest przejść się po kilku meetupach dotyczących różnych technologii. Zobaczyć czy jest tam coś co cię interesuje. Najlepiej pogadać z uczestnikami i prelegentami. Oczywiście łatwo powiedzieć, idź na grupę, pogadaj z ludźmi, ciężej to zrealizować, szczególnie jak nikogo się nie zna.

Dlatego dobrym wyjściem jest też pojechanie na jakąś konferencje , która dotyczy programowania, ale nie konkretnej technologii. Tam można zobaczyć jakie są obecne trendy w branży, co robią inni i czy są z tego zadowoleni. Dużo łatwiej jest też nawiązać kontakty, klimaty konferencyjne sprzyjają networkingowi ;)

trackback

[…] wciągnęło mnie czytanie posta na blogu Maćka Aniserowicza – Jak pokierować dalszą karierą. Zainteresowany tematem byłem szczególnie, ponieważ sam (jak pewnie większość z nas) szukam […]

tomaszk-poz
tomaszk-poz

Ja bym Javy tak nie skreślał. Po pierwsze – licho wie co Microsoft wymyśli z NET, samo otwarcie na nowe platformy na razie niewiele daje a wszystkiego i tak nie przeniosą. Jak chce się pisać wieloplatformowo, trzeba skorzystać z Mono, gdzie są ograniczenia. No i pytanie czy będą chętni wykorzystywać na Linuksie twory MS, gdy już są tam zadomowione inne technologie? Jak na razie to MS adaptuje linuksa a nie odwrotnie (dogadali sie z bodajże Redhat, na Azure działa linux). Do tego dodajmy krętactwa MS przy Windows10 i przy starszych systemach (olewka WinXP, a ja mam klienta, ktory ma mnóstwo… Read more »

Keraxel

TOMASZK-POZ, Nie chcę wywoływać kolejnej wojny Java – .NET, ale to nie działa do końca tak, jak myślisz (disclaimer: od 9 miesięcy pracuję jako Java Developer, wcześniej pracowałem na .NET) . Po pierwsze, przenośność kodu to mit. Nawet jeśli nie korzystasz z bibliotek w kodzie natywnym, to IMHO większym problemem jest nie OS, a powiązanie z konkretnymi bazami danych, usługami etc. Jaką masz gwarancję, że np. SZBD działa tak samo na różnych platformach? Po drugie, na dotnecie też masz wiele języków. Tylko co z tego, skoro wszystkie oferty pracy dotyczą tego głównego? Biznes nie przepada za technologicznymi eksperymentami. Po trzecie,… Read more »

tomaszk-poz
tomaszk-poz

Miałem na myśli przenośność kodu i jar, SZBD to nie sprawa javy tylko dostawcy bazy (zawsze można wziąć baze w java ;-D), na pewno przenośność jest o niebo większa od plików z .net. Np. MS daje sterownik do MSSQL jako jeden Jar na wszystkie systemy, wiec da sie to napisać. Takie mono niby ma MVC4 ale nie do końca bo nie ma choćby async,, a zawsze się można wyłożyć, że jakaś klasa nie ma zaimplementowanej metody. Pisałem o bezpłatnym stażu (z opcją zatrudnienia0 w sensie zachęty dla pracodawcy, że facetowi zależy. Ale dzięki za zwrócenie uwagi. A tak z ciekawości… Read more »

Keraxel

To, co miałem na myśli to fakt, że nikt nie będzie przenosił aplikacji produkcyjnej pomiędzy platformami. Doświadczenie liczyło się normalnie. Większość zasad i wzorców jest wspólna pomiędzy wieloma językami obiektowymi. Nie musiałem znać żadnych frameworków Javowych, chociaż miałem trochę styczności z Java EE. Moja praca polega na łączeniu analizy z danymi, więc jest to głównie czysta Java. Gdybym był na tym stratny to bym nie przeszedł na ciemną stronę. Pracodawca potrzebował developerów od zaraz. Prawdę mówiąc, o Javie dowiedziałem się podczas ostatniego etapu rekrutacji. Na szczęście zrobiłem wcześniej wywiad o firmie i byłem przygotowany na taki scenariusz. Zgodziłem się, bo… Read more »

tomaszk-poz
tomaszk-poz

“Zgodziłem się, bo chciałem sprawdzić, czy w Javie pisze się tak słabo, jak to sobie zawsze wyobrażałem ”

I jakie wnioski?

Keraxel

https://keraxel.net/2016/01/dlaczego-java-ssie/
Mówiąc ogólnie, niezbyt dobre :-) Do tego, co opisałem, dorzuciłbym jeszcze fatalnie rozwiązane klasy generyczne.
Na szczęście nie pracowałem z Javą EE, więc lista nie jest zbyt długa.

Moja książka

Facebook

Zobacz również