Dlaczego nie warto być programistą?

Mimo, że tytuł tego wpisu może brzmieć dość kontrowersyjnie, to uważam że taki post powinien znaleźć się na blogu skupionym wokół tematyki programowania i szeroko pojętego IT. Tym artykułem chcę nieco odczarować branżę IT z wizerunku utopijnego miejsca pracy pozbawionego skaz.

Mimo przewrotnego tytułu, moim zadaniem nie jest nikogo zniechęcić do pracy w branży IT. Chcę jedynie pokazać, że każdy medal ma dwie strony i decydując się na rozwój kariery w branży IT trzeba być świadomym istnienia obu stron wspomnianego medalu.

Zostań Junior Developerem w 3 miesiące!

Trzy miesiące jest zdecydowanie bardziej realne ( choć i tak bardzo mało prawdopodobne ), niż dwa czy cztery tygodnie, które zdarza mi się widywać w reklamach kursów bądź szkoleń.

Od razu chcę w tym miejscu zaznaczyć – nigdy nie brałem udziału w takim szkoleniu czy kursie. Nie przeglądałem nigdy również programów takich szkoleń czy kursów. Niemniej jednak będąc świadom wymagań na stanowisko Junior Developera uważam, że przygotowanie osoby nie mającej wcześniej styczności z programowaniem przez 3 miesiące jest niewykonalne.

Posłużę się przykładem web developera. Absolutnym minimum jeśli chodzi o umiejętności, z jakimi junior powinien aplikować na to stanowisko moim zdaniem jest:

  • Poznanie HTML – jakie znaczniki istnieją, jak należy ich używać, semantyka znaczników.
  • Znajomość CSS – umiejętność tworzenia responsywnych layoutów, znajomość pojęcia kaskadowości.
  • Znajomość JavaScript’u – tu moim odniesieniem będzie książka You Don’t Know JS autorstwa Kyle’a Simpsona. Uważam że około 50% ~ 60% treści zawartej w tej serii książek to jest must have, jeśli myślimy o pracy jako web developer. Oczywiście im więcej tym lepiej!
    Samo przeczytanie takiej ilości treści nie znając wcześniej JavaScript’u może już stanowić wyzwanie, nie mówiąc już o nauczeniu się tego, zrozumieniu oraz zastosowaniu wiedzy w praktyce! Z dużym naciskiem na to ostatnie. Oczywiście nie uważam tej książki za jedyną słuszną. Niemniej jednak uważam ją za jedną z lepszych do nauki JS’a, dlatego też podałem ją jako przykład.
  • Poznanie narzędzi tj. Webpack, Babel, npm, Yarn, ESLint, etc..
  • Poznanie środowiska przeglądarki z naciskiem na narzędzia developerskie tj. konsola czy debugger. Opróćz tego warto poznać API przeglądarek tj. LocalStorage, odczyt współrzędnych GPS, dostęp do kamery, mikrofonu itp..
  • Podstawowa znajomość protokołu HTTP – metody wraz z ich zastosowaniami i różnicami, budowa zapytań, nagłówki.
  • Podstawy Gita oraz idea stojąca za systemami kontroli wersji ( czym są, po co są, do czego służą ).
  • Podstawowa znajomość dowolnego frameworka/biblioteki np. React, Angular czy Vue. Przez podstawową znajomość mam na myśli umiejętność stworzenia prostej aplikacji niosącej jakąkolwiek wartość biznesową. Przez wartość biznesową rozumiem aplikację niebędącą “Hello World’em” czy “To Do Listą”.

To co przedstawiłem uważam, za absolutne minimum. Nie wspomniałem tu chociażby o preprocesorach CSS ( np. SCSS ), integracji z zewnętrznymi API, integracji z CMS’ami, podstawami bezpieczeństwa aplikacji i ogromie innych, równie istotnych rzeczy.

Małpa z książką

Uważam za nierealne nauczenie się takiego ogromu wiedzy w trzy miesiące ( nie wspominając już o 2 tygodniach! ). Być może byłoby to możliwe ( choć wciąż trudne ) gdybyśmy 100% naszej energii włożyli w naukę. Jednakże zdecydowana większość ludzi oprócz nauki pracuje oraz ma inne obowiązki.

Po raz trzeci wspomnę, że wcześniejsza lista jest dla mnie absolutnym minimum. Oznacza to, że mając tylko tę wiedzę prawdopodobnie nie wyróżnisz się na rozmowie rekrutacyjnej. W chwili pisania tego artykułu ( sierpień 2020 ) ofert pracy na stanowiska juniorskie w Poznaniu, czyli mieście, w którym mieszkam jest zdecydowanie mniejsza niż na stanowiska mid czy senior. Do sprawdzenia ilości ofert posłużyłem się serwisem justjoin.it. Analogicznie sytuacja wygląda w innych polskich miastach. Powiedziałbym nawet, że chociażby w Warszawie różnica ta jest jeszcze bardziej widoczna.

Warto także pamiętać, że na każde stanowisko juniorskie jest zdecydowanie więcej chętnych niż miejsc, przez co kandydat musi się czymś wyróżnić (  oczywiście na plus ). Stąd też podkreśliłem kilkakrotnie słowo minimum. Jeśli wybierzesz się na rozmowę z minimum wiedzy, twoje szanse na przyjęcie na stanowisko również są minimalne.

O rozwoju umięjętności programistycznych powstał już artykuł dlatego też zachęcam do jego przeczytania – Jak mądrze rozwijać swoje umiejętności programistyczne?

Ciągła nauka

Gratulacje! Udało Ci się zdobyć pierwszą pracę jako junior developer! Od tego momentu możesz się uczyć jeszcze więcej i zdobywać jeszcze większe kompetencje.

Dla części ludzi (na przykład dla mnie) może to być ogromna zaleta. Jednak jest również ogrom ludzi, dla których nauka kojarzy się z czymś nieprzyjemnym i jest po prostu męcząca. Praca w branży IT oznacza w praktyce ciągłą naukę i doskonalenie się. Tempo przyrostu nowych trendów i technologii jest ogromne. Ciągłe bycie up-to-date może stanowić niekiedy wyzywanie. Co więcej, gdy ty się nie rozwijasz, to prawdopodobnie inni właśnie to robią. W konsekwencji, stojąc w miejscu tak naprawdę robisz krok wstecz.

Oczywiście ktoś mógłby powiedzieć, że jest ogrom firm utrzymujących stare rozwiązania. To prawda. Należy tu jednak zadać sobie kilka pytań:

  • Jak długo ten software będzie utrzymywany?
  • Co w momencie zerwania współpracy?
  • Czy praca w takim projekcie sprawia Ci satysfakcję?

Praca w IT to także praca z ludźmi - zespół

Praca w IT to praca z ludźmi

Zdarzyło mi się kiedyś trafić na pewien slogan ( źródło ):

“Nie po to studiowałem informatykę, żeby teraz pracować z ludźmi.”

Oczywiście ten slogan ma się nijak do rzeczywistości. Przez niektóre osoby stereotypowy programista wciąż postrzegany jest jako zamknięty w piwnicy odludek, spędzający cały dzień przed komputerem. Jest to dalekie od stanu faktycznego, a wręcz krzywdzące.

Przede wszystkim, oprogramowania nie tworzysz do szuflady ani do portfolio. Oprogramowanie tworzysz przede wszystkim dla innych ludzi. Od nich zaś będziesz potrzebować zarówno wymagania jak i feedback, co już zmusza Cię do podjęcia interakcji. Nawet jeśli nie bezpośrednio, to przez jakąś inną osobę.

Ponadto, jeśli nie jesteś freelancerem, to prawdopodobnie współpracujesz z innymi ludźmi. Do pracy zesspołowej potrzebne jest całe spektrum kompetencji miękkich, których pozyskanie nie jest wcale takie trywialne. Lista umiejętności miękkich przydatnych w pracy programisty jest tak ogromna, że przytaczanie jej tutaj mijałoby się z celem tego artykułu.

Nawet jeśli programujesz na własną rękę jako freelancer to trafisz w swojej karierze na różnych klientów. Możesz trafić na klienta, z którym praca będzie przyjemnością, ale możesz też trafić na klienta od którego wiadomość e mail może powodować dreszcze.

Praca w IT to także ciągle zmieniające się wymagania. Nie wcale taką rzadką sytuacją jest że wymagania zmieniają się bardzo często i znacząco w trakcie pracy nad projektem. Końcowy rezultat może nawet nie przypominać tego, co było określone w pierwotnych założeniach. Przydatne w tym przypadku okażą się nie tylko umiejętności zaprojektowania elastycznego systemu, ale też umiejętność pozyskania wymagań od klienta i dowiedzenie się na czym tak naprawdę mu zależy.

Praca w IT to stres ( czasem bardzo duży )

W tym aspekcie praca w IT nie różni się znacząco od innych zawodów. Tu również obecne są deadline’y czy inne stresogenne czynniki związane z pracą zawodową.

Natomiast są również czynniki typowe dla branży IT. Zacznę od czegoś, co dotyczy nie tylko ludzi branży, ale każdego kto przechowuje dane na dyskach – backupy. Mówi się, że ludzie dzielą się na dwie kategorie: “tych co robią backupy i tych co będą je robić”. W razie incydentu zdecydowanie lepiej jest być w tej pierwszej grupie.

Inną, równie stresogenną sytuacją jest awaria aplikacji na produkcji. Nie dość że aplikacja nie działa, to jeszcze jest silna presja, aby jak najszybciej przywrócić ją do działania. Co więcej, złośliwość losu zwykle sprawia, że aplikacje lubią się psuć w najmniej odpowiednim momencie, na przykład w piątek o 16.

Praca w IT nie jest korzystna dla zdrowia

Myślę, że nie odkryję Ameryki pisząc, że siedzenie przed komputerem przez osiem godzin dziennie lub więcej nie pozostaje obojętnie dla naszego zdrowia. Nie bez powodu wiele firm oferuje swoim pracownikom benefity pokroju karty Multisport, opieki medycznej, czy też słynne “owocowe wtorki”.

Zdrowiu w pracy programisty poświęciłem kiedyś cały artykuł, dlatego też zachęcam do zapoznania się z nim – Zdrowie w pracy programisty.

Zostawię tu jedynie zestaw najczęstszych chorób i schorzeń związanych z pracą biurową:

  • otyłość,
  • choroby i zwyrodnienia kręgosłupa,
  • zwyrodnienia dłoni/nadgarstków ( np. zespół cieśni nadgarstka ),
  • zwyrodnienia stawów ( np. łokieć tenisisty ),
  • problemy ze wzrokiem,
  • chroniczne zmęczenie.

Podsumowanie

Mimo tych wszystkich wad i problemów, które opisałem wciąż uważam pracę w IT za coś świetnego.

Uważam, że obecnie ciężko byłoby mi się odnaleźć w innej branży, a liczba korzyści przyćmiewa opisane w tym wpisie wady. Jednakże cieszę się, że ten artykuł powstał. Tak jak wspomniałem na samym początku – branża IT, tak jak każda inna, ma wady których przyszli pracownicy powinni być świadom.

Źródła i materiały dodatkowe: