Jak uczyć się programowania?
Temat rzeka o którym już zresztą kilka razy pisałem ale jak wiadomo branża IT zmienia się dynamicznie, zmieniają się więc technologie zmienia się też sposób w jaki je poznajemy. Dzisiaj chciałem zająć się tematyką tego jak uczyć się programowania, skąd czerpać wiedzę oraz jak rozwiązywać napotkane problemy. Zapraszam więc do lektury.
Na wstępie jeszcze wspomnę, że artykuł ten kierowany jest głównie do młodych programistów pracujących bądź szukających pracy jako junior developerzy lub też osób, które dopiero co stawiają swoje pierwsze kroki w branży IT i dotąd nie miały styczności z programowaniem.
Projekty, projekty i jeszcze raz projekty…
Może to zabrzmi nieco banalnie ale nie da się nauczyć programowania jeśli nie będziemy pracowali z konkretnymi projektami czyli jeśli nie będziemy po prostu programowali. Na początku oczywiście pierwszymi aplikacjami będą proste programy takie jak kalkulator czy program konsolowy wyliczający np. miejsce zerowe funkcji przy pomocy jakiegoś algorytmu np. siecznych newtona czy też metody bijekcji. W późniejszym etapie powinniśmy się zająć dużo bardziej rozbudowanymi systemami składającymi się np. z mobilnego klienta, webserwisu, oraz klienta przeglądarkowego. Do tego oczywiście nie może zabraknąć testów automatycznych oraz dokumentacji. Wszystkie te elementy razem wzięte dopiero składają się na jakiś sensowny projekt, którym można pochwalić się przy rekrutacji na staż bądź też stanowisko junior developera – ale nic więcej! Prawdziwe doświadczenie nabiera się dopiero w firmie, kiedy to pracujemy nad projektem z którego korzysta kilka tysięcy osób, a dane jakie musimy przetworzyć są tak duże, że nie jesteśmy wstanie w sensownym czasie ich zapisać oraz odczytać z bazy danych. Wtedy robi się naprawdę ciekawie, ale to już zupełnie inna bajka na odrębny artykuł…
Tak więc jeśli spodobało wam się programowanie i chcielibyście nauczyć się jakiejś nowej technologii bądź rozwinąć bardziej swoją karierę to pamiętajcie aby zwrócić uwagę na jedną ważną rzecz.
Nikt jeszcze nie nauczył się programować nie programując. Więc jeśli chcecie poznać technologię XYZ to po prostu zróbcie w niej jakiś projekt. Jak wspomniałem wyżej musi to być coś naprawdę interesującego i odpowiednio dużego, żeby miało to sens. Może jakaś aplikacja z której sami później będziecie korzystać.
Pierwsze taski, pierwsze problemy
Kiedy już w końcu podejmiemy tą pierwszą jakże ważną decyzję czyli ustalimy tematykę projektu, zakres prac oraz rozpiszemy pierwsze zadania, na pewno trafimy też na pierwsze problemy. Czym by zresztą była by inżynieria oprogramowania gdyby wszystko zawsze szło po myśli programisty? W skrócie było by strasznie nudno…
Nie mniej jednak, paradoksalnie podczas pracy nad danym projektem dojście do momentu w którym coś nie działa tak jak powinno jest z punktu widzenia osoby uczącej się sporym sukcesem. Bowiem to właśnie w takim momencie możemy poznać swoje braki oraz dowiedzieć się czegoś nowego. Pogłębiamy dzięki temu swoją dotychczasową wiedzę oraz co najważniejsze zdobywamy nową. Tak więc kiedy będziecie coś robili i traficie na przysłowiową „ścianę” to nie załamujcie się tylko pomyślcie, że dzięki temu nauczycie się czegoś nowego co w przyszłości na pewno wam się przyda.
No dobra, ale jak zacząć od zupełnego zera?
Na pewno wśród osób które trafiły na ten artykuł są też tacy którzy z programowanie do tej pory zbyt wiele styczności nie miały. Takie osoby zanim jednak zaczną prace nad swoim projektem programistycznym powinny poznać przynajmniej podstawy danej technologii. Tutaj są różne sporne kwestie co do tego jak to ogarnąć, ale ja ze swojej strony polecam przede wszystkim różne tutoriale jakie można znaleźć w intrenecie (w tym między innymi na moim blogu), a dla osób bardziej leniwych lub mających „trudności” z mobilizacją do samodzielnej nauki najlepszym wyjściem będzie chyba zapisanie się na kurs programowania. Takie zajęcia organizowane są między innymi przez zbierającą bardzo dobre opinie Fundację CODE:ME. Prowadzi ona bardzo wiele kursów programowania, które odbywają się w formie wieczorowych zajęć, aktualnie w Gdańsku i Poznaniu, a co najważniejsze dotyczą one różnych technologii. Każdy więc może wybrać sobie wedle preferencji, swoich zainteresowań i poziomu zaawansowania, ponieważ Fundacja prowadzi kursy zarówno dla zupełnie początkujących, jak i dla tych, którzy podstawy programowania już dobrze znają. Cena też nie jest wygórowana, zwłaszcza kiedy porównamy ją do kwot jakie wołają sobie niektóre firmy zawodowo zajmujące się „produkcją developerów”.
Google Twoim największym przyjacielem
Niezależnie od tego jaką formę nauki wybierzemy to pamiętajcie, że i tak największym przyjacielem programisty jest wyszukiwarka internetowa oraz znane na całym świecie forum stackoverflow.com. Istnieje bardzo duża szansa, że problem na który trafiliście został już przez kogoś rozwiązany oraz opisany w sieci. Nie ma więc sensu wymyślać koła na nowo. Kluczem do sukcesu jest właśnie umiejętne korzystanie z gotowych rozwiązań czy to w formie bibliotek, framework’ów, plugin’ów lub też wklejek kodu znalezionych w internecie.
Podsumowanie
Podsumowując, jeśli chcecie nauczyć się programować stwórzcie jakąś fajną aplikację w technologii którą chcecie poznać. Dobrym pomysłem jest tutaj na przykład napisanie czegoś z czego sami w przyszłości będzie korzystać – pewnie jest sporo takich rzeczy. Ja natomiast zachęcam do podzielenia się swoimi radami i pomysłami na projekt poniżej w komentarzach. Być może wasze uwagi, propozycje etc. będą pomocne dla kogoś innego.
Zgadzam się w pełni, że praktyka czyni mistrza i im więcej pracy nad konkretnymi projektami tym szybciej zdobywamy cenne doświadczenie. Ale często bywa tak, że początkujący ma problem z dołączeniem do zespołu realizującego fajny projekt gdyż jest, no właśnie – niedoświadczonym początkującym. Klasyczny problem kury i jaja. Tak jak wspominasz, istnieje kilka sposobów aby wyjść z tego impasu, kursy, samouczki, google, Internet. Dodałbym do tej listy możliwość uczestnictwa w projektach open-source. Takich projektów jest bardzo dużo. Owszem, często bariera wejścia jest duża i zdecydowanie nie dla początkujących ale istnieje sporo projektów, gdzie każde ręce są potrzebne i można zacząć od testów lub ich automatyzacji a potem powoli obierać kurs na programowanie. Jestem przekonany, że takie doświadczenie będzie bezcenne :)
Pierwsze to chęć. Bez tego nie da się ruszyć dalej. :)
Praktyka i jeszcze raz praktyka. Bez tego nie da się programować. Chęci do niczego nie prowadzą. Zazwyczaj odkłada się działanie na kolejne dni tłumacząc się brakiem czasu lub projektami, które trzeba zakończyć. Metodą jest wdrożenie czasu na programowanie w taki sposób, aby ten czas był właśnie przeznaczony na naukę programowania, aby stało się to czymś normalnym i codziennym.