Nauka programowania, zwłaszcza na samym początku, potrafi przytłoczyć. Bardzo szybko może pojawić się zniechęcenie i brak motywacji do dalszej pracy. Jest to zupełnie normalne, bo wbrew temu co można usłyszeć od wielu „specjalistów” programowanie wcale do łatwych nie należy. Oczywiście praktycznie każdy może nauczyć się podstawowej składni danego języka i napisać prostą aplikację, ale nie każdy znajdzie w sobie wystarczającą ilość motywacji, aby dogłębnie zrozumieć każde zagadnienie, z którym będzie się mierzył. A jest to warunek konieczny do tego, by stać się dobrym programistą.

Aby ułatwić innym start postanowiłem podzielić się własnym doświadczeniem. Opiszę tutaj pułapki, które czekają na młodego programistę i jak można je ominąć. Jeszcze całkiem niedawno sam szukałem podobnych porad 😉.

 

 

Na początku książka nie będzie potrzebna

 

 

Sam tak zaczynałem. Wydawało mi się, że tylko dobra książka nauczy mnie programowania. Zakupiłem więc Head First dla C# i zacząłem czytać. Dzielnie przedzierałem się przez kolejne strony wmawiając sobie, że rozumiem każde zagadnienie, z którym się zapoznałem. Ćwiczenia oczywiście pomijałem, bo po co się męczyć. Wszystko jest przecież jasne.

 

 

 

 

Mniej więcej po stu stronach poziom trudności znacznie wzrósł i udawanie, że wszystko ogarniam nie było już takie łatwe 🤔. W tym samym momencie zorientowałem się, że cała „zdobyta” wiedza praktycznie wyparowała mi z głowy.

Najlepszy był moment, w którym jakimś cudem odpaliłem Visual Studio i nie maiłem bladego pojęcia jak zadeklarować prostą zmienną, nie mówić już o poprawnym uruchomieniu programu 😥 Na tamtym etapie porzuciłem naukę programowania, bo mnie to przerosło.

Książki są doskonałym źródłem wiedzy i bardzo przydają się na późniejszym etapie, kiedy będziemy musieli zgłębić dany temat. Jednak osoba, która zaczyna naukę programowania może czuć się przytłoczona ilością informacji w nich zawartych. Do napisania prostego programu nie jest potrzebna wiedza o ilości pamięci zajmowanej przez określony typ danych. Warto posiadać takie informacje na późniejszych etapach nauki, ale na samym początku jest to niepotrzebny balast.

Ja z książkami siłowałem się jeszcze przez rok, aż w końcu trafiłem na kurs wideo (na Udemy), który uczył krok po korku co należy zrobić żeby uruchomić swój pierwszy program. Idea była prosta – prowadzący najpierw pokazywał jak coś zaimplementować, a dopiero później wyjaśniał jak to działa. Trybiki w mojej głowie zaczęły się powoli kręcić.

Trudno jest przyswoić ogromną ilość teorii upakowanej w książkach bez odpowiedniej wiedzy praktycznej. Najpierw trzeba zobaczyć jak coś działa, a dopiero później zastanawiać się dlaczego. Takie podejście sprawdza się również na dalszych etapach nauki, kiedy podstawy mamy już dawno za sobą 😎.

Jeżeli nie chcemy wydawać kasy na kursy, to zawsze możemy skorzystać z licznych poradników, dostępnych za darmo w sieci. W przypadku Androida, pierwszy krokiem będzie zainstalowanie całego pakietu potrzebnego do tworzenia aplikacji. Uwierzcie mi, że już na tym etapie wielu ludzi rezygnuje 🤯. Kolejny krok to wyświetlenie na ekranie emulatora klasycznego napisu „Hello World”. Następnie do ekranu można dodać jakiś przycisk… i tak dalej.

Do tego nie jest potrzebna żadna książka. Wystarczy pierwsza strona dokumentacji Androida.

 

 

Wszystko w swoim czasie

 

 

Sam mam z tym duży problem nawet dzisiaj, chociaż jest dużo lepiej niż na początku 😏.

Rozpoczynając naukę programowania warto jest wybrać tylko jedną technologię, w której chcemy się specjalizować. Jeżeli na przykład ciągnie nas do Androida i języka Java, to lepiej będzie Kotlina zostawić na później.

Ja na samym początku nauki napisałem kilka prostych aplikacji w Unity 3D, następnie pogrzebałem trochę w Androidzie (na tamtym etapie mnie odrzuciło, ale z czasem wróciłem 😎) i nawet zahaczyłem o web development w JavaScript. Efekt był taki, że nie nauczyłem się żadnej z tych technologi nawet w stopniu podstawowym. Można powiedzieć, że rok czasu przeleciał mi bokiem. Takie eksperymentowanie jest jak najbardziej wskazane, ale na początkowych etapach nauki musimy wybrać na jakiej technologii chcemy się skupić i tego wyboru się trzymać. Jak nam się nie spodoba to zawsze możemy obrać inny kierunek. Ważne, aby nie skakać pomiędzy zagadnieniami.

W moim przypadku ostatecznie wybór padł na iOS oraz język Swift, a jak już miałem opanowane podstawy i w miarę dobrze się w tym czułem to zacząłem więcej eksperymentować z Androidem. W ten sposób nauka szła mi znacznie szybciej, bo pewne koncepcje na obu platformach mieszają się ze sobą.

 

 

bez planu daleko nie zajedziesz

 

 

To bardzo ważny punkt. Nauka dowolnej rzeczy bez odpowiedniego planu skazana jest na porażkę. W najlepszym wypadku skończymy jako kolejny średniak, który „coś tam ogarnia”.

Ucząc się nowych rzeczy każdy z nas błądzi i jest to zupełnie naturalne. W pewnym momencie trzeba jednak obrać konkretny kierunek. Bez jasno określonego celu będziemy kręcić się w kółko. Bardzo szybko pojawi się zniechęcenie. Z tyłu głowy pojawi się cichy głos podpowiadający, że nie robimy żadnych postępów. Takie zagubienie jest powodem rezygnacji wielu osób.

O tym jak chaotycznie dobierałem na początku nowe technologie napisałem powyżej. Do tego dochodziły jeszcze problemy z ułożeniem właściwego planu działania. Skakałem od zagadnienia do zagadnienia. W jednej chwili uczyłem się obiektowości, żeby za chwilę czytać o testach jednostkowych oraz wzorcach projektowych. Cały czas miałem wrażenie, że z każdą chwilą rozumiem coraz mniej.

Dopiero po dłuższym czasie zrozumiałem, że większość z tych rzeczy nie była mi początku do niczego potrzebna. Przecież początkujący programista nie musi być ekspertem w testach jednostkowych. Wystarczy jak będzie wiedział, że coś takiego istnieje. Jak nabierze doświadczenia to zgłębi odpowiednio temat.

Dobry plan na starcie to podstawa. Za jakiś czasu w dwóch osobnych artykułach dokładnie opiszę jaki plan sprawdza się w przypadku osób przygotowujących się do pracy na stanowisku programisty Androida lub iOS. Z czasem sami nauczycie się jak zaplanować naukę. Zanim to jednak nastąpi to polecam Wam przeczytać książkę Mateusza Kupilasa „Junior Developer”, z której sam korzystałem. To na prawdę świetne wprowadzenie dla początkujących programistów.

 

 

Just-in-time learning – nie ucz się na zapas

 

 

Bardzo przydatna koncepcja, która pokrywa się częściowo z poprzednim punktem.

Zakłada ona, że powinniśmy uczyć się tylko tego co jest nam w danej chwili potrzebne. Jeżeli tworząc pierwszą aplikację na Androida zdecydowaliśmy się na wykorzystanie biblioteki Room (do implementacji bazy danych) to nie ma sensu uczyć się na zapas jak działa biblioteka Realm, tylko dlatego, że pojawiła się ona w jakimś ogłoszeniu o pracę. Nie jesteśmy w stanie spamiętać wszystkiego. Jak przyjdzie właściwy moment to i tak będziemy musieli skorzystać z dokumentacji.

Oczywiście dobrze jest mieć rozeznanie w aktualnych trendach, ale to nie oznacza, że musimy rzucać się na każdą popularną bibliotekę. Na rozmowach rekrutacyjnych zwykle padają pytania o technologie, które wpisaliśmy w nasze CV. Oczywiście, jeżeli interesuje nas jakaś konkretna firma to warto rozeznać się jakie narzędzia są w niej na co dzień stosowane.

 

 

Zbuduj coś

 

 

Jest to w pewnym stopniu nawiązanie do punktu pierwszego i jednocześnie najbardziej cenna rada.

Nie ma znaczenia jak dużo teorii przerobiliśmy. Do czasu aż nie przekujemy jej w działającą aplikację nie będzie ona nic warta. Najwięcej nauki w programowaniu pochodzi z popełnianych błędów. Bez nich nie da się wskoczyć na kolejny poziom. Nikt nie siada ot tak do Android Studio i nie tworzy rozbudowanej aplikacji. To wymaga czasu i praktyki.

Możemy na przykład zbudować prostą aplikację, która będzie pobierała najnowsze notowania krypto walut lub dane o aktualnym poziomie zanieczyszczenia powietrza w naszym mieście. Tak naprawdę nie ma to znaczenia. Liczy się tylko to, że w ogóle ruszyliśmy. Kolejne zagadnienia będziemy poznawać w trakcie tworzenia kolejnych modułów naszej aplikacji. Siłą rzeczy, w którymś momencie będziemy musieli skorzystać z jakiegoś wzorca projektowego lub bliżej poznać zagadnienie enkapsulacji. Dzięki takiemu podejściu sprawdzimy jak coś dział w praktyce zamiast w kółko o tym czytać.

Uwierzcie mi na słowo, że jeszcze nikt nie nauczył się programowania czytając książki / poradniki lub oglądając filmiki na YouTube.

 

 

Słowo na drogę

 

 

Zastosowanie się do tych kilku rad ułatwi Wam w pewnym stopniu przejście przez początkową fazę nauki programowania. Nie twierdzę oczywiście, że nie ma innej drogi. Opisałem jedynie moje własne doświadczenia i wnioski jakie z nich wyciągnąłem. Jeszcze raz zaznaczę, że nauka programowanie nie należy do najłatwiejszych i warto jest korzystać z doświadczenia osób, które pewne etapy mają już za sobą.

 


 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *