Skuteczna nauka programowania

W ramach podcastu “Porozmawiajmy o IT” miałem okazję porozmawiać z Marcinem Czarkowskim o skutecznej nauce programowania.

Posłuchaj naszej rozmowy w wersji audio 🎧 👇

Cześć! Mój dzisiejszy gość to współtwórca przeprogramowani.pl, kanału YouTube, podcastu oraz bloga dla programistów szukających szerszego spojrzenia na swoje rzemiosło. Od początku kariery programistycznej pracujący w firmach produktowych, obecnie Senior Frontend Engineer w Smart Recruteirs — unicornie tworzącym system do obsługi procesów rekrutacyjnych dla klientów korporacyjnych oraz portal Smart-HR, przyjazny kandydatom portal, ułatwiający proces szukania pracy. Moim i Waszym gościem jest nie kto inny jak Marcin Czarkowski.

Cześć, Marcin!

Bardzo miło mi gościć Cię w podcaście.

Cześć!

Myślę, że wielu słuchaczom jesteś znany z takiego, powiedziałbym, popularyzowania frontendu, wiedzy na temat frontendu, w szczególności Java Scriptu, ale również takiego zdroworozsądkowego podejścia do rozwoju w tym naszym światku programistycznym, stąd myślę, że jesteś doskonałym gościem, żeby porozmawiać o skutecznej nauce oprogramowania.

Ale też znam Cię trochę, a właściwie słucham i oglądam Cię i wiem, że jesteś też fanem rytuałów, fanem nawyków i mam też taki rytuał tutaj u siebie, mianowicie na początku pytam mojego gościa o to, czy słucha podcastów, jeśli tak, to jakich najchętniej. O to samo chciałbym też Ciebie zapytać.

Tak, podcastów słucham naprawdę dużo, gdzieś tam za sprawą Spotify Rapt, tego podsumowania zeszłego roku, dowiedziałem się, że samego Joe Rogana słuchałem w zeszłym roku 205 godzin, więc to jest dość dużo. Bardzo lubię podcasty, to jest element mojej codziennej rutyny. Zawsze gdy sobie gotuję albo sprzątam, to ten podcast mi towarzyszy. I są trzy podcasty, których słucham najczęściej. Jest to wspomniany Joe Rogan ze względu na ciekawych gości, ale też bardzo luźną i autentyczną formę. Często jak ludzie widzą 3,5 godziny, to mówią: „Ja pierniczę”, w sensie po co, gdzie i jak? A ja sobie to do obiadku zawsze wrzucę i to naprawdę poszerza moją perspektywę.

Kolejnym takim podcastem jest Lex Fridman, również znany za pośrednictwem Joe Rogana, ale również obecnie już bardzo popularny podcaster, który również ma ciekawych gości i dużo bardziej merytoryczne rozmowy niż w przypadku Joe Rogan, dużo też tematów takich filozoficznych, historycznych, więc to bardzo mnie kręci.

I trzeci podcast, którego obecnie słucham trochę mniej, ale wcześniej bardzo dużo wniósł do mojego życia, to jest podcast Jordana Petersona, również dość znana postać, profesor psychologii. Od niego się bardzo dużo dowiedziałem o psychologii właśnie, o wartościach, trochę o tym, jak brać odpowiedzialność za własne życie. Na początku mojej nauki programowania to była wiedza, która bardzo mi pomogła, i wydaje mi się, że gdyby nie Jordan Peterson, to byśmy tutaj ze sobą nie rozmawiali i być może nie robiłbym tego wszystkiego, co teraz robię. Bardzo ten pan mi w życiu pomógł i wiele rzeczy mi rozjaśnił. Więc polecam.

To są takie trzy podcasty, do tego jeszcze Tim Ferris, Sam Harris — również bardzo polecam. A jeżeli chodzi o polskie, to szczerze mówiąc, nie słucham ich zbyt wiele, ale ostatnio słuchałem odcinka Twojego podcastu o języku Rust, bardzo mi się podobał, więc osobom zainteresowanym tym językiem bardzo polecam sprawdzić ten odcinek.

Te polecajki, zwłaszcza zagraniczne, o których tutaj powiedziałeś i też sposób, w jaki je konsumujesz, to jest, mam wrażenie, połączenie takich trzech rzeczy: wiedza, rozrywka i nauka angielskiego jednocześnie. Nie da się już chyba więcej w jednym czasie zrobić dla siebie. Super!

Chciałbym na początku zdefiniować, jak Ty w ogóle rozumiesz skuteczną naukę programowania, bo to może dla wielu osób oznaczać różne rzeczy. To może być otrzymanie pierwszej pracy, to może być zdanie testu na studiach, robienie czegoś po godzinach… Czym dla Ciebie jest skuteczna nauka programowania?

Te wszystkie takie zewnętrzne cele, o których wspominałeś i o których często ludzie myślą, np. pierwsza praca albo staż, albo osiągnięcie jakiegoś progu zarobków, to oczywiście jest istotne i jest jakimś tam wyznacznikiem tego, czy nam dobrze idzie, ale ja tego nigdy nie traktowałem jako nadrzędny cel. To dla mnie są tak naprawdę efekty uboczne procesu, w który ja wierzę, że jest ważny w XXI wieku, czyli właśnie poszerzanie swoich kompetencji, rozwój.

Mam głęboką wiarę, że inwestycja w wiedzę to jest coś, co zawsze się zwróci. Nie do końca może wiemy, jak, czy to będzie właśnie zdobycie pracy za rok czy za trzy, bo to nie jest od nas tak bardzo zależne, bo to, czy my zdobędziemy pierwszą pracę, to jest tak naprawdę decyzja kogoś, kogo my nie znamy, jest dużo czynników środowiskowych, na które możemy nie mieć wpływu, bo np. ktoś może dostać tę pracę zamiast nas, bo zna tę osobę. Znajomości grają rolę w życiu i nie ma sensu stwierdzić, że uczyliśmy się nieskutecznie przez dwa lata, robiąc to w sposób naprawdę zdyscyplinowany, bo np. nie jesteśmy w stanie dostać pracy. Nie traktowałbym tego jako wyznacznika tego, czy nam dobrze idzie. Oczywiście jeżeli będziemy faktycznie uczyli się w sposób systematyczny, zdyscyplinowany, to my te cele będziemy osiągali, bo po prostu będziemy zbyt dobrzy, żeby nas ignorować.

Więc ja bardziej tę skuteczną naukę programowania definiuję jako proces, który jestem w stanie powtarzać codziennie i który jest na tyle dobry, że coby się w świecie nie działo, to ja będę gdzieś tam te swoje cele realizował, jakie by one nie były. One u mnie dość często w życiu się zmieniały, bo coraz lepiej siebie rozumiem, coraz lepiej siebie znam. Trzy lata temu myślałem, że chcę A, teraz chcę B, a pewnie za kolejne trzy lata będę chciał C, bo po prostu się rozwijam, ale cały czas ta nauka mi towarzyszy, bo to jest proces, a nie dążenie do jakiegoś sześciopaka na lato, jak to dość często ludzie patrzą w ten sposób na siłownię.

Pewnie. Bardzo podoba mi się to ujęcie nauki programowania jako procesu, a nie jako odfajkowania na naszej liście, że już teraz umiem programować i bierzcie mnie na rynek pracy, jestem gotowy i będę zarabiał kokosy.

Ale chciałbym jeszcze ten temat trochę podrążyć, bo z pewnością jest Ci znany taki model rozwoju kompetencji w kształcie litery T, myślę, że wielu słuchaczom też jest on znany. I tam jest ta nóżka w tym T, która oznacza jakąś wąską specjalizację w wybranym zagadnieniu, w naszym przypadku programowaniu. Dla mnie ta nóżka w tym T to jest taka czarna dziura. Jak już się tam wejdzie, to nie ma końca. Zawsze jest coś, co mogę jeszcze poznać, zawsze są rzeczy, których jeszcze nie wiem, umiejętności, których jeszcze nie nabyłem.

I tutaj pojawia się też taka pułapka, żeby powiedzieć sobie dość. Albo kiedy powiedzieć, że jestem już wystarczająco dobry, że już wystarczająco nauczyłem się języka, biblioteki, podejścia, architektury, czegokolwiek, że mogę już z tymi umiejętnościami wejść na rynek, zacząć dzielić się tą wiedzą. Czy masz jakiś taki framework, jakieś takie zasady, które powiedzą, że okay, już wystarczająco dobrze opanowałem dane zagadnienie techniczne.

Tutaj udzielę dwóch odpowiedzi. Po pierwsze zawsze możemy znaleźć w internecie jakieś checklisty, roadmapy tego, co powinniśmy umieć, aby zostać programistą np. Java Script. Czy to są jakieś tam domknięcia, wynoszenie, zrozumienie tego typu koncepcji, bardzo często te listy się pojawiają, mają podobną zawartość, więc możemy trzy takie materiały znaleźć i uznać to za drogowskaz i odfajkowywać pozycje na tej liście. To jest na pewno skuteczny sposób. Działałem na taką modłę.

Ale drugie, to po raz kolejny chciałbym zauważyć, że wystarczająco dobry to jest zawsze względne. Bo możemy pójść na rozmowę o pracę i jedna osoba nam powie, że jesteśmy świetni, jutro możemy zaczynać jako junior i w ogóle, świetlana przyszłość przed nami, a drugiego dnia pójdziemy do innej firmy i nam powiedzą, że jesteśmy do niczego i że możemy przyjść najwcześniej za trzy lata, bo np. to będzie Google, gdzie wymagania są bardzo wysokie. Więc nie szukałbym tego „wystarczająco dobry” wewnątrz siebie.

Trzeba sprawdzać, wychodzić na ten rynek i dostawać feedback. I jak w końcu ktoś nam powie, że jesteśmy wystarczająco dobrzy, to jesteśmy. Ale to będzie bardzo zależne od kontekstu, więc po raz kolejny: bardziej inwestowałbym w to, żeby się uczyć, odfajkować z czystym sumieniem listę, a potem niech się dzieje, co ma się dziać, najwyżej przysiądę na kolejne 100 godzin i w końcu będę wystarczająco dobry.

Mówiłeś o tym procesie, mówiłeś, że nabywanie kompetencji, umiejętności związanych z programowaniem to droga. Chciałbym nieco bardziej zrozumieć tę drogę. Czy to jest coś wg Ciebie trudnego? Patrząc z Twojego doświadczenia i z perspektywy Twoich znajomych — o co tak naprawdę w tej nauce programowania chodzi?

Odpowiadając krótko na pytanie, czy nauka programowania jest trudna, moim zdaniem jest i wynika to z mojego doświadczenia i z dość licznych obserwacji. Miałem ku temu okazję, mamy z Przemkiem i Adamem kurs Opanuj Javascript, już prawie 700 osób uczyło się z nami tego oprogramowania i widzę, że większości ludzi sprawia to podobny problem, jaki sprawiało mnie. Wiem, bo prowadzę sesje mentoringowi jeden na jeden.

Ludzie przez pierwsze dwa lata walczą o życie, chyba że mają ku temu naprawdę predyspozycje. Ja nigdy się ich w sobie nie doszukiwałem, bo uważałem się za humanistę, zawsze byłem w klasie z rozszerzonym polskim, historią. Jeżeli do czegokolwiek w szkole się przykładałem, to właśnie do tych przedmiotów. Całą resztę miałem gdzieś tam w poważaniu większym.

I kiedy podjąłem decyzję, że spróbuję w programowaniu, to byłem po studiach prawniczych, które przerwałem, bo stwierdziłem, że to jednak nie będzie dla mnie. To było po prostu duże wyzwanie. Temu wszystkiemu towarzyszył jeszcze jakieś tam dołek psychiczny, zarówno na gruncie osobistym, ale też na gruncie rodzinnym, więc to był naprawdę ciężki okres i to było dla mnie trudne i wydaje mi się, że często ludzie decydują się na to, żeby zostać programistą — jeżeli nie idą tą klasyczną drogą, że idą na studia i przez 5 lat, utrzymywani przez rodziców mają czas, żeby się tego nauczyć — czyli jeżeli ktoś decyduje się, żeby zostać programistą w bardziej niestandardowych warunkach, czyli np. już ma rodzinę, dzieci, albo tak jak ja wtopił z innymi studiami i ma poczucie, że już jest ostatni dzwonek, to jest to na ogół trudne i wymaga dużo wysiłku i samozaparcia, żeby sobie z tym poradzić.I dużo czasu też tracimy na zrozumienie, co jest naszym prawdziwym celem.

Czyli to wcale nie jest poznanie składni języka Java Script albo jakiegoś tam frameworku React, wszyscy nam to zresztą mówią w internecie, bootcampy nam to mówią, cała komunikacja, jaka jest w internecie, mówi nam, że musimy po prostu posiąść jakieś umiejętności techniczne polegające na znajomości jakiegoś narzędzia. To tak naprawdę jest 20% sukcesu, a 80% sukcesu (znacznie trudniejszy), to jest sposób myślenia programisty, ta umiejętność analizowania problemów, rozwiązywania ich, rozbijania na mniejsze części — to naprawdę sprawia ludziom większość problemów.

Kiedy obserwuję podczas mentoringów, z czym ludzie mają problem, to nie jest to Java Script, tylko to, że oni tak naprawdę nie wiedzą, co chcą zrobić, bo np. nie zrobili dobrych notatek z treści zadania, nie przeanalizowali tego dobrze. Jak rozumiemy problem, to napisanie kodu to tak naprawdę jest ten przysłowiowy Google i Stack Overflow, bo o wszystko jesteśmy w stanie zapytać i tylko bierzemy gotowe rozwiązania tych naszych mikroproblemów, ale na ogół nie jesteśmy w ogóle w stanie zrozumieć, do czego dążymy.

I na tym polega ten cały problem przez pierwsze dwa lata, że niby koncentrujemy się na Javascripcie albo innym języku programowania, a totalnie z czym innym mamy problem. Ale dużo ciężej też przyznać przed sobą, że ja jeszcze nie potrafię dobrze myśleć jak programista, niż że ja nie znam Javascriptu. To jest najtrudniejsze w tym wszystkim.

Tak, bo to też nie jest takie sexy, nie? Tworzenie jakichś systemów, bycie częścią wielkich korporacji — wow, to jest coś, czym możemy się pochwalić, zaimponować. A nauka logicznego myślenia, nauki robienia notatek, nauka podejścia, nauka nauki (jak się uczyć) już nie są takie fajne. Jest elementem tej drogi, ale nie wygląda fajnie gdzieś tam na Instagramie.

Ale kiedy tak opowiadałeś, to przyszło mi do głowy, że może powinniśmy zrobić pewne rozróżnienie. Nauka programowania vs nauka kodowania. Myślę, że rzadko kto podchodzi do tego jak do nauki programowania, większość traktuje to jednak jako naukę kodowania, jako opanowanie rzemiosła, języka, frameworka itd. Natomiast programowanie to jest coś znacznie szerszego. Jest to temat pewnie na osobny podcast, ale warto tutaj też jasno sobie o tym powiedzieć.

Myślę, że sam rynek pracy też utrudnia młodym stażem opanowanie tych kompetencji, bo mierzy rzeczy, które są bardzo techniczne, namacalne, łatwe do oceny, a jak wiemy to, co się mierzy, to rośnie. Obserwując przez ileś lat ten rynek, widzę, że umiejętności miękkie (z braku lepszego określenia tak bym je nazwał) przerastają na znaczeniu jeśli chodzi o branżę IT, ale ciągle takie pierwsze zrozumienie np. nowej rekrutacji, która się otwiera, jest rozumieniem przez pryzmat tych kompetencji twardych, jakkolwiek by nie było.

Jestem w ogóle pod dużym wrażeniem Twojej otwartości w mówieniu o Twojej drodze. Myślę, że oprócz dawania konkretnych porad, może warto też zainspirować słuchaczy. Gdybyś jakoś szerzej opowiedział o swoich początkach nauki programowania.

Z wielką przyjemnością, w zasadzie nigdy tego nie robiłem, więc myślę, że to jest dobry moment. Miałem poczucie, że to się raczej nie uda, bo tak jak mówię, miałem łatkę humanisty, miałem też łatkę ze szkoły człowieka zdolnego, ale leniwego i to też była taka samospełniająca się przepowiednia. Jak usłyszałem to w wieku siedmiu lat, to potem już do matury grałem pod dyktando tych słów, mniej lub bardziej świadomie.

Na studia również poszedłem bardziej z myślą o tym, żeby się fajnie imprezowało i żeby były dziewczyny. Chciałem też wykorzystać swoje naturalne predyspozycje, więc poszedłem na prawo, bo stwierdziłem, że się świetnie wykłócam, zawsze świetnie mi szły jakieś debaty w szkole i to był, powiedzmy, mój poziom świadomości, gdy się decydowałem na drogę zawodową, zresztą nie jest mi specjalnie wstyd, że myślałem w ten sposób, mając 18 lat, bo to jest naprawdę bardzo młody wiek na podejmowanie takich poważnych decyzji.

Trzy lata później obudziłem się z ręką w nocniku, skończyłem praktyki w prokuraturze, myślałem, że będę prokuratorem i ręką sprawiedliwości, praktyki miałem bardzo fajne, ale niestety kompletnie mi się nie podobały i stwierdziłem, że jeżeli na to mam bardzo ciężko pracować do 30 roku życia, żeby skończyć w takiej pracy, to dziękuję. I podjąłem decyzję, że rezygnuję z tych studiów. Rodzice oczywiście nie byli przychylni tej decyzji. Gdy na dodatek wyskoczyłem z programowaniem, to było tak odległe od tego, czym się zajmowałem do tej pory. Oczywiście dużo czasu spędzałem przy komputerze, ale raczej grając, niż kodując, więc to była raczej decyzja z czapy, wszyscy komentowali, że ten to odpłynął daleko, ale stwierdziłem, że koniec takiego traktowania życia byle jak i że tym razem sobie wszystko dobrze przemyślę i podejdę do tego w taki sposób, że ryzyko porażki będzie naprawdę znikome i że dopóki mi się nie uda, to będę walczył.

I nawet nie skupiłem się od razu na tym, żeby się zagłębić w Java Script, tylko bardziej sobie przemyślałem, co jest ważne dla mnie w życiu, o co mi chodzi, czy ja naprawdę mam środowisko, które w ogóle mi pozwoli na tę skuteczną naukę programowania, czy ja się w ogóle dobrze czuję w swoim ciele. No nie, nie czułem się dobrze, dlatego poszedłem na siłownię i potem ta energia i pewność siebie bardzo mi pomagały przy nauce programowania. Dużo też pisałem w dzienniku, zadawałem sobie jakieś tam trudniejsze pytania.

Tutaj właśnie rola Jordana Petersona, który mówił, że to jest świetny sposób na to, żeby siebie poznać. I gdzieś tam powiedzmy, że włożyłem dużo pracy, żeby poznać samego siebie i żeby mieć tę pewność, że, mimo że to jest coś totalnie nowego i trudnego dla mnie, bo pierwsze dwa lata nauki programowania kojarzę głównie z uderzaniem dłonią w stół i mówieniem „mam dość”, ale udało się przez to przejść, bo miałem takie poczucie, że mając takie nastawienie na rozwój, jestem w stanie naprawdę dużo osiągnąć. I w taki sposób do tego podchodziłem, wyrabiałem w sobie konkretne nawyki, które mi pozwalały codziennie wkładać tę pracę i prowokować trochę szczęście.

Najpierw była okazja na staż, gdzieś tam kolega z dzieciństwa kończył teleinformatykę, załapał się do pracy, szukali stażysty, ja praktycznie goły i wesoły, aczkolwiek chętny do pracy, przyszedłem, za naprawdę śmieszne pieniądze, ale wreszcie ktoś mi płacił za to, żeby się tego programowania uczyć, więc bardzo szybko, po trzech miesiącach nauki już byłem na stażu, nie umiałem kompletnie nic, ale miałem chyba ten błysk w oku, poczuli, że co by mi nie dali, to może i za tydzień czy dwa, a nie na drugi dzień, ale przyjdę z gotowym rezultatem i powiem „dawajcie więcej”. Więc miałem takie poczucie, że trzeba włożyć tę pracę i że to w końcu będzie owocowało. I to się świetnie sprawdziło.

Potem poznałem Adama Overmenta, bo założyłem bloga, na którym dokumentowałem to, czego się obecnie uczę. Stwierdziłem, że może spróbuję z YouTubem, napisałem do Adama i on nie dość, że mi pomógł w rozpoczęciu drogi youtubowej, to jeszcze powiedział, że w zasadzie to szuka programisty w Krakowie i spytał, czy bym nie chciał spróbować swoich sił w rekrutacji. Spróbowałem i potem pracowaliśmy razem przez półtora roku. Dzięki temu poznałem też Przemka i teraz mamy owocną współpracę, mamy Przeprogramowanych, on mi też polecił firmę, w której obecnie pracuję, z której jestem mega zadowolony i to wszystko było wynikiem tego, że codziennie gdzieś tam wkładałem tę robotę i po prostu dawałem sobie szansę na to, żeby poznawać fajnych ludzi i za pomocą kompetencji, które sobie wyrobiłem, zyskać ich przychylność, żeby byli w stanie mi pomóc.

Dzięki, Marcin, za podzielenie się tymi informacjami. Myślę, że teraz słuchacze znają Cię jeszcze lepiej. To jest też fajne, dodaje takiego ludzkiego rysu do naszej historii. Jest to inspiracyjne, dziękuję Ci za to. Myślę, że to jest doskonały przykład na to, jak bardzo przeceniamy to, co jesteśmy w stanie zrobić w krótkim czasie, a jak bardzo nie doceniamy tego, co jesteśmy w stanie zrobić w dłuższym, pod warunkiem oczywiście, że regularnie wkładamy tę pracę, bo tu nie chodzi o upływ czasu, tylko o tę pracę, która jest regularnie wkładana.

Powiem Ci szczerze, że też jestem nieraz pytany o to, jak ja to robię, że przez ileś tam lat tworzę te treści, gdzieś tam się udzielam itd. Dla mnie to jest element lifestyle’u, element codzienności, element zaplanowanych małych rzeczy, które robię codziennie i które z perspektywy całego dnia wcale nie wyglądają jako coś tak olbrzymiego, ale kiedy się na to spojrzy faktycznie z perspektywy dłuższego czasu, to ten efekt widać.

I myślę, że identycznie działa to w przypadku nauki programowania i chciałbym Cię teraz zapytać o to, o czym już tutaj wspomniałeś przed chwilą, o to nastawienie i nawyki, które powtarzane codziennie przez dłuższy czas robią tę robotę. Jak Ty to widzisz?

Pierwsze, o czym warto wspomnieć, to jest właśnie ten element nastawienia. Czy my w ogóle wierzymy, że jesteśmy w stanie się tego programowania nauczyć. Bo wbrew pozorom wiele osób nie wierzy w to. Jest taka pani, Carol Dweck, ona jest profesorem psychologii abo socjologii na Uniwersytecie Stanforda i ona w swoich badaniach na dzieciach i dorosłych zauważyła, że ludzie mają dwa nastawienia do swoich możliwości i do tego, w jaki sposób są w stanie się rozwijać w świecie.

Niektórzy mają nastawienie na stałość, czyli uważają, że większość tego, co byli w stanie zrobić, zostało postanowione w chwili ich urodzenia za sprawą ich intelektu, genów i środowiska, w którym dorastali. Są teraz skończonym produktem i nadają się np. tylko do bycia prawnikiem, a nie nadają się do bycia programistą, bo nigdy nie byli np. dobrzy z matematyki w szkole. Mimo że na samym programowaniu spędzili w życiu zero godzin albo dwie godziny w fatalnych warunkach, ucząc się C++ na jednej lekcji informatyki. I to im wystarczyło, żeby stwierdzić, że oni programistą nie zostaną, gdzie tak naprawdę decyzję co do tego można by było podjąć po pewnie tysiącu godzin przepracowanych w sposób świadomy. Wtedy można wydać jakiś osąd, czy ktoś się do czegoś nadaje, czy nie.

Rzecz w tym, że to nie jest jedyne podejście, jakie mamy, bo jest również podejście „na rozwój”, które jest tam gdzieś dla nas dostępne. Czyli możemy mieć założenie, że to, że ja czegoś nie umiem, to nie jest w ogóle żaden wyznacznik tego, czy będę w stanie się tego nauczyć. To jest bardziej wiara w to, że trzeba poświęcić ileś tam czasu przez dłuższy okres, żeby nabyć jakieś tam umiejętności. Czyli tak naprawdę ja jestem w stanie nauczyć się większości rzeczy, tylko potrzebuję na to czasu. Na niektóre rzeczy potrzebuję go więcej, bo np. nie mam ku temu predyspozycji, a na niektóre rzeczy potrzebuję tego czasu mniej. Tak czy inaczej, ja się tego wszystkiego nauczę, tylko daj mi 3, 5, 10 lat na to.

I to jest naprawdę uwalniające podejście, bo wtedy jesteśmy w stanie grać ten long game, o którym ja tak mówiłem, że nie napinam się, że nauczę się programowania w pół roku, bo nie wiem, czy to mi zajmie pół roku, czy dwa lata na podstawie pierwszych pięciu godzin. I to też nie powinno mieć dla Ciebie specjalnie większego znaczenia, jeżeli Ty wiesz, że inwestycja w programowanie to jest dobra inwestycja. U mnie tak się stało, jak człowiek już gdzieś tam wchodzi na próg zarobków seniora, to naprawdę wszystkie jakieś poświęcenia finansowe, czasowe wydają się tego warte. Bo teraz ta kasa wpada, zagryzałem zęby, zaciskałem pasa, a teraz mam tych pieniędzy tyle, że nie muszę się niczym przejmować.

Ale żeby do takiego momentu dojść, to może nam to zająć rok, 5 lat, 10 lat… Musimy wierzyć w to, że to jest osiągalne. Kluczowe jest, żeby ściągnąć z siebie to takie sztuczne ograniczenie psychiczne. Ale niestety w szkole jesteśmy tak oceniani. Zdolny, leniwy, humanista, ścisłowiec — to są naprawdę kategorie, które nie mają wiele potwierdzenia w badaniach. Od tego bym mocno uciekał.

To teraz może powiedz właśnie o inteligencji, o tym, jak jesteśmy w stanie szybko przyswajać te nowe umiejętności. Czy tutaj jest wpływ bezpośredni naszej wrodzonej inteligencji? Czy można by powiedzieć, że tutaj nie ma to właściwie znaczenia? Czy też jest bezpośredni wpływ?

To, że inteligencja jest jakimś wyznacznikiem tempa naszego rozwoju i że ona jest w znacznej części wrodzona, to jest fakt i z tym nie da się w żaden sposób dyskutować. Jeżeli cokolwiek w psychologii jest potwierdzone, to inteligencja to jest właśnie to. I ona ma wpływ, ale na tempo naszego rozwoju. Więc jeżeli jesteśmy obdarzeni ponadprzeciętną inteligencją, to nauka programowania zajmie nam rok zamiast trzech lat.

Więc traktowałbym wiedzę o własnym poziomie inteligencji jako wskaźnik tego, ile muszę się spodziewać pracy, jaką będę musiał włożyć. Nie traktowałbym tego w żaden sposób jako ograniczenie albo wymówkę. Jeżeli ktoś wie, że nie jest super bystry i nie ma świetnego hardware’u w mózgu, to ja bym to jedynie traktował jako „aha, czyli ja po prostu zamiast dwóch godzin dziennie, muszę się uczyć trzy” i jeżeli naprawdę nam zależy i bierzemy odpowiedzialność, to jest jedyne, czego się dowiedzieliśmy i co powinno nas interesować.

W żaden sposób nie uważam, że programowanie jest tylko dla osób ponadprzeciętnie inteligentnych. Naprawdę w pracy spotykam zarówno osoby bardzo bystre, jak i osoby przeciętnie inteligentne. Programistami są często na podobnym poziomie, bo to jest po prostu bardziej kwestia poświęconych godzin i doświadczenia, niż tego, na ile szybko jesteśmy w stanie myśleć.

👉 Czytaj dalej na: https://porozmawiajmyoit.pl/poit-159-skuteczna-nauka-programowania/

--

--

Dev and life blog. Thoughts about programming, design patterns, Ruby and life.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Krzysztof Kempiński

Krzysztof Kempiński

655 Followers

IT expert. Ruby on Rails/iOS/Elixir programmer. Blogger. Podcaster.