Ile poświęciłem czasu na naukę programowania?

Do poznania podstaw programowania, składni języka i najważniejszych elementów bibliotek standardowych przeciętnie zdolnej osobie wystarczy ok. miesiąca regularnego ćwiczenia po 3h dziennie, czyli jakieś 90h. Umiejętności takie wystarczą co najwyżej do napisania prostego programu do celów amatorskich.

Taka wiedza jest jednak niewystarczająca, aby zacząć pracę komercyjną. Rosnące pensje w IT spowodowały wzrost liczby „szkół” programowania, które w wielu przypadkach próbują wmówić, że miesięczny kurs nauczy Cię tyle, co kilka studiów lub setki godzin samodzielnej nauki.

Jeśli chcesz osiągnąć coś szybciej, to musisz włożyć w to o wiele większy wysiłek w porównaniu do osób, które systematycznie przez wiele lat dochodziły do tego małymi krokami.

Nigdy wcześniej nie zastanawiałem się, ile zajęła mi nauka programowania. Przychodziła mi ona z łatwością i traktowałem ją jak hobby. Postanowiłem jednak oszacować liczbę godzin jaką mogłem spędzić na nauce aż do uzyskania pierwszej pracy.

Programowanie komercyjne

Wymagane umiejętności programowania w świecie komercyjnym są zupełnie na innym poziomie niż programowanie amatorskie. To tak jak różnica między kierowcą wyścigowym a zwyczajnym kierowcą, który ukończył prawo jazdy. Nikt nie weźmie Cię do zespołu, jeśli nie zobaczy, że nie włożyłeś w to więcej pracy niż reszta i nie jesteś coś wart.

Nie inaczej jest w IT. Kurs, studia, książka przygotowuje Cię od strony merytorycznej i tylko w ograniczonym zakresie – podstawy. Trening programowania musisz prowadzić na własną rękę w każdej chwili wolnego czasu, układając swój cały plan dnia tylko pod to. Nauka programowania musi stać się Twoim priorytetem, zainteresowaniem i hobby. Jeśli nie pracujesz i masz dużo wolnego czasu to poświęć na to 8h dziennie. Jeśli pracujesz i masz jakieś obowiązki, znajdź przynajmniej na to 2-3h dziennie.

Ile czasu poświęciłem na naukę?

Pierwszą styczność z programowaniem miałem jeszcze przed pójściem do liceum jednakże było to bardzo mały epizod na, który poświęciłem co najwyżej kilka godzin. W liceum uczyliśmy się Pascala (teraz jest Python). Z tego, co pamiętam, nie było dużo zajęć, ale poświęcałem sporo czasu na naukę w domu oraz w autobusie – ok. 80h (wtedy nauczyłem się także podstawowej składni C++)

Liceum:
Informatyka Pascal zajęcia: 80h

W okresie Studiów miałem styczność z większą liczbą języków: C, C++, Java, Ada95, Simula, R, SQL i C#. Liczbę godzin wykładów, ćwiczeń i laboratoriów wziąłem z suplementu dyplomu. Na niektóre wykłady nie chodziłem, więc może być jakieś małe przekłamanie w obliczeniach:

Studia:
Wprowadzenie do programowania zajęcia 60h
Algorytmy i struktury danych 60h
Grafika komputerowa (Open GL) 54h
Programowanie obiektowe zajęcia 50h
Języki i techniki programowania 30h
Programowanie zdarzeniowe 30h
Podstawy programowania niskopoziomowego 30h
Bazy danych zajęcia 60h
Sieci neuronowe 44h
Obliczenia równoległe i rozproszone 44h
Praktyka zawodowa 160h
Aplikacje internetowe 30h

ImagineCup
W trakcie studiów brałem udział w konkursie Imagine Cup gdzie tworzyłem aplikację na Windows Mobile 6.5, Windows Mobile 7 i Androida. Okres intensywnej pracy aplikacji trwał ok. 3 miesięcy. Programowałem wtedy po nocach, w święta i nowy rok. Średnio ok. 4 godzin dziennie, czyli 360h w okresie całego projektu. Po konkursie aplikacja była rozwijana dalej aż do momentu zakończenie przeze mnie studiów inżynierskich. Na całość poświęciłem przynajmniej 800h. W tym okresie nauczyłem się najwięcej podczas całej edukacji – oczywiście nie byłoby to możliwe, gdybym nie miał solidnych podstaw. Tworzenie realnego projektu jest najlepszym sposobem na naukę programowania.

Praca w domu
Oprócz samych zajęć i projektu ImagineCup od początku studiów aż do 5-6 semestru (gdy zaczęła się praca nad projektem ImagineCup) poświęcałem bardzo dużo swojego wolnego czasu na naukę programowania. Na pracę w domu poświęcałem ok 4 razy więcej czasu niż na ćwiczenia. Przyjmując, że połowa czasu na studiach to wykłady to czas poświęcony w domu na naukę to ok 1200h w ciągu 5 semestrów

Powyższe obliczenia są orientacyjne i są raczej zaniżone niż zawyżone. Nie jestem w stanie zliczyć, ile razy siedziałem przez całą noc robiąc projekty lub rozwiązując jakieś problemy.

Aby zacząć pierwszą pracę potrzebowałem ok.
2700h
nauki związanej z programowaniem.

W przeliczeniu na 8 godzinny tryb pracy na pełnym etacie to ok. 15,5 miesiąca. Czy każdy potrzebuje tyle czasu, aby dojść do takiej wiedzy, jaką ja posiadałem przed pierwszą pracą? Raczej nie. Czas ten był spożytkowany niezbyt efektywnie. Długie przerwy wakacyjne powodowały, że nie utrwalałem części wiedzy. Nauka niektórych języków bardziej przypominała historię programowania i nie przynosiła większych korzyści. Rozpoczynanie nauki nowego języka powodowało konieczność zapoznania się ze składnią, ze środowiskiem i z konwencjami.

Takie pomieszanie z poplątaniem miało też pewne korzyści. Zobaczyłem różne technologie, techniki i problemy. Dzięki temu mogłem wybrać to co mi najbardziej odpowiada.

Efektywna nauka mogłaby zmniejszyć liczbę godzin, ale nie więcej niż o połowę. Moim zdaniem 1000-1500 godzin systematycznej i wysokiej jakości nauki, (codzienne programowanie przez min. 4-5h dziennie przez rok) powinno wystarczyć zdolnej i bardzo zawziętej osobie. Przy mniej intensywnej pracy musisz liczyć, że będzie to ok 2-3 lat pracy.

Kiedy najlepiej trenować programowanie?

To zależy jaki masz chronotyp (czy jesteś sową czy skowronkiem).

Jako student byłem typową sową (jak większość młodych ludzi). Siadałem przed komputerem ok. 22 i kończyłem naukę o 4-5 rano. Teraz lubię obudzić się o 6 rano ☕️i od razu zacząć pracę. Nie ważne, jaki masz chronotyp to od razu po przebudzeniu jesteś najbardziej efektywny. Najważniejsze jest, aby nie mieć żadnych rozpraszaczy przez minimum 1,5h. Wybierz czas, kiedy już albo jeszcze wszyscy śpią i nie będą Ci przeszkadzali. Wyłącz telefon i nie włączaj żadnych rozpraszaczy przez ten czas.

Jeśli nie wiesz jak znaleźć czas do nauki to sięgnij do książki Miłosza Brzezińskiego „Wy wszyscy moi ja”. Wiele wskazówek w niej zawartych pozwoliło mi znaleźć sposób na pogodzenie nauki, pracy i rozrywki. Jeśli nie masz czasu jej przeczytać to jest także dostępny audiobook, którego możesz posłuchać np. podczas drogi do pracy, posiłku i sprzątania. Możesz także zasięgnąć porad ze strony takiej jak https://liczysiewynik.pl/category/rozwoj-osobisty/ Bartka Popiela, który ma mnóstwo materiałów o optymalizacji życiowej.

W IT nigdy nie przestaniesz się uczyć

Dostanie pracy, nie kończy Twojej nauki, lecz wynosi ją na zupełnie inny poziom. Wcześniej celem było uzyskanie pracy, teraz ten cel będzie ważniejszy i trudniejszy w osiągnięciu. Jako profesjonalista będziesz obarczony obowiązkiem dostarczenia wartości biznesowej w określonym czasie i w jak najlepszej jakości. Wraz z wysokością pensji oczekiwania pracodawcy oraz Twoje obowiązki i odpowiedzialność będzie rosła. Abyś Ty mógł zarobić, ktoś musi zarobić na Tobie.

Każdy projekt i każde zadanie jest inne, wpadnięcie w odchłań rutyny sprawi, że ucierpi na tym jakość oprogramowania, klient (pracodawca) oraz Twoja kariera. Jeśli technologia wyprzedzi Cię, a Ty nie będziesz starał się jej dogonić, to za kilka lat wrócisz do punktu wyjścia i będziesz musiał się uczyć prawie wszystkiego od nowa.

Od początku swojej kariery codziennie staram się poświęcić 2-3 godziny dodatkowo na naukę (czytanie artykułów, książek, oglądanie konferencji lub słuchanie podcastów (np. https://fragmentedpodcast.com/, https://devtalk.pl/, https://devenv.pl/). Razem z pierwszym etapem nauki daje to ponad 10 tys. godzin spędzonych na naukę.

Branża IT jest wysokopłatna, ale jest też wymagająca. Oprócz 8h pracy musisz poświęcać także swój własny czas, aby być na bieżąco z nowymi technologiami. Jeśli Twoim jedynym celem nauki programowania są zarobki, to odradzam takiej drogi.

Jeśli uważasz treść za wartościową to podziel się nią z innymi. Dziękuję.

Mateusz Chrustny

2 thoughts on “Ile poświęciłem czasu na naukę programowania?

  1. Warto sprawdzić regułę 10000 godzin 🙂
    Po tej ilości czasu powinno się już umieć biegle posługiwać wybranym językiem i zagadnieniami ogólnymi dotykającymi programowanie i wszystko wokół.

    Artykuł ciekawy!

    Pozdrawiam, Mateusz.

    1. Cześć, dziękuję Ci za komentarz. Reguła 10k godzin ma sens, około 10 lat regularnego doskonalenia umiejętności :). Należy dodać, że godziny pracy nie zawsze wliczą się w te 10 tys. godzin (picie kawy, spotkania, odtwórcze zadania) i nie każdy po 5 latach pracy na pełnym etacie zostanie mega ekspertem 🤓. Ja poświęciłem ok 10 tys godzin na samą naukę ale „im więcej wiem, tym więcej pozostaje do poznania i wciąż tego przybywa.” 🤯 Ale to już specyfika tego zawodu.

      Grunt to regularność, dlatego pójście do pierwszej pracy daje taki niesamowity przypływ wiedzy. Pierwsza praca „zmusza” do regularnej pracy 40h tygodniowo a w dodatku pozwala na dostęp do doświadczonych programistów, którym dodatkowo zależy na tym aby Junior nauczył się najwięcej. Pamiętam, że przez pierwsze 3 miesiące w pierwszej pracy miałem wrażenie, że więcej się nauczyłem niż przez cały okres studiów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *