bookmark_borderGorycz pracy programisty

Programowanie jest pięknym zawodem. Jest stymulujące intelektualnie, pozwala na kreatywność, pomaga ludziom ułatwiając im życie i służy biznesowi redukując koszty. Czasami jednak ma smak goryczy.

W programowaniu jest duch wydajności. Od chwili, gdy na pierwszym komputerze udało się policzyć coś setki razy szybciej niż ręcznie, jesteśmy oczarowani możliwością uzyskania niespotykanej wcześniej efektywności. Pewnie dlatego programiści prześcigają się w tworzeniu narzędzi usprawniających pracę. Ergonomiczne edytory kodu, automatyczne testy pozwalające zwiększyć niezawodność oprogramowania, metodyki tworzenia programów sprawniej, szybciej, wydajniej.

Każdy programista, który kiedykolwiek pisał coś co dało się zoptymalizować zna to słodkie uczucie, gdy coś zadziała sprawniej. Swego czasu, gdy jeszcze studiowałem, pewien profesor zlecił nam napisanie programu kompresującego. Algorytm z tego co pamiętam był entropijny, czyli przypisywał słowom używanym w tekście najczęściej najkrótsze symbole, a tym mniej powszechnym dłuższe. Na początku program po prostu działał, jak zwykle w optymalizacji bywa – wolno. Potem trzeba było sprawić by działał szybko. Pamiętam, że chodziłem dzień lub dwa z problemem w głowie, aż w końcu zrozumiałem, że drzewo BST będzie odpowiednim narzędziem w tym przypadku (dekompresji tak konkretnie). Po zmianie program działał błyskawicznie. Satysfakcja była przeogromna.

Tak samo jest z programowaniem poza akademią. Kiedy widzimy sens w projekcie, w produkcie, gdy wiemy, że użytkownicy będą zadowoleni, że ułatwi to ludziom życie – jest pięknie. Praca nad czymś takim to czysta przyjemność.

Bywa jednak gorzko. Pracujemy, nieraz w dużej grupie, miesiącami, nad pewnym produktem, wkładamy w niego serce, pracę i czas, powołujemy go do życia, a potem z powodu jakiejś decyzji na szczeblach władzy dużej firmy projekt zostaje anulowany. Znam osobiście człowieka, który po takiej decyzji opuścił firmę. Ze swojego doświadczenia natomiast wiem, jak boli, gdy dopada nas tego rodzaju wydarzenie.

I o ile zdarza się to raz na kilka lat nie ma w tym większego problemu. Jednak jeśli powtarza się regularnie, jeżeli staje się normalnością, zaczyna rodzić cynizm. Jak przekonać programistę do zwiększania efektywności albo wzmożonej pracowitości, jeśli przez ostatnie kilka lat co drugi projekt w jakim uczestniczył został anulowany, a jego kod nigdy nie wszedł na produkcję? Nie wiem. Po prostu nie wiem. Sądzę, że taki pechowy programista zostaje na jakiś czas, być może na zawsze, zepsuty.

Jest taka mądra opowieść o testach i błędach. Jeśli bug jest wykryty chwilę po powstaniu, jego naprawienie kosztuje niewiele, jeśli tydzień, już więcej, a jeśli lata później, bardzo dużo. Podobnie jest z decyzjami projektowymi – błędne decyzje co do startu projektu albo jego kształtu kosztują ogromne pieniądze. Im mniej tych błędów tym również mniej frustracji wśród programistów w naszym przedsiębiorstwie, a więcej motywacji, efektywności i zysku. Dlatego warto prototypować i badać rynek. Przynajmniej jednak dobrze byłoby programistom wyjaśnić czemu ich praca poszła na śmietnik. Możliwe, że odrobinę zmniejszy to ich gorycz…

bookmark_borderIle ofert pracy mają programiści i dlaczego dwie na rok?

Jest taki stary, suchy dowcip, że bezrobocie programisty to najgorsze piętnaście minut w jego życiu. Pracuj.pl tworzy specjalny sub-portal z ofertami pracy dla IT. JustJoin.it i No Fluff Jobs konkurują od lat i wyświetlają nam setki ofert pracy dla programistów. Co więc ja tutaj bredzę w click-baitowym tytule, zapytacie?

Otóż ofert jest mnóstwo, to prawda. W chwili pisania tego artykułu JustJoin.it zwraca ich 1385. Do pewnego stopnia prawdą jest też, że programista szukający pracy dość szybko jest w stanie ją znaleźć, o ile jest doświadczony i ma nieco umiejętności autoprezentacji.

Tyle jednak, że jeśli jest się specjalistą, osobą która posiada rozbudowane doświadczenie w jakimś obszarze, adekwatne do tego oczekiwania finansowe i chęć rozwoju oraz pracy z narzędziami, które się zna, w tym, w czym się jest ekspertem, to te omal półtora tysiąca ofert może się skurczyć do jednej, dwóch na rok.

Po pierwsze, technologie. Wspomniane JustJoin.it wyświetla na głównej stronie następujące filtry: JavaScript, HTML, PHP, Ruby, Python, Java, .NET, Scala, C. Jest ich dziewięć.

Po drugie, specjalizacje. Ful-stack developer, front-end developer, back-end developer, mobile, tester, devops, embedded, security, game. Kolejne dziewięć.

Po trzecie, miasta. Warszawa, Łódź, Kraków, Wrocław, Poznań, Trójmiasto, Śląsk, Białystok, Bydgoszcz, Toruń, Rzeszów – można by jeszcze kilka średniej wielkośći miast dodać, ale poprzestańmy na tym. Mamy ich jedenaście.

Klikamy więc, wybieramy Pythona i Białystok. Mamy jedną ofertę. Druga próba – Scala, Trójmiasto. Zero ofert. PHP Śląsk – trzy oferty, w tym jedna dla backendowca.

Podzielmy więc, na głupio, oferty przez miasta – z 1385 robi się 125. Podzielmy dalej przez technologie. Mamy 13. Dalej przez specjalizacje i mamy 1.5. I prawdę mówiąc uśredniając tyle mniej więcej wychodzi. W Warszawie pewnie pięć, w Rzeszowie zero, o ile nie mamy szczęścia.

Fragmentacja branży, mam wrażenie postępuje od lat. Kiedyś web master znał HTML, CSS i trochę JavaScript. Dziś mamy już front-end developera z React, z Angularem albo Vue, a full-stack „to już w ogóle” cytując klasyka – front React, back .NET, front Vue, back Java, front Angular, back .NET, front Angular, back Python itd.

Z jednej strony pompuje to stawki osób, które są w dobrym miejscu i z dobrą specjalnością, ale z drugiej rujnuje życie osób, które w tym miejscu nie są, a przede wszystkim projekty. Osobiście byłem świadkiem angażowania backendowców doświadczonych w .NET do pisania frontu w React. Niestety ani oni szczęśliwi nie byli, ani transpilator TypeScriptu nie mdlał z zachwytu nad tym, co musiał przetwarzać. Za to doświadczona React deweloperka, która z tym kodem musiała potem pracować była momentami bliska mdłości.

Gorącą mam nadzieję, że wkrótce firmy pójdą po rozum do portfela i praca zdalna stanie się tą słynną już nową normalnością. Otworzy to projekty na prawdziwych specjalistów, nasze płuca na świeższe powietrze bez spalin w miastach, a może przy okazji zlikwiduje nieco bezproduktywnych spotkań w niedotlenionych salkach konferencyjnych z grzybem w klimatyzacji.

bookmark_borderNadciąga tsunami juniorów! Czy to koniec eldorado w IT?

Opowieści o końcu eldorado w polskim IT powtarzają się regularnie, jak książki i artykuły o upadku Chin w zachodniej publicystyce. I tak jak od dwudziestu lat Chiny upaść nie chcą, a wręcz coraz mocniej prężą muskuły, tak od lat rosną wynagrodzenia w polskim IT. Czy nie czeka nas jednak potop?

Kto przez ostatnie lata nie siedział w piwnicy, ale rozmawiał z kimkolwiek zajmującym się rekrutacją w IT wie, że ilość CV nadsyłanych na juniorskie oferty pracy dochodzi do 300 (słownie: trzystu). Jednocześnie ilość ofert dla młodszych programistów skurczyła się do tak znikomych ilości, że w zasadzie ciężko je gdziekolwiek znaleźć.

Tymczasem firmy obsesyjnie rekrutują seniorów za coraz wyższe stawki. Dwa lata temu praktycznie nie pojawiały się oferty przekraczające 20 000 PLN netto na B2B, dziś w takich ofert jest już sporo, a w Warszawie można odnieść wrażenie, że co trzecia ma górne widełki dochodzące do 20k.

Jak to mówią – biedni biednieją, bogaci się bogacą.

Pytanie, jakie powinni sobie zadać seniorzy brzmi: czy jest coś co obroni nas przed tsunami juniorów?

Znam wielu, którzy słysząc takie słowa spoglądają pobłażliwie i odpowiadają serią epitetów w kierunku nowych adeptów programowania – ci juniorzy nic nie umieją, trzeba ich za rączkę, uczyć ich trzeba, tylko przeszkadzają…

Warto byłoby jednak na wspomniane pytanie odpowiedzieć sobie szczerze, bez przesadnej buty. Doświadczenie w programowaniu jest cenne, ale mało która branża równie dynamicznie się rozwija, co sprawia, że seniority to szybko staje się bezwartościowe. Wystarczy wymienić Visual Basic, Flash, czy ASP classic. Nowości pojawiają się nieustannie, a kiedy przychodzi nam zajmować się wychowaniem dzieci i pielęgnacją rodziców, ilość czasu na edukację spada. Maleje też zdolność przyswajania wiedzy. Starzenie się zabija elastyczność.

Każdy, kto dostatecznie długo pracuje zna smutek w oczach starszego programisty, gdy pojawia się bystrzejszy junior, który dowodzi seniorowi, że jego czas się skończył.

To jednak normalna wymiana pokoleniowa i rzecz jak świat stara. Są jednak zjawiska ciekawsze. Od paru co najmniej lat ekonomiści i ludzie z ulicy zastanawiają się, kiedy dodruk pieniądza spowoduje inflację. Banki centralne drukują i drukują, a inflacja nie eksploduje. Podobnie jest z juniorami w IT.

Tsunami juniorów, ich olbrzymia, biblijna ilość, bierze się oczywiście z kuszących stawek w IT. Każdy czytał i słyszał o artykułach chwalących wynagrodzenia programistów. Dla mnóstwa osób jest to praca marzeń. Na tej nadziei budują swoje biznesy bootcampy, szkoły programowania i kursy on-line, obiecujące adeptom sztuki kodzenia wejście na obfity rynek pracy.

Jak długo branża IT wytrzyma napór tego tsunami juniorów? Nie wiem. Nikt nie wie. Ja bym jednak budował arkę.

W okolicznych krajach widać jasno podział rynków na takie, w których programista zarabia jak każdy i takie, gdzie jest królem. Europa Wschodnia to królestwo IT. Zachodnia, z pewnymi wyjątkami, to obszar, gdzie programista jest jak każdy. Warto zauważyć, że kraje bardziej rozwinięte zwykle nie wynagradzają programistów nadzwyczaj dobrze w stosunku do innych zawodów (Japonia, Niemcy, Skandynawia, Singapur), to regiony outsourcingu (Europa Wschodnia) i kraje innowacyjne (USA, Szwajcaria) doceniają koderów. Polska nie jest przesadnie innowacyjną gospodarką, a możliwe, że w ciągu dekady, dwóch, z wolna zacznie dołączać do krajów bardziej rozwiniętych.

Logika podpowiada, że duża ilość junior developerów nie może się w końcu nie odbić na wynagrodzeniach w branży. Spadek najpewniej nastąpi. A przynajmniej zbliżenie zarobków do średniej krajowej.

Będąc doświadczonym programistą zastanawiałbym się, jakie działania podjąć, by nie zostać ponuro zaskoczonym nadchodzącą zmianą…