Jakub Gutkowski, programista: życzę wszystkim by nic nigdy nie musieli. Jak programowanie dało mi wolność

03.10.2017 AUTORZY: Jakub Gutkowski, Marta Bąk-Kamińska,

Marta Bąk, Marketing i Biznes: Sam o sobie piszesz, że “lubisz testować nowe języki”. Czy uważasz, że młody programista powinien spróbować jak największej ilości języków programistycznych, czy raczej wyspecjalizować się w jednym?

Jakub Gutkowski, (blog.gutek.pl): Wszystko zależy od kontekstu. Jeżeli młody programista to student informatyki, to im więcej pozna języków, tym łatwiej mu będzie potem wybrać ten docelowy czy też dobrać język/środowisko do problemu. Sam nie wiem co dokładnie znaczy „specjalizacja” w języku programowania. To, że znam biblioteki i całe środowisko? czy znam ciemne zakamarki języka?

Moim zdaniem, ogólnie trzeba znać wiele języków, środowisk i narzędzi. To się może wydawać dość… błahe. Po co znać 4 języki, jak można być specjalistą w C# i wiedzieć, że jak się zrobi build pod 64-bitową maszynę w opcji realease to możliwe, że optymalizacja ogonowa zostanie wykorzystana?

Tylko, że to jest używanie porcelany do wbijania gwoździ. Może się da… ale czy warto? Bez poznania innych języków i środowisk nie zostaną nam dostarczone narzędzia jak i punkty widzenia, które umożliwią nam widzieć problem na kilku płaszczyznach i pod wieloma kątami. Nie wspominając o paradygmatach które dane języki i środowiska nas nauczą. Na przykład zrozumienie Map/Reduce jest niemal koniecznością w Elixir czy R, zaś w C# możemy żyć bez tego.

Oczywiście, mowa tutaj o poznaniu języków które mają podobne zastosowanie. Bo ciężko jest porównać HTMLC# czy ErlangT-SQL. Ale już C#Java, F#Scala, czy RubyPython. A może w ogóle ClojureErlang, a może RustGo.

Jeżeli zaś nie mamy czasu lub mamy ograniczony czas do znalezienia pracy to lepiej skoncentrować się na poznaniu jednego języka i dopiero potem uczeniu się innych.

programista  

Co innego, jeżeli chodzi o specjalizowanie się w jakiejś konkretnej dziedzinie. Czy to bardzo szeroko pojęte strony internetowe czy też już bardziej specjalistyczne sposoby rozpoznawania mowy. Nie ma znaczenia co (w sensie w kontekście tego zdania), ważne by być w czymś bardzo dobrym. Znajomość kilku języków, jak ich środowisk ułatwi nam specjalizowanie się w danej dziedzinie.

Od blisko 10 lat prowadzisz bloga. Blogosfera przez tą dekadę z pewnością się zmieniła. Czy dziś łatwiej jest zaistnieć blogerom  IT?

Teraz jest moim zdaniem dużo trudniej, ale też… dużo łatwiej. Pytanie, co jest naszym celem. Kiedyś nie było tylu opcji dzielenia się wiedzą jak i też nie każdy widział w tym coś dobrego. Dla przykładu, zamiast wchodzić na Google, by znaleźć odpowiedź na pytanie, instalowało się dokumentację z płytek CD czy DVD, a to znaczyło tylko tyle: po co wchodzić gdzieś, skoro to, co potrzebuję, mam lokalnie.

Zmiany przychodziły wolno, ale przyszły. Na tych, którzy akurat w tamtym okresie prowadzili blogi natrafiła fala która ich poniosła dalej. Inni/nowi musieli już gonić tych, których fala wyniosła. To samo się wydarzyło parę lat temu z YouTube, to samo z kursami online itp. Dużo osób zaistniało, bo akurat zainwestowało w daną platformę w dobrym momencie.

programista  

Teraz zaś niby tego jest DUŻO, ale też jest dużo więcej odbiorców. A im więcej odbiorców tym więcej różnych zapotrzebowań. Jedni będą chcieli się dowiedzieć jak rozpocząć karierę w IT a inni, jak się rozwijać a jeszcze inni jak zoptymalizować kod tak by najwolniejszą metodą w kodzie było frameworkowe z .NET DateTime.UtcNow. Każda z tych grup ma swoich zwolenników, nie każda jest tak samo liczebna.

Najważniejsze to chyba robić, tworzyć i być sobą. Może zadziała. A jak nie, to nic się nie stało, zaciągamy rękawy i robimy dalej swoje, wyciągając wnioski.

Na przykład jakimś pomysłem na to, by złapać się na falę, jest przeglądanie stron dotyczących futurologii. Wychwytywanie informacji co według innych będzie przyszłością i inwestowanie czasu w daną technologię jak i ludzi oraz całe środowisko wokół tej technologii. Dużo szansa, że jak przyjdzie fala, to my na nią już będziemy czekać.

programista  

Zrobiłeś eksperyment na swoim blogu, publikowałeś codziennie materiały. Gdzie szukałeś inspiracji do wpisów, czy nie odczuwałeś „zmęczenia materiału”? To również od Ciebie wymagało z pewnością sporej determinacji i samodyscypliny. Jak wówczas organizowałeś sobie czas? Jaki był cel tego eksperymentu?

Najlepiej będzie rozpocząć od końca – jaki był cel pisania codziennie? Tak jak podzieliłem się na blogu, cel był zapisany tak:

Pisz codziennie przynajmniej przez 15 min przez cały rok. Codziennie to znaczy, od obudzenia się do godziny 23:59. To co napiszesz od 00:01 do ranka nie zalicza się w żadnym z tych slotów. Jeżeli masz noc nieprzespaną, liczy się moment “rozpoczęcia” dnia – śniadanie, wyjście z domu, itp.

To co piszesz ma mieć jakąś wartość: coś co uważasz, że ktoś inny by chciał przeczytać, lub to co sam byś chciał przeczytać. Jeden wyjątek: emocjonalne wyżycie się na papierze – DOZWOLONE.

Do tego chciałem poprawić swoją pisownię (jako dyslektyk mam z tym duży problem, szukałem rozwiązania, które dla mnie będzie działało), rozpisać się i nauczyć się/doszkolić w przekazywaniu tego, co chcę, za pomocą słowa pisanego.

programista  

Sądzę, że wszystkie te cele udało się osiągnąć. To, czego się nie udało, to opanowanie i w pełni wprowadzenie prawego małego palca w trakcie pisania na klawiaturze 🙂 nad tym cały czas pracuje 🙂

Jednak nie wytrwałbym w tym, gdyby nie dwie najważniejsze rzeczy: rodzinaczytelnicy. Rodzina wtedy, kiedy trzeba było była wyrozumiała, zaś gdyby nie czytelnicy to bym pewnie po miesiącu przestał blogować. Jestem za to niesamowicie wdzięczny, w szczególności za wszystkie te maile i miłe słowa które dostawałem, a które w odpowiednich momentach dawały mi odpowiedniego kopa 🙂

Niezależnie jak dużą miałem motywację cały proces trzeba było zaplanować. Pisanie codzienne nie jest łatwe, jednak możemy sobie znacząco pomóc. Po pierwsze zacząłem spisywać wszystkie pomysły które mi do głowy przychodzą, nawet te które już spisałem czy też opisałem, spisywałem dosłownie wszystko – i to wszędzie, na spacerze, w trakcie pracy, podczas śniadania, brania prysznica, po prostu jak miałem pomysł to spisywałem by tylko nie zniknął.

Po drugie zwracałem dużą uwagę na to co robię w pracy i w życiu i to czy to co robię może komuś pomóc. Po trzecie starałem się każdego dnia o tej samej porze pisać. Po czwarte planowałem, jak poradzić sobie z kryzysami które wiedziałem, że nastąpią. To planowanie polegało na tym, żeby zawsze był jakiś post na wszelki wypadek i by było kilka postów rozpoczętych do których mogę siąść i je dopracować. Wszystko bym nie miał kłopotu i by niepotrzebnie blog nie generował stresu, że MUSZĘ coś zrobić. To dało mi swobodę i spokój ducha.

Zmęczenie materiału zaś było nie raz odczuwalne, a im bliżej końca, tym większe. Do tego stopnia, że jest teraz końcówka września i ja dalej mam kłopot z zebraniem się, by coś napisać. Jednak w sytuacjach zmęczenia materiału zawsze działał plan awaryjny – czy to gotowy post, pomysł czy może nawet przypadkowe zdarzenie w pracy. A jak to nie pomagało, to miły mail i słowa otuchy od czytelników zawsze POMAGAŁY.

programista  

Nie sądzę bym wszystko był wstanie uchwycić w tej odpowiedzi. Może kiedyś się zbiorę w sobie i opiszę lub może opowiem ze szczegółami.

Jak patrzę na wystąpienia programistów, bądź zaczynam czytać ich bloga to szczerze, czasem nie ogarniam niektórych pojęć. Jeśli bym sobie postanowiła, że teraz zacznę się uczyć programowania, to w zasadzie od czego powinnam zacząć? Od wyboru języka, rozpracowania Waszego slangu (śmiech), czy jeszcze coś innego?

Od odpowiedzenia sobie na pytanie co jest dla Ciebie ważne. Każdy z nas ma inny cel i do czegoś innego dąży. Jeżeli mam rodzinę na utrzymaniu i wybieram drogę zostania programistą/programistką, to patrzę na to inaczej niż kiedy mam czas i uczę się czegoś, bo chciałbym móc stworzyć stronę internetową. Ten cel nie musi być jakoś dokładnie zdefiniowany. Na pierwszym roku na przykład student może pomyśleć, że chciałby bawić się sieciami komputerowymi. To trochę ukierunkuje na to co trzeba poznać i jakie języki oraz technologie warto opanować. Dziewczyna z gimnazjum może chcieć tworzyć gry online. Zaś matka dwojga dzieci, pracująca jako menadżer w jednej firmie, może chcieć umieć stworzyć sobie stronę internetową.

Jak widać, to nie są jakieś wyższe życiowe cele. Jednak jedno jest pewne, oni wiedzą co chcą móc potrafić zrobić. To jest jak z chęcią grania na instrumencie muzycznym. Chcę się nauczyć grać na instrumencie muzycznym, ale nie wiem jakim i nie wiem jaka muzyka mnie interesuje, doradź. Można jedynie zadać szereg pomocniczych pytań, by taka osoba sama doszła do wniosku co chce robić. Ale MY nie możemy jej powiedzieć, że TO jest to co powinna robić.

Mając świadomość tego co chce się osiągnąć lub do czego się zmierza jest dużo łatwiej. Mamy nałożone już ograniczenia i wystarczy, że będziemy zagłębiać wiedzę z tej dziedziny. Im więcej będziemy czytać i praktykować, tym szybciej też opanujemy słownictwo slangowe. Jednak znajomość slangu nie jest konieczna, teraz w dobie Internetu wystarczy zadać zapytanie googlowi: Słowo definition [czasami technologia] i mamy odpowiedź, co to oznacza. Sam to stosuje.

 

Nie znam wszystkich skrótów, nie rozumiem spolszczonych słówek, czy też gdy ktoś używa nowego słowa które mnie zainteresowało jak na przykład unikernel (o czym niebawem u mnie na blogu). No ale właśnie, ta ciekawość, bez niej będzie ciężko.

Wszystko więc zależy, bo jeżeli mamy czas, to czytamy, kształcimy się w danym temacie i powoli zaczynamy programować i uczyć się tego. Jeżeli czasu nie mamy, to najlepszym rozwiązaniem jest pójście na kurs (online czy offline), który po prostu poukłada nam wiedzę teoretyczną i da praktykę.

Kiedy zależy nam na czasie, to też lepiej żebyśmy nie błądzili po ciemku, tylko mieli kogoś lub platformę, na której możemy spytać się innych.

Osoby kompletnie zielone nie mogą SKOCZYĆ do programowania, bo łatwo pójść na dno i się zniechęcić. To jest jak skoczenie do rozjuszonego morza nie umiejąc pływać – to nie jest basen z głębokością 1m.

Co Tobie daje organizacja warsztatów devWarsztaty. Czy uczysz się czegoś od uczestników?

Łatwiej było by odpowiedzieć czego się nie uczę uczestników 😉 uczę się dosłownie wszystkiego, wytrwałości, kombinowania, dochodzenia do rozwiązania, pasji, chęci nauki, systematyczności, niepoddawania się. Oj i DUŻO więcej. Naprawdę jestem POD NIESAMOWITYM wrażeniem uczestników devWarsztatów. Potrafią oni wstać o 4 w KRK by o 9 pojawić się na warsztatach by potem o 18 wrócić do domu. Po prostu WIELKI SZACUN.

A co mi daje organizacja devWarsztatów? FRAJDĘ jakich mało. devWarsztaty to teraz jak się nie mylę prawdopodobnie największa polska non-profit organizacja zajmująca się warsztatami IT która dostarcza systematycznie 1-2 warsztaty w miesiącu kompletnie za darmo. W mojej głownie nigdy nie myślałem, że tak to się rozrośnie. Moim celem było organizowanie 1-2 warsztatów na kwartał/pół roku i się zastanawiałem czy w ogóle ktoś przyjdzie na warsztaty…. Porównując to z rzeczywistością, to bilety na Warszawskie spotkania rozchodzą się w 15-20 sekund. TO JEST po prostu WOW. Dodatkowo coraz częściej mamy momenty, że każdej soboty gdybyśmy byli wstanie fizycznie (i rodzinnie) to mogli byśmy organizować warsztaty. Daje mi to więc jeszcze ogromną SATYSFAKCJĘ – że coś takiego udało się stworzyć, że ludzie z tego korzystają. Znów, społeczność daje kopa do działania jak nikt inny.

Ale nie ma co mówić, że to tylko ja. Teraz jest nasz już kilu – Piotr Stapp bez którego pewnie devWarsztaty by już padły (serio!), Paweł Łukasik który płynnie i bezproblemowo rozwija devWarsztaty we Wrocławiu wraz Jarkiem Stadnickim dzieląc się swoją wiedzą i doświadczeniem w prowadzeniu grup społecznościowych z nami – co niesamowicie nam ułatwia pracę. Klaudiusz Bryja i Rafał Stępień prowadzą warsztaty w Krakowie i Norbert Rozmus organizująca spotkania w Katowicach.

Programujesz już od wielu lat. Gdybyś teraz mógł cofnąć się w czasie i spotkać siebie, gdy zaczynałeś się uczyć. Co byś sobie powiedział, innymi słowy, jakie możesz dać rady dla początkujących programistów.

Nie lubię dawać rad. Bo wszystko zależy od tego kim jest początkujący programista i jaki ma on cel.

Mogę powiedzieć jedynie co ja bym pewnie chciał zrobić patrząc na to jak się ułożyło całe moje życie: powinienem dużo szybciej i dużo więcej uwagi poświęcać podstawom – jak działa komputer od podstaw. Co to jest tranzystor, na czym polega bramka logiczna i o co w ogóle chodziło w assemblerze. Potem oczywiście jak działają sieci, na czym polega OS, file system etc. tego materiału jest dużo, patrząc jednak na swoje doświadczenie widzę, że wiedza ta by mi dużo rzeczy w życiu ułatwiła. Niedawno trafiłem dopiero na książkę Code: The Hidden Language of Computer Hardware and Software napisaną przez Charlesa Patzolda.

To otworzyło mi oczy.

Chciałbym by ktoś mi to tak wytłumaczył, jak Charles tłumaczy to nam, czytelnikom. Zaczynając od problemu porozumiewania się na odległość, poprzez kod braille’a, kod morsa po budowę procesorów i układów scalonych. Kiedyś zastanawiałem się nawet nad tym czy by nie zorganizować akcji rozdawania książki na studiach, by studenci z informatyki mieli swój brakujący wstęp.

Dokładna wiedza o podstawach nie jest wiedzą, która jest potrzebna, by być programistą. Dla przykładu, możemy całe życie programować i nigdy nie użyć operacji bitowych. Albo też nigdy nie mieć problemu z liczbami zmiennoprzecinkowymi. Jednak by móc robić bardziej zaawansowane rzeczy w którymś momencie wiedza o podstawach się przyda. W jakim stopniu, ciężko powiedzieć.

programista  

Jedno na pewno można powiedzieć, bycie programistą nie jest proste, wymaga dużo pracy i dużo praktyki. A to wymaga czasu i poświęcenia. Niezależnie od tego jakim programistą chcielibyśmy zostać oraz jaki jest nasz cel, to nie należy się poddawać niepowodzeniom.

Wręcz przeciwnie, uczyć się na nich i dociekać, dlaczego tak, a nie inaczej. Jeżeli to robimy, to mamy duże zadatki na bycie bardzo dobrym programistą.

Rozwiązywanie problemów w programowaniu. Gdzie szukać rozwiązań? Czy powinniśmy mieć mentora, który nam doradza, czy wręcz przeciwnie – istnieje w końcu prawdopodobieństwo, że możemy w ten sposób się rozleniwić.

Dobrego mentora ze świeczką szukać. Ale jeżeli takiego mamy to odpowiedź jest prosta: Mentor. Jednak mentor mentorowi nie równy. Ostatnio miałem w rękach książkę (wiem temat jej odbiega JAK NIC od programowania, ale…): Jak mówić, żeby dzieci nas słuchały. Jak słuchać, żeby dzieci do nas mówiły autorstwa Faber Adele i Mazlish Elaine. W rozdziale o zachęceniu do samodzielności były dwie BARDZO dobre rady: nie spiesz się z udzieleniem odpowiedzi oraz zachęć do korzystania z cudzych doświadczeń.

Pierwsza rada ma za zadanie spowodować, by osoba sama znalazła odpowiedź na pytanie, by się nad tym zastanowiła i nie oczekiwała, że wszystko dostanie podane na tacy. Druga rada mówi o tym, że sami nie jesteśmy wstanie o wszystkim wiedzieć. Umiejętność korzystania z wiedzy innych jest jedną z podstawowych umiejętności jakie powinniśmy nabyć.

Jednak, jak już sami widzimy po pierwszej radzie, z dobrym mentorem będzie ciężko 🙂 Bardzo dużo ludzi już spieszy się z odpowiedzią, nie dając nam możliwości samemu dojścia do niej. A to uczy lenistwa. Po co się uczyć, jak mogę się spytać omnibusa i mieć popołudnie wolne na granie w pasjansa?

Jeżeli nie mamy mentora to pozostaje nam moc Internetu. Najpierw szukamy a potem pytamy. Zaczynając od Stackoverflow, idąc przez Google, Twtter, Facebooka, a kończąc na mailu – na przykład do mnie lub jakiegokolwiek blogera technicznego. Trzeba tylko się odważyć i zadać pytanie. To jest jednak najtrudniejsze.

Kończąc już wywiad, czego mogę Ci życzyć w rozwoju Twojej kariery?

Swojego czasu wrzuciłem cytat, który przyszedł mi do głowy: Cieszę się, że nic nie muszę. Dosłownie, że tak układa mi się, życie, że nie muszę robić rzeczy, których nie chcę, nie muszę też znosić obraźliwego szefa, poniżania w pracy itp. Robię to co sprawia mi przyjemność i robię to, co jest zgodne z moim wewnętrzny ja. A to daje mi spokój. Zabiera dziwny niepokój czy też gniew i złość z życia i powoduje, ze mogę pozytywnie patrzeć na świat i doceniać wszystkie jego kolory.

Można więc mi życzyć tego, ja także życzę to wszystkim, Tobie, czytelnikom, jak i każdemu kogo spotykam.

Wywiad powstał dzięki:

Coders Lab

Łącząc doświadczenie edukacyjne ze znajomością rynku pracy IT, Coders Lab umożliwia szybkie i efektywne zdobycie pożądanych kompetencji związanych z nowymi technologiami. Skupia się się na przekazywaniu praktycznych umiejętności, które w pierwszej kolejności są przydatne u pracodawców.

Wszystkie kursy odbywają się na bazie autorskich materiałów, takich samych niezależnie od miejsca kursu. Dzięki dbałości o jakość kursów oraz uczestnictwie w programie Career Lab, 82% z absolwentów znajduje zatrudnienie w nowym zawodzie w ciągu 3 miesięcy od zakończenia kursu.


Do góry!

Polecane artykuły

18.09.2020

Fotel gamingowy – zbędny ...