Spis treści

Jak uczyć się programowania (w Javie)?

Jak nauczyć się programowania? Jak nauczyć się programowania w Javie? Dziś przedstawiam kilka porad, jak to zrobić bez wydania ani jednej złotówki. Oczywiście, najpierw musisz się upewnić, że zapłaciłaś w tym miesiącu za internet 😄

W skrócie:

  • naucz się angielskiego na tyle dobrze, żeby czytać dokumentację techniczną
  • znajdź stronę internetową języka, którego się uczysz
  • stwórz system nauki:
    • zgromadź odnośniki do specyfikacji, API biblioteki srandardowej, bibliotek zewnętrznych
    • zablokuj w kalendarzu czas na programowanie/naukę
    • zacznij pisać swój pierwszy program

Porady z tego wpisu możesz też uzyskać ściągając krótszą wersję w

Wstęp

Jeśli się trochę rozejrzysz, to zobaczysz, że w ostatnich latach wszyscy dookoła uczą się programować. Programowanie w Scratchu na stałe zagościło w programach nauczania informatyki w polskich szkołach. Polskie małe firemki zaczęły zajmować się oferowaniem kursów, a także kolonii i zimowisk z programowaniem robotów albo z nauką Pythona. Na całym świecie jak grzyby po deszczu wyrastają kolejne bootcampy programistyczne. Portale z płatnymi kursami oferują dziesiątki godzin filmów, w których ktoś nawija/pokazuje, jak zaimplementować jakąś pętlę albo klasę. Sieć pęka w szwach od tutoriali, YouTube pełen jest screencastów.

Od wielu lat na rynku pracy brakuje programistów. Rynek szkoleniowo-warsztatowy skutecznie zareagował, więc wkrótce przybędzie nam wielu nowych. Jeśli jesteś jednym (jedną) z nich i chcesz się nauczyć programować, poniżej przeczytasz kilka moich wskazówek.

Kilka zastrzeżeń:

  • Uważam, że aby nauczyć się programować, nie musisz wydać ani złotówki na kursy, książki czy płatne treści. Wszystkiego możesz się nauczyć za darmo.
  • Java czy Python czy JavaScript - to nie ma wielkiego znaczenia, wybierz swój ulubiony język; w tym wpisie zakładam, że chcesz nauczyć się Javy.
  • To nie jest wpis o nauce programowania dla dzieci (być może o tym kiedyś również napiszę). Zakładam, że jesteś dorosły/a i potrafisz samodzielnie studiować.

Wskazówki

(Na)ucz się angielskiego

Angielski. Na poziomie czytania dokumentacji technicznej, JavaDoc-ów biblioteki standardowej czy specyfikacji języka. Dobrze jest znać go na tyle dobrze, by móc swobodnie posługiwać się nim z ludźmi w mowie i piśmie (czasem trzeba kogoś o coś zapytać, do czegoś przekonać albo za coś podziękować). Jeśli z angielskim u Ciebie kiepsko, zacznij uczyć się już dziś.

Czytaj o programowaniu

Czytaj blogi programistyczne, portale, magazyny. Skup się na jednej dziedzinie, która Cię interesuje (AI, finanse, GUI, NFT, bazy danych) i zacznij się nią interesować. Poszerzysz swoje horyzonty, zdobędziesz orientację w temacie. Na początku mało będziesz z tego rozumieć, ale tak właśnie ma być. Sprawdzaj, odkrywaj, badaj. Zanurz się.

Jeśli lubisz treści video, możesz rzucić okiem na darmowy kurs na Udemy przy przygotowaniu śniadania albo posłuchać YT podczas mycia podłogi.

Nie czytaj/nie oglądaj tutoriali

W sieci jest całkiem dużo samouczków, w których metodą “krok po kroku” pokazane jest zaimplementowanie prostego programu (np. zrobienie listy to-do). Ukończenie takiego tutoriala daje Ci nagrodę w postaci wrażenia, że coś osiągnęłaś, rodzaj odlotu, miłego uczucia ciepła w brzuchu i jeszcze milszego łaskotania ego. Ale wiedza, którą zdobywasz, jest bardzo mocno ograniczona do dziedziny, której tutorial dotyczył. Przechodzisz ścieżką prowadzony za rączkę, ale nie poradzisz sobie w lesie.

Lepszą alternatywą dla tutoriali “krok po kroku” są kursy online obejmujące wiele różnych aspektów języka (np. kursy jenkov.com lub polskie JavaStart, wpisy na blogu kobietydokodu.pl.

No dobrze, pójdźmy na kompromis: jeśli bardzo chcesz, przeczytaj i obejrzyj co tylko chcesz, ale koniecznie pamiętaj o tym, że to praktyka czyni mistrza!

Zrób własny mini-projekt

Zaplanuj, jaki problem chcesz rozwiązać przy pomocy twojego programiku, jak ma on działać i zacznij pisać. Ucz się w trakcie. Poznawaj technologie w trakcie. Rozwiązuj problemy w sposób ciągły. Czy to będzie konsolowy program szyfrujący w “ga-de-ry-po-lu-ki”, czy przelicznik łyżeczek na gramy albo kalorie: to nie ma znaczenia. Ważne, że się uczysz, działasz, posuwasz się naprzód.

Jeśli nie masz pomysłu, przejrzyj tę listę projektów.

Spróbuj nie porzucać projektu w chwili, w której uznasz, że stał się zbyt skomplikowany. Docierasz do momentu, kiedy zaczyna się prawdziwa zabawa: zarządzanie złożonością. Prawdopodobnie musisz zacząć czytać o sposobach dzielenia kodu na części (pakietyzacja, modularyzacja), przeorganizowaniu kodu (refaktoryzacja), stosowaniu wzorców projektowych i dobrych praktyk albo sięgnąć po zewnętrzne biblioteki.

Żeby w ogóle jakoś zacząć, najpierw…

Znajdź stronę internetową swojego języka

Niech to będzie strona domyślna w Twojej przeglądarce. Przynajmniej w czasie, który postanowisz poświęcić zgłębianiu języka oraz środowiska

Na stronie dokumentacji Oracle do Javy 17 znajdziesz między innymi:

Nie musisz wszystkiego czytać, ale chodzi o to, żeby mieć zawsze pod ręką autorytatywne źródło. Ze swojego kilkunastoletniego doświadczenia wiem, że dokumentacja API zawsze się przydaje.

Język to nie wszystko

Poznaj najważniejsze:

  • biblioteki
  • systemy budowania
  • systemy zarządzania kodem źródłowym

Biblioteki

z których korzystają programiści Javy na całym świecie.

Łatwo wygooglasz “X najważniejszych bibliotek w Javie”. Na takiej liście na pewno nie zabraknie bibliotek takihc jak:

Aby móc skutecznie używać bibliotek, dobrze jest poznać

System budowania / zarządzania zależnościami

  • mój ulubiony to Maven
  • nowszy i bardzo popularny to Gradle, choć są jeszcze inne, trochę bardziej egzotyczne, jak
  • stary dobry Ant
  • jest też nowszy i przeznaczony raczej do projektów pisanych w Clojure Leiningen
  • a także SBT dla projektów w języku Scala
  • w język Groovy wbudowany jest Grape jako system zarządzania zależnościami

Systemy kontroli wersji

…czyli Git. Bezkonkurencyjny. Najlepszy. Po prostu naucz się go (książka, ściąga) i załóż sobie konto na GitHubie albo GitLabie. Spróbuj utworzyć nowy projekt, sklonuj go lokalnie, zrób kilka komitów, wypuszuj. Pobaw się. Znajomość Gita jest dziś praktycznie domyślnym wymogiem wśród kryteriów rekrutacyjnych na stanowiska programistów.

System

Do nauczenia się czegokolwiek potrzebny będzie system nauki:

  • pamiętaj, że cykl wygląda tak: działanie -> rezultat -> motywacja a nie tak: motywacja -> działanie -> rezultat
  • określ czas nauki - czy możesz przeznaczyć godzinę dziennie na naukę? a może dwie godziny w poniedziałek i środę?
  • zdefiniuj kamienie milowe, np.
    • w tym tygodniu poszukam edytora do porgramowania w Javie
    • do końca przyszłego miesiąca napiszę konwerter BMI
    • za pół roku zrobię aplikację w Swingu
    • za rok zacznę naukę Spring Boota
    • za dwa lata zdam certyfikat
  • określ miejsce nauki - np. koduję w domu, czytam speckę/książkę w drodze do pracy

Opcjonalnie:

  • znajdź lokalny JUG (lista)
  • jeśli udzielasz się w mediach społecznościowych, możesz wziąć udział w akcjach typu 100 days of code i publikować swoje postępy na Twitterze
  • jeśli lubisz rywalizację i czujesz się na siłach, bierz udział w konkursach programistycznych (możesz zacząć od rozwiązywania prostych zadań) lub trenuj umiejętności na różnych “portalach rywalizacyjnych” (lista)

I po prostu zacznij. Po drodze możesz notować swoje postępy, nagradzać się za sukcesy i robić to wszystko, co sugerują internetowi “kołcze samodoskonalenia”, ale zawsze pamiętaj:

  • warto być ciekawą, jak działają różne rzeczy
  • warto być cierpiwą dla siebie: jeśli czegoś nie rozumiesz, to znaczy, że brakuje Ci jakiegoś ogniwa w modelu mentalnym zagadnienia; próbuj ugryźć problem od innej strony
  • daj sobie czas na odpoczynek (najlepsze pomysły przychodzą pod prysznicem albo, cóż, w toalecie)
  • oswajaj się z porażkami, nie bój się ich, dąż do nich a nawet ciesz się nimi (im więcej porażek, tym więcej się uczysz)

Powodzenia!

Ten artykuł dedykuję Kasi, która zastanawia się nad rozpoczęciem nauki programowania, a być może nawet nad zmianą branży. Kaśka, dasz radę!