blog programisty - jak zacząć programować

Jak zacząłem programować? Od czego zacząć naukę?

Krótko o tym jak nauczyć się każdej umiejętności

Czasami słyszymy lub czytamy jak to ktoś chwali się, że on to od przedszkola programuje. Całe życie w kodzie. Nie zawsze, mówi, że owszem napisał ten pierwszy kawałek kodu gdy miał 7 lat, ale potem przez kolejne 10 lat nic z tym nie zrobił. Super mieć zajawkę od samego dzieciństwa. Naprawdę podziwiam takie osoby. Zajebiste jest znaleźć coś co Cię jara w tak młodym wieku. Większość z nas niestety nie ma takiego szczęścia. Często nie wiemy co chcemy robić w przyszłości. Idziemy wtedy na studia i w sumie. Co dalej? No właśnie. Często po prostu nie ma się pomysłu na siebie. Sam byłem w takiej sytuacji : ) 

 

Jak to się NIE zaczęło?

Na samym początku zamiast mówić Jak to się zaczęło, powiemy sobie Jak to się NIE zaczęło. Z tego co pamiętam pierwszą styczność z kodem miałem w okolicach gimnazjum. Były to zajęcia z informatyki. Niezbyt interaktywne zajęcia. Suche przepisywanie tego co rzucał projektor. Mimo to na początku mi się podobało. Napisałem wtedy swój pierwszy HTML. Była to szachownica na zasadzie tabelek. Potrafiłem nawet dodać link do CSS’a! Potem był jakiś język programowania. Nie jestem pewien co to było, ale chyba Delphi. Była to dosłowna masakra. O ile wyklikanie interfejsu graficznego jakoś szło to potem dodanie temu jakieś funkcjonalności… Czarna magia. Nie miałem wtedy pojęcia jak to wszystko połączyć pętla, funkcja, zmienna, klasa? Puff, Mind Blown. Kolejną przeszkodą był wtedy angielski. Byłem wtedy bardziej zainteresowany graniem w gry komputerowe niż dalszym rozwojem w tym kierunku. Tak minęło gimnazjum. Zdałem przedmiot i tyle mnie widziano. Zapomniałem o tym na kolejnych kilka lat. Sądziłem, że to nie dla mnie. To jest zbyt trudne. Zresztą po co się męczyć? Granie w gry komputerowe jest bardziej rozrywkowe!

Następnie przyszły czasy szkoły średniej. Jak się domyślasz miałem kolejny świetny pomysł. Chciałem zostać hackerem! Kto by nie chciał? Zainstalowałem backtracka. Taki fajny linux z narzędziami dla hackerów. Obecnie nowsza wersja to Kali. Ale dobra. Udało się zainstalować. Poudawałem, że potrafię korzystać z konsoli. Potem przyszła pora na hacking. Ehh… Okazało się, że potrzebna jest specjalna karta sieciowa. Kupione! Przeszedłem tutoriale. Złamałem wifi, zrobiłem klon strony i nauczyłem kilku tricków. W sumie tyle. Zapał do zostania hackerem przeszedł. Musiałem na własnej skórze doświadczyć z czym to się je. Okazało się, że nie jest tak jak w filmach. Dasz wiarę? Wróciłem do gier komputerowych. Następnie gdzieś pomiędzy studiami, a szkołą średnią zapragnąłem robić gry. Były próby podejścia do C++ również nie wyszło, niemniej miałem już podwaliny do późniejszej nauki o czym zaraz . Tak też przechodzimy do studiów. Każdy przecież idzie na studia. Nie wiedząc co dalej chcę robić ze swoim życiem poszedłem na studia. Programowanie w PHPie, Javie, Bashu i innych. Wszystko było! Do tego na komputerach z epoki kamienia łupanego, żeby nie było za łatwo. Tak minęły pierwsze dwa lata na studiach. Niestety, ale nie dowiedziałem się w tym czasie nic co mi się dzisiaj przydaje w jakimkolwiek stopniu. Nadszedł piąty semestr i wtedy zaczęły się pojawiać myśli. Co Dalej? W sumie to niedługo koniec, a ja jestem gdzie byłem. Myślę, że tutaj zaczyna się moja historia : )

 

Jak to się zaczęło?

Koniec studiów się zbliża. Piąty semestr prawie dobiega końca. Większość czasu idzie na gry komputerowe. Zaczęły się wtedy pojawiać myśli. Co dalej? Postanowiłem wtedy  odinstalować wszystko co rozpraszało uwagę (głównie gry) i podejść ponownie do programowania. W między czasie zacząłem czytać różne książki z rozwoju osobistego, zmieniania i kształtowania swoich nawyków oraz samodyscypliny. Oczywiście w całym tym pędzie nie mogło również zabraknąć dobrego sci-fi. Stworzyłem plan działania, ale mimo to nie było łatwo. Nie zawsze się go trzymałem. Ale robiłem kolejne tutoriale i próbowałem pisać swoje małe kawałki kodu. Przeczytałem dwie książki o Javie. Pierwsza z nich to Java Podstawy – Horstmanna, a druga to Rusz Głową – Java (fajna książka, ciekawie napisana, ale nie nauczysz się z niej programować). W obu przypadkach przeczytałem tylko kilka rozdziałów. Dobrze, że z tego zrezygnowałem, bo teraz z perspektywy czasu można śmiało powiedzieć, że nie nauczysz się programowania z książek. Jest cała masa lepszych materiałów. Tak też codziennie starałem się coś robić. Nie zważając na to, że czegoś nie rozumiem. Pomyślałem, że jeśli będę robić to wystarczająco długo to w końcu coś zaskoczy. Podczas tej nauki postanowiłem złożyć CV do dwóch lokalnych firm. Nie bardzo wiedziałem co muszę umieć, żeby dostać się na staż, a fora programistyczne zdecydowanie przesadzały z wymaganiami. Pomyślałem, że najlepszym sposobem jest dowiedzieć się u źródła. Jak się można domyślić rozmowy nie poszły zbyt dobrze. Niemniej miałem doświadczenie czego się spodziewać na rozmowie. Obie różniły się od siebie diametralnie.

Szybka notka: Super książka, żeby przezwyciężyć lęk przed nauką trudnych rzeczy. O tym jak sprytnie podejść do nauki. Jak działa twój umysł. Jak działa pamięć. Jak rozwijać wyobraźnię i wiele, wiele innych: Głowa do Liczb.

Poświęciłem kolejne trzy miesiące na uczenie się Javy. Z miesiąca na miesiąc miałem wrażenie, że umiem dwukrotnie więcej niż poprzedniego miesiąca. Było to raczej złudne, ale wystarczyło, żeby na początku szóstego semestru (początek roku 2015) dostać się na pierwszy staż. Na pewno nie będzie zaskoczeniem, że przez parę miesięcy pracy dowiedziałem się więcej niż przez całe studia. Warto dodać, że nie tyle co sama firma dała mi możliwości co to, że zmieniłem całkowicie swoje nastawienie. Mimo wstępnej znajomości w Javie przyszło mi napisać pierwszą aplikację w Qt (framework dla C++). Zadanie w skrócie polegało na przesyłaniu ramek i sprawdzaniu czy dany mikrokontroler działa. Nie bardzo mi to odpowiadało, ale jakie miałem wyjście? Potrzebowałem doświadczenia. Przebolałem to, że nie zawsze można robić to co się podoba. Czasami trzeba się przemęczyć i zrobić coś mimo, że nie sprawia to natychmiastowej przyjemności. Była to bardzo pożyteczna lekcja. Dzięki temu nie mam większego oporu przed zabraniem się do kolejnego języka. Wręcz polubiłem to. A co najważniejsze polubiłem mojego poprzedniego wroga C++. Myślę, że warto mieć jeden, czy dwa języki główne, ale nie zamykać się na inne. Zresztą jeśli myślisz o programowaniu jako o karierze to podczas swojego życia poznasz zapewne koło pięciu, dziesięciu języków.

Moja historia nie jest nadzwyczajna. Pewnie wielu ludzi może powiedzieć, że mieli bardzo podobnie. Nie było fajerwerków. Nie rzuciłem studiów. Nie zamknąłem się w piwnicy. Wszystko można się nauczyć trzeba tylko poświęcić wystarczająco czasu na przyswojenie materiału. No i przyda się CEL. Co chcesz osiągnąć? Chcesz dostać pierwszą pracę? Chcesz zarabiać X? Chcesz tworzyć gry? Chcesz stworzyć łazik na marsa? A może współtworzyć autonomiczne samochody razem z Elonem? Chcesz pracować w Google, Facebooku? Bez względu co to jest zacznij od czegoś PROSTEGO. Chcesz tworzyć roboty? Naucz się podstaw języka i kup Raspberry Pi. Stwórz małego robota. Dopiero wtedy będziesz wiedział czy to jest to co chcesz robić. Gdybanie tutaj nie pomoże. A może chcesz tworzyć stronki? Spróbuj zrobić prosty szablon (jakiś prosty wygląd strony) i dorób do tego jakieś proste API. Sam zobaczysz co bardziej ci odpowiada. Będziesz miał punkt odniesienia czy chcesz iść we frontend czy backend. Umiejętność programowania otwiera na prawdę wiele ciekawych drzwi. Ale zanim to nastąpi trzeba zdobyć podstawową wiedzę, która pozwoli zobaczyć te drzwi : )

 

Co w takim razie na początek i nie tylko?

Jeśli podoba ci się to co robię to zapraszam na fanpage oraz dopiero co powstającą grupę na facebooku oraz na Instagram, a także Twitter, którego nikt nie używa. A także Powodzenia!

Praktyczne porady do wielu Juniorskich i nie tylko stanowisk: GitHub – Link (krok po kroku co potrzeba)

Warto jednak wyróżnić

Książki: Jak pisałem wcześniej nie warto czytać książek o danym języku. Po prostu dużo szybciej nauczysz się programować w praktyce. Ale warto wyróżnić książki opisujące JAK TWORZYĆ KOD:

  • Czysty Kod – Martina – nie ma co pisać. Po prostu przeczytaj WARTO. Lektura obowiązkowa!
  • Pragmatyczny Programista – od czeladnika do mistrza – pierwsza książka jest o pisaniu czystego kodu. Tutaj dowiesz się jak pisać elastyczny, przejrzysty kod. Dowiesz się o pułapkach na jakie wpadamy. Wspomniane będzie jak stworzyć zespół i wiele, wiele więcej. Do tego jest napisana fajnym językiem z różnymi historyjkami i anegdotami : )
  • Kod Doskonały – mniej popularna, ale zdecydowanie warta przeczytania. Wielkością przewyższa oba powyższe tytuły. Jest w niej wszystko co potrzeba. Taka biblia. Warto mieć na półce : )
  • Algorytmy – Ilustrowany Przewodnik – po co ci algorytmy? Czasami przydadzą się na rekrutacji, ale najważniejsze pomogą ci myśleć w pewien określony sposób. Myślenie to przydaje się w naszej codziennej pracy.

( Plusem tych książek jest to, że wiedza w nich zawarta jest wciąż aktualna i pozostanie tak jeszcze przez jakiś czas )

Fronty: Freecodecamp, a z tych co nie mają free w nazwie EggHead. Uwierz mi nie warto szukać kolejnych ‚trochę lepszych’. Oba to praktycznie najlepszy start we frontendzie.

Backendy: Jeśli byś chciał zacząć w Javie to polecam zrobić jakikolwiek tutorial z podstaw języka i przenieść się odrazu na Springa. Najlepiej zacząć od kursu ze Spring-boota na youtubie. Super dwa tutoriale na Udemy ze Spring 5. A na koniec MongoDB for Java Developers. Po przerobieniu tych materiałów powinieneś spokojnie dostać pierwszą pracę.

Jest jeszcze nowa Java, czyli Kotlin. Tutoriali niestety nie mam, bo uczę się na bieżąco pisząc kod. Niemniej łatwo jest przejść z pisania w Javie na Kotlina. Nowy język wydany przez JetBrains’a (czyli firmę, która ma monopol na najlepsze IDE, IntelliJ Idea). Jest za wcześnie, żeby mówić, że wyprze Jave, ale z mojej perspektywy tak się właśnie stanie. Będzie wiele kodu, który jest napisany w Javie (nie da się ominąć długu technicznego), ale nowe backendowe usługi będą już pisane w Kotlinie. Oszczędza on dużo boiler-kodu i po krótkim zaprzyjaźnieniu się pisze się w nim o wiele wygodniej, aniżeli w Javie : ) (oraz NIE Kotlin nie jest tylko do Androida)

Ale! Nim zaczniesz się uczyć języka twojego wyboru. Zrób najpierw to. Jest to coś co po prostu MUSISZ zrobić. CS50 z Harvardu. Nie ma słów, które mogą opisać jak zajebisty jest ten kurs. Po prostu zrób go.

Na koniec Angielski. Nie potrzeba tu komentarza. Bez tego zamykasz się na wszystko. Znacząco pomogła mi wtyczka do chroma od Google Translate.

Jeśli jesteś na etapie uczenia się angielskiego to warto przejrzeć filmiki Zelenta. Jest tam wiele przydatnej wiedzy ‚na początek’.  A do tego przejrzyj serię „Podróż do wnętrza ego”. Super sprawa. Wspomniałem o jednym z odcinków tej serii we wpisie na temat Wzorców Projektowych.

 

 

A jak wygląda codzienność?