Programowanie trzecim niezbędnym językiem

Czy każdy z nas poza swoim ojczystym językiem i dowolnym językiem obcym powinien również poznać jakikolwiek język programowania?

24 January, 2017

Tytuł jest dość chwytliwy, iście click-baitowy, ale taki też miał być. Co raz słyszy się bowiem o tym jakie to och i ach jest to całe "programowanie", że każdy powinien przynajmniej "liznąć" temat, a w ogóle, to nawet pracując na kasie w warzywniaku, dobrze by wiedzieć jak to tak w C# czy choćby Javascript zaimplementować i wyświetlić ciąg Fibonacciego. Ludzie popadają ze skrajności w skrajność i co najgorsze wmawiają również innym ludziom, że z każdego hydraulika czy socjologa (sorry drodzy magistrzy...) mogą w 6 tygodni zrobić programistę dżuniora. Bullshit. Pomijając już same predyspozycje czy po prostu zdolność (bądź jej brak) do przyswajania konkretnych umiejętności, to po prostu nie każdy odnajdzie się w tego typu zawodzie. A zawód ten nie polega na pierdzeniu w drogi fotel i przeglądaniu wykop.pl (przynajmniej nie w zamiarze :)). Z uwagi, iż otrzymuję w każdym tygodniu po kilka zapytań o to od czego zacząć, niechaj ten post będzie tym punktem startowym, do którego będę Was wszystkich odsyłał :)

Do napisania tego posta zmobilizowało mnie również moje ostatnie wystąpienie, które miałem okazję przygotować i poprowadzić rodzicom dzieci biorących udział w dniu otwartym WOW School w Białymstoku. Slajdy z tej prezentacji są dostępne tutaj.

Informatyk vs. Programista

Nie ma nic gorszego niż nazwanie programisty informatykiem. To prawie tak jakby Panią magister farmacji nazwać "kasjerką w aptece" (pozdrawiam żonę i wszystkich innych farmaceutów! :)). Przekonałem się o tym ostatnio na własnej skórze podczas pobytu w klinice w trakcie porodu naszego małego kaczana. Bolało.

15235455_10207588976345733_3969700270172052663_o.jpg

"Jestem programistą, nie naprawię Ci komputera" to już kultowe hasło, które pojawia się nawet na koszulkach dumnie przywdziewanych przez reprezentantów naszego gatunku. Jestem programistą - i tak, ogarniam te maszyny, na których wykonuję swoją pracę, ale nie jest moją pracą dbanie o to, aby działały one poprawnie u innych ludzi :) W trakcie studiów dorabiałem sobie jako "PC Doktor" latając po domach i przeinstalowywując systemy, czyszcząc je itd. Ksywę "Informatyk" przybili mi również w trakcie wakacyjnej pracy jako pomocnik hydraulika w firmie montującej żurawie budowlane na korpusach ciężarówek, którą wykonywałem pomiędzy pierwszym a drugim rokiem studiów (do dzisiaj pamiętam siebie ubabranego po uszy w olejach i smarach, z kluczami w rękach reagującego z wkurwieniem na każde zawołanie mnie do pomocy.. ale przynajmniej nauczyłem się spawać aluminium!). Zostawiło to niewątpliwie trwały ślad na mojej psychice. W każdym razie z bycia informatykiem wyrosłem i nie mam już (nie)stety czasu by pomagać wszystkim w walce z ich maszynami i systemami (choć staram się nikogo bezczelnie nie zbywać i kierować w odpowiednie ręce zawsze).

Wg mojej subiektywnej opinii, informatyk to osoba, która posługuje się komputerem w sposób bieglejszy niż większość populacji i jest w stanie swoje umiejętności wykorzystywać do tego, by tym mniej biegłym zdejmować ten ciężar z barków. Jeśli zarabia przy tym dodatkowo pieniądze - kciuk w górę dla niego / niej. Programista zaś to twórca, który wykorzystując narzędzie, którym jest komputer tworzy oprogramowanie, wykorzystywane w różnych celach - ba, nawet często zupełnie nie wykorzystywane na komputerach.

Zatem jeśli Twoim celem i spełnieniem marzeń jest koszenie kapusty przeinstalowywując innym ludziom Windowsa - to nie ten post i blog.

Programista to "przyszłościowy" zawód!

Kolejny mit do obalenia. Programista, tudzież osoba pracująca w branży IT, to był "przyszłościowy" zawód mniej więcej w roku 2002. To wówczas trwał największy boom na podejmowanie studiów na kierunkach informatycznych i to właśnie wtedy na rynek trafiło najwięcej specjalistów w naszej branży. To co obserwujemy teraz to jedynie nawrót tej fascynacji oraz - moim zdaniem - efekt zwiększenia świadomości i szacunku do komputerowych klikaczy takich jak ja. W trakcie swoich prezentacji i rozmów często przywołuję porównanie, że programista w rodzinie to teraz tak jak niegdyś ksiądz czy lekarz - bardzo pożądany i respektowany osobnik (nie wiem gdzie to zasłyszałem, ale utkwiło w mojej pamięci).

Moja mama na przykład, w momencie, w którym ruszyliśmy z własną działalnością gospodarczą, przez długi czas co raz podrzucała mi informacje o ofertach pracy u jej znajomych. Było to prawdopodobnie wywołane brakiem wiary w to, że klikając w klawiaturę można zarabiać prawdziwe pieniądze. Swoją drogą cieszę się, że mogłem zmienić jej pogląd na ten temat. Sądzę właśnie, że tego typu zmiany nastawienia poskutkowały tym, że ludzie zaczęli co raz bardziej interesować się tym jak wygląda życie ludzi takich jak ja czy Ty programisto, który to czytasz. Staliśmy się atrakcyjni dla mas. Emejzing! 

Tymczasem druga strona barykady zaczęła zarzucać rynek i mass media informacjami o tym jak to cudownie jest być programistą i dostawać co miesiąc przelew na min. 15k za siedzenie w domu, albo co lepsza na Bali (!) z drinkiem w jednej ręce i laptopem na kolanach. Nie twierdzę bynajmniej, że tak się nie da - bo da się, ale nie jest to zazwyczaj droga usłana różami, z czego dobrze sobie po prostu zdawać sprawę.

20160618102315-Travelentrepreneurs.jpeg

W zawodzie programisty, podobnie jak i w innych profesjach, są osoby bardziej i mniej kompetentne. Artyści i rzemieślnicy. Tych i tych jak najbardziej cały czas potrzebuje rynek. I co ciekawe - nie tylko rynek IT. Praktycznie każda firma potrzebuje obecnie programisty / programistów. Nie ważne czy zatrudnionych na etacie, czy pośrednio będących autorami oprogramowania na co dzień przez nich wykorzystywanego. Staliśmy się bardzo pożądani, a rekruterzy i firmy desperacko zaczęły o nas zabiegać. Temat desperacji pozwolę sobie pozostawić na oddzielny wpis, bo miałem okazję w ostatnim czasie trochę poobserwować rynek z perspektywy osoby poszukującej pracy...

Podsumowując wątek - praca w IT jest atrakcyjna, zarówno pod kątem osiąganych zarobków, jak i pod względem jej dynamiki i zróżnicowania. Ścieżek w branży jest cała masa, od programisty, których także możemy rozdzielić na backendowych, frontendowych, full-stacków, programistów systemów wbudowanych itd., przez analityków, architektów oprogramowania, testerów, a na project managerach kończąc. Jeśli ktoś z Was szukał w ostatnim czasie pracy to zapewne przekopywał się też przez nawał ofert pracy związanych z branżą IT (to często jest tym bodźcem zachęcającym również do poznania "wroga"). Gdzie zatem ukryty jest jakiś haczyk?

Zawód programisty nie jest wcale taki zajebisty...

...a przynajmniej nie jest tak w większości przypadków. Z reguły to niemalże dziesiątki godzin dziennie spędzonych na powielaniu już wcześniej zbudowanych schematów, poprawianiu błędów innych, często mniej kompetentnych programistów, tudzież walka z maszyną o to, kto ma rację, a kto tylko blefuje / hackuje. Tu swoje miejsce znajdą Ci "rzemieślnicy", których brak wystarczającej wiedzy ogranicza bezpośrednio w zaawansowanych działaniach, ale z drugiej strony, ich poziom wtajemniczenia wystarcza na to, by pod opieką innych programistów wspomagali proces tworzenia oprogramowania.

Firmy zatrudniają w tej chwili również osoby z niemalże zerowym poziomem wiedzy i inwestują w szkolenie takich osób. Próg wejścia do branży jest zatem bardzo niski! Dzieje się tak, gdyż już od kilku lat ofert pracy na rynku IT jest więcej niż osób zdolnych do ich podjęcia. SIC! Poniższy wykres idealnie ilustruje trend, zestawiając liczbę wykształconych specjalistów w branży IT (kolor niebieski) z ilością ofert pracy dostępnych na rynku (kolor żółty).

Picture1.png

Źródło: BLS, NSF, Bay Area Council Economic Institute

Na dodatek, ta wielogodzinna praca często odbywa się w mniej lub bardziej wykreowanej izolacji od społeczeństwa i świata zewnętrznego. Kto dobry koder ten wie jak łatwo wpaść w stan niemalże agonii, znudzenia i pewnego rodzaju depresji np. pracując zbyt długo w konkretnym projekcie, firmie czy technologii. Sam stawiałem czoła takim stagnacjom nie raz i nie dwa. Pisałem zresztą o tym w poście "Nie bój się zmiany na lepsze", w którym opisywałem jak z tego stanu wyszedłem w ostatnim okresie życia.

Warto również wspomnieć o tym, że nasz zawód wiąże się nieraz z ogromnym stresem i odpowiedzialnością. Systemy, nad którymi zdarza się pracować nie zawsze są tożsame z nic nie wnoszącą do życia grą w zbijanie kulek, a często zahaczają o tak wrażliwe aspekty życia i funkcjonowania Świata jak systemy bankowe, oprogramowania aparatur medycznych czy systemy przechowywania danych, na bazie których funkcjonują szanowane instytucje Państwowe i Światowe. Jeden błąd może dosłownie kosztować życie, a nieraz kosztował dziesiątki czy setki tysięcy złotych. Sam będąc raczej osobą z natury spokojną, wylądowałem w ubiegłym roku w szpitalu z niejasnym rozpoznaniem problemów żołądkowych, które wywołane zostały właśnie przez stres i nieregularny tryb życia, a dokładniej snu, czy też niemal jego braku.

Długo także można by się tutaj rozwodzić na problemami zdrowotnymi, które może powodować długotrwałe przesiadywanie w pozycji siedzącej - szczególnie w nieergonomicznej konfiguracji i budżetowym fotelu! To również temat do kolejnych rozważań.

No ale ej, uczysz przecież nawet dzieci programowania w WOW School, jak to tak?

Tak, to prawda. W WOW School prowadzimy zajęcia z programowania i jestem z tego powodu bardzo szczęśliwy i dumny. To, że swoim zasięgiem zahaczamy o co raz to nowe miasta (jesteśmy już w Warszawie, Białymstoku, Wrocławiu i od lutego również w Gdańsku!) dodaje mi energii do działania i przygotowywania co raz to nowych zajęć dla naszych podopiecznych. Moim zdaniem, im wcześniej ktoś zarazi się pasją, albo dojdzie do wniosku, że zupełnie go to nie jara tym lepiej! Chociaż patrząc na przykład samego siebie, programowanie zaczęło mi sprawiać przyjemność dopiero po ok. 3 latach prowadzenia swojej firmy IT (programując już zawodowo niemalże bez przerwy od początku studiów - firmę założyłem blisko ich ukończenia). Inna sprawa, że forma prowadzonych przez nas zajęć, jak i sam program, są takie, że dzieci nie nabywają stricte twardych umiejętności programistycznych (nadal nie wiedzą jak zakodzić i wyświetlić ciąg Fibonacciego :(), ale nabywają szereg przydatnych im, również w życiu "poza IT", umiejętności. M.in. uczą się w jaki sposób znajdywać drogę na skróty do rozwiązywania różnych problemów, które napotykają w życiu, jak pracować w zespole, jak przyznawać się do porażek oraz jak prezentować wyniki swojej pracy przed grupą obcych ludzi. A to tylko wierzchołek góry lodowej wszystkich potencjalnie przyswajanych kompetencji.

photon-5.jpg

Z uwagi, iż nie jesteśmy typową szkołą i wszyscy jaramy się niesamowicie tym co robimy na zajęciach, dzieci to również czują i albo zaczynają nam ufać i odkrywają razem z nami arkana Świata z komputerem wykorzystywanym inaczej niż w celu marnotrawienia czasu, albo podejmują decyzję, że jednak wolą na tym etapie życia uczyć się gry na gitarze czy też tajników szkiców i rysunków, dalej marnując czas (i często także pieniądze) na grę w gry, które stworzył ktoś inny w celach stricte zarobkowych. My nie robimy nic na siłę. Tłumaczymy również, zarówno młodszym jak i starszym uczniom, że nasz zawód (wszyscy trenerzy są czynnymi pracownikami / właścicielami firm w branży IT) nie jest łatwy i przed nimi na pewno długa, ale być może interesująca dla nich, droga.

Często powtarzam także, że niesamowicie zazdroszczę naszym uczniom! Ja sporo swojego czasu w dzieciństwie i okresie młodości można by rzec, że "zmarnowałem". Obserwując naocznie to co już Ci niesamowici mali ludzie tworzą, jestem pewien, że wśród nich wyrośnie kilku kolejnych Elonów Musków, Stevów Jobsów itp. Dziecięcą kreatywność należy wykorzystywać i czerpać z niej równie mocno. Kto wie, może gdyby ktoś wcześniej potrafił mnie zarazić pasją do programowania, byłbym teraz w jeszcze innym miejscu i etapie życiowym? 

Obecny etap nie jest też wcale taki zły ;)

IMG_5298.JPG

Dotrwałem do tego momentu i nadal chcę brnąć w to dalej!

O Ty sadysto! Nie no, cieszę się i gratuluję zdecydowania. Spróbować nigdy nie zaszkodzi. Powtarzam to każdej osobie, która pyta mnie o radę. Sprawdź się, spróbuj, zmobilizuj się choćby trochę. I nie wymaga to od nikogo zapisywania się na kurs za x tys. złotych. Można się testowo przejechać w domu. A jeśli brakuje Ci do tego motywacji bądź czasu - lepiej od razu daj sobie spokój :) Samodoskonalenie i odkrywanie nowych rzeczy czy technologii to także element codziennej pracy programisty.

Od czego zacząć?

  • Dowiedz się jeszcze więcej o naszym zawodzie i ścieżkach w branży IT. Poznaj historie i opinie innych programistów. Zapoznaj się np. z serią postów na blogu Maćka Aniserowicza zatytułowanej "Zawód-programista".
  • Poznaj swój lokalny rynek, zorientuj się czy w Twoim mieście bądź okolicy odbywają się jakieś branżowe spotkania typu meetup itp. i dołącz do dowolnego z nich!
  • Jak już obierzesz sobie kierunek (np. interesuje mnie tworzenie stron WWW od strony interfejsu użytkownika), poszukaj kursów online w danej dziedzinie i w wolnym czasie po prostu przez nie przebrnij. W sieci pełno darmowych narzędzi tego typu jak np. codecademy, Coursera czy udemy. Wiele nauczysz się także z wcześniej wspomnianych meetupów.
  • Wciel się w rolę twórcy, artysty, który swoim pomysłem starałby się rozwiązać jakiś istniejący problem, bądź wypełnić lukę w Sieci, którą zaobserwujesz. Podziel się tym pomysłem z kimś z branży i zapytaj się jakie kroki należałoby podjąć, aby coś takiego wdrożyć w życie.
  • Staraj się czerpać radość z tego co robisz, nie bój się eksperymentować - to tylko komputer :)
  • Nie bój się przyznać do porażki. Jeśli grzebanie się w stosie dziwnych literek, cyferek i szlaczków nie jest dla Ciebie, nie brnij w to na siłę.
  • Jeśli wszystko to dalej robisz tylko i wyłącznie ze względu na to, że ktoś powiedział Ci, że to "dobra fucha", albo "przyszłościowy" zawód - wróć na początek tego posta i zacznij jeszcze raz :)

Jeśli pomimo tego nadal będziesz miał jakieś dodatkowe pytania czy wątpliwości, śmiało pisz :) Postaram się je rozwiać.