bookmark_borderSyzyfowe korpo prace

Jak pisał Herbert – warto z uporem powtarzać stare zaklęcia ludzkości: bajki i legendy. Wszyscy znamy historię Syzyfa – ulubieńca bogów, który naraziwszy się Zeusowi padł ofiarą srogiej kary. Przyszło mu w nieskończoność wtaczać na szczyt ogromnej góry wielki głaz, który tuż przed osiągnięciem celu miał zawsze już wymykać mu się z rąk, spadać w dół zbocza i zmuszać go do rozpoczęcia zadania raz jeszcze. Bezsensowna, pozbawiona efektu praca, od tysiącleci jest więc symbolem tortury.

U zarania dziejów nie było zajęć beznadziejnych. Rozpaczliwa była kondycja ludzka – krótkie życie, łatwa śmierć, choroby, głód i chłód. Cierpieliśmy dzień w dzień pod wiecznie smutnym niebem. Niebezpieczne i nużące polowania, żmudna uprawa roli – straszna to była niedola. Jedno, jednakże rzec trzeba – miało to sens. Kto ubił dzika, zjadł go i przeżył, kto zboże zasadził i zebrał nie mógł powiedzieć, że spędził miesiące na bezsensownych czynnościach. Różne nas sprawy wówczas torturowały, ale praca mogła dawać satysfakcję.

Trzeba było kilku tysięcy lat, by sytuacja uległa odmianie. Dość radykalnej, bo w zasadzie obróceniu o 180 stopni. Mało co nas dziś zabija, a pod względem wysiłku wymaganego do przeżycia znaleźliśmy się na przeciwnym biegunie. Trudniej dziś umrzeć niż przeżyć (do czasu starości oczywiście). Złożoność społeczeństwa i gospodarki eksplodowała tak bardzo, że choć zasadniczo wszystko co robimy za pieniądze ma jakiś sens globalnie, to lokalnie już nie zawsze.

Przychodzimy do pracy. Współtworzymy jakiś-tam produkt cyfrowy. Bierzemy za to pieniądze, kupujemy produkty wytworzone przez innych ludzi z innych kontynentów. Niby wiemy, że do czegoś ta nasza praca się przydaje, że jest gdzieś na wysokim poziomie jakieś jej uzasadnienie, ale z perspektywy mikro ono po prostu, zwyczajnie nie istnieje.

Słyszałem o tak wielu przykładach deweloperskiej udręki, że nie wiem, czy nie należałoby wypłacać niektórym programistom dodatku za pracę w ciężkich warunkach…

  • W projekcie ABC kilku koderów pracowało nad projektem przez ponad kwartał, w nadgodzinach, pod presją – tylko po to by dowiedzieć się, że zmieniła się koncepcja, ich praca wyląduje w koszu i mają zacząć od nowa w większym gronie.
  • W projekcie BCD programista tworzył narzędzie dla dosłownie dwóch managerów wysokiego szczebla.
  • Projekt CDE został po dziewięciu miesiącach zamknięty, ponieważ okazało się, że międzynarodowa korporacja prowadziła na całym świecie w tym samym czasie pięć identycznych przedsięwzięć i ktoś postanowił zakończyć cztery z nich.
  • Projekt DEF trwał już dobre pół roku, kiedy pewien programista dowiedział się z pewnego źródła, że jest to już piąta z kolei próba implementacji tego samego oprogramowania. Żeby było zabawniej po kolejnym kwartale projekt został anulowany.
  • Pewien pracownik po odbytej wideokonferencji oświadczył, że dzwoniono do niego z prośbą o wymyślenie jakiegokolwiek projektu, ponieważ osoba dzwoniąca ma trzysta tysięcy euro budżetu do spożytkowania.

Na szczęście nie każdy projekt tak wygląda. Tego typu syzyfowe prace są najczęściej domeną albo korporacji albo ledwie co założonych startupów. W tych drugich produkt może po prostu nie zdobyć wystarczającej ilości użytkowników i roczna lub dwuletnia praca trafia do piachu. W przypadku tych pierwszych natomiast spora grupa projektów powstaje nie z uwagi na realne zapotrzebowanie albo hipotezę rynkową, którą postanowiono zweryfikować, ale ze względu na politykę. Prezes mówi „internet of things” i dwór zarządza by całe jego królestwo rozsiane po kontynentach rozpoczynało projekty pod tym hasłem. Dwa lata później okazuje się, że trend się zmienił albo większość z nich była jedynie na szybko montowanymi chochołami nie mającymi prawa przetrwać w rzeczywistości.

W ogóle projekty podzielić można na zasadniczo trzy kategorie:

  1. Utrzymanie starych, rentownych produktów
  2. Budowa nowego produktu (9 na 10 nie przetrwa roku)
  3. Rozwój produktu o rosnącej bazie użytkowników

Do każdej z nich nadają się inne osoby, z czego dwie pierwsze są bliskie definicji tortury.

Nieustanne tworzenie nowych produktów, które nigdy nie wchodzą na produkcję przypomina akademickie klepanie programów na zaliczenie. Z jednej strony osoby kreatywne mogą się w tym jakoś odnaleźć, bawiąc się architekturą i eksperymentując z nowymi technologiami, z drugiej jednak na dłuższą metę dojdą do nieuchronnego wniosku, że ich praca to zabawa, że nic w gruncie rzeczy światu nie dają, że budują papierowe samoloty, zamki z piasku…

Utrzymanie starych, rentownych produktów z kolei bliskie jest zazwyczaj szambo-nurkowaniu. Są to projekty beznadziejnie nudne, w których czas spędza się jedynie na łataniu taśmą bugów w beznadziejnych próbach utrzymania rozpadającego się truchła w kształcie przypominającym to, czym dawniej było. Jest to skazana na porażkę walka z entropią i gniciem oprogramowania. Jest to mieszanka oddziału gerontologicznego i onkologicznego. Przede wszystkim jednak jest to morderstwo własnego CV, bo można się tam nauczyć jedynie cierpliwości.

Jedyna przyjemna i nieliczna kategoria to produkty o rosnącej bazie użytkowników – aplikacje, które powstały stosunkowo niedawno, przyjęły się na rynku i są rozwijane. Znajdziemy je w najczęściej udanych startupach, które ewoluują już w kierunku średnich firm.

Do tworzenia nowych produktów nadają się osoby kreatywne. Mają się w nich okazję wyżyć, wyszumieć w swoich twórczych popędach, eksperymentować do woli, często i bez konsekwencji. Można się w nich też wiele nauczyć – często używa się tam najnowszych technologii. Jeśli tempo prac nie jest zbyt duże można nawet pokusić się o rozsądne zaplanowanie architektury i z tego etapu naukę oraz doświadczenie wynieść.

Do projektów utrzymaniowych z kolei, nadają się ludzie cierpliwi. Ktoś, kto ma już swoje lata jako programista, nie czuje się na siłach, by zgłębiać nowe techniki i paradygmaty, może tam odnaleźć swój przedemerytalny zakątek. Także osoby potrzebujące odreagować od pędu ku nowoczesności mogą w nich przycupnąć i odsapnąć od pogoni za nowymi frameworkami. Kto jednak kreatywny, kto nie znosi chaosu i lubi zbawiać świat – popadnie w tych projektach w szał. Trzeba do nich ludzi spokojnych, pogodzonych z niedoskonałościami, ludzi, którzy przyjdą każdego dnia, potaplają się w bagnie, westchną i wyjdą o piątej do własnego życia…

Jedynie w miarę ustabilizowane projekty, o rosnącej bazie użytkowników, napisane niedawno, rozrastające się dadzą schronienie osobom pomiędzy tymi dwoma światami. Nie będzie tam frameworków sprzed tygodnia, ale nie będzie też sprzed dwóch dekad. Coś da się poprawić, choć architektury się nie zmieni. Bugi będą, bo są zawsze, ale będą też nowe funkcjonalności. Co najważniejsze jednak – będzie sens. Użytkownicy docenili produkt i chcą go używać. Piszemy coś fajnego, co ludzie lubią i z czego korzystają. Nie łatamy starego systemu, którego wszyscy nienawidzą. Nie robimy eksperymentalnego produktu, który może się nie przyjąć. Robimy prawdziwą, w starodawnym duchu, poczciwą, przydatną pracę. Czego wszystkim życzę.

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ą…