Jak i skąd się uczyć komputera i Internetu?

Dziś postaram się odpowiedzieć na pytanie, które spotyka się nader często wśród początkujących programistów oraz wśród kandydatów na nich. Ostatnio zapowiedziałem zmiany w moim życiu dotyczące edukcjacji- zarówno tej typowo IT jak i tej mniej informatycznej, więc temat jest i dla mnie dość świeży. Zaczynajmy!

Pierwsze pytanie jakie musimy sobie postawić to kwestia tego co do nas bardziej przemawia- nauka pod okiem trenera czy może nauka samodzielna?

To dość istotna kwestia, która ma realny wpływ na to jak będzie przebiegała Twoja nauka. W przypadku nauki z kimś zazwyczaj jesteśmy ograniczeni czasowo- szkoleniowiec ma określony czas na nauczenie nas wszelkich sztuczek, a także określony program dla Ciebie.
Problem w tym, że nie każdy tak samo szybko chłonie wiedzę i np. 2 tygodnie szkolenia mogą jednemu wystarczyć w zupełności by nauczyć się podstaw danego języka programowania, z kolei inny po dwóch tygodniach rozglądać się może już spokojnie za jakimś fajnym projektem do samodzielnego zrealizowania z użyciem fajnych narzędzi.
Moim zdaniem, przez taki rozrzut możliwości edukacyjnych, najgorsze co może być to nauka w niepodzielonej grupie.
Szkoleniowiec musi unifikować szkolenie pod kilka kategorii zaawansowania już po paru pierwszych lekcjach- jedni się nudzą, inni dostają migreny od prób zrozumienia tej magii.

Osobiście stawiam na samodzielne szkolenie- mam tyle czasu ile chcę, uczę się kiedy mam ochotę i czas, idę swoim tempem i nie muszę nigdzie gonić jeśli czegoś nie rozumiem. Uczę się tego czego chcę i czego potrzebuję.
Taka samodzielna nauka ma jednak swój minus- trzeba umieć się samemu motywować, a to nie każdemu dobrze wychodzi wbrew pozorom. Pokus jest wiele- facebook, kwejk, dobra książka, piwo z kolegami, fajny film… Jak dodamy do tego wymóg przerabiania ćwiczeń i trenowania swoich umiejętności, to niejeden wysiądzie po 3 dniach.

Okej, wybieram samodzielne szkolenie, mam motywację i chcę samemu testować każdą rzecz by faktycznie samemu się czegoś nauczyć.
Co dalej?
Może kwestia z czego będziemy się uczyć?

Forma papierowa, wideo czy też może wirtualne słowo? Może, tak jak ja, jesteś dość wszechstronnie przygotowany mentalnie do nauki i nie ma to znaczenia większego?

Osobiście najbardziej preferuję dwa ostatnie typy tj wideo oraz słowo wirtualne, choć jako źródło wiedzy także i książka nie jest mi obca.
Każda z tych form ma pewne plusy jak i minusy, postaram się je opisać, tak jak ja to odczuwam.

 

Na początek forma, od której rozpoczynałem- książka. Książka ma ten plus, że możemy ją zabrać wszędzie, lepiej się śpi po czytaniu książki, a także w pewien sposób przypomina mi ona moje wczesne lata młodości, gdy uczyłem się z książek wydawnictwa Helion jak np Biblia HTML, XHTML i CSS (co prawda ja się uczyłem z wydania IV, a tu już V mamy).
Książki mają w sobie pewną magię, oldschool jest spoko. Jednak mają pewną dużą wadę, która poniekąd jest zaletą- nie da się z nich łatwo przeklejać kodu. To wymaga od nas przepisywania kodu ręcznie, co do pewnego stopnia jest całkiem ok, gdyż faktycznie piszemy kod i się uczymy jak to jest pisać skrypty.
Jednak to wszystko jest tylko do pewnego stopnia fajne, gdyż większość początkujących będzie przepisywała wszystko znaczek po znaczku, niekoniecznie analizując to co przepisuje- taka nauka też psu pod ogon pójdzie w dużej mierze.
No i na dodatek trochę zabawnie wyglądają bloki kodu na kilku stronach stronach- aż otworzyłem sobie Biblię PHP5 i MySQL (z 2005 roku), gdzie jeden ze skryptów zajmuje 5 stron (kto ma- listing 47.4, strona 978)...

Jest też duży problem z książkami (zarówno w wydaniu papierowym jak i elektronicznym) jeśli chodzi o aktualność informacji- pisanie książki to nie taka prosta sprawa, redagowanie, poprawki, rozmowy z wydawcą… cały proces pisania książki nierzadko trwa ponad rok, w przypadku zagranicznych pozycji trzeba jeszcze oczekiwać na tłumaczenie, co też częstokroć zajmuje około roku, a czasem nawet i dłużej w przypadku bardziej zapomnianych publikacji. I niestety- książki wypadają tu dość słabo, bo częstokroć uczymy się o czymś sprzed 2-3 lat...

Ciekawszym, nowocześniejszym wyjściem jest nauka z wirtualnego słowa pisanego czyli wszelkiej maści strony internetowe, artykuły, dokumenty *.pdf czy *.doc etc.
Wyjście całkiem dobre- łączymy możliwości książki przy jednoczesnej mobilności (przy czytnikach, dostępie do Internetu w komórce czy wrzuceniem na pendrive i wrzucenie na inne urządzenie) oraz przy możliwej przeklejce (co przyspiesza naukę, ale z kolei obniża częściowo interakcję z kodem).
Plusem jest też dostęp do narzędzi wspomagających czytanie jak choćby translatory. Jak dodamy do tego jeszcze rzesze internautów, którzy potrafią pomagać innym i sami tłumaczą pewne fragmenty lub wydobywają dla nas sama esencje z publikacji, albo objaśniają w jeszcze przystępniejszy sposób przykłady podane przez autora- otrzymujemy bardzo dobry materiał szkoleniowy.

Skąd się uczyć? Tego jest mnóstwo.

Zajrzyj przykładowo na: PolskiFrontend.pl.
Serio, ten jeden link wystarczy by otworzyć bramy wiedzy i ukazać mozliwości dzisiejszego front-endu. Na bank znajdziesz niejedną stronę prowadzoną przez front-end'owca działającego w tym obszarze, który Cię interesuje.
Do nauki podstaw webdevu mogę polecić W3schools.com (sam korzystam jako ściągawkę do niektórych rzeczy jak np. możliwe parametry dla jakiejś właściwości CSS, ciężko jest absolutnie wszystko spamiętać)- strona czasem staje w ogniu krytyki, że niby przestarzała itd. ale naprawdę- dla standardowego, początkującego wystarcza.
Jeśli chcesz się uczyć od prawdziwego kota informatyki to śmiało mogę polecić legendarną juz witrynę CSS-Tricks.com

Z kolei dla ludzi stawiających swoje pierwsze kroki w Javascript bardzo fajną stroną do nauki będzie KursJS.pl.

Jednak przejdźmy do kolejnego kanału edukacyjnego, mój faworyt- wideo. Obserwujemy jak ktoś tworzy skrypty, widzimy ewolucję, ktoś nam tłumaczy… jest to niemal jak nauka z trenerem indywidualnym, ale bez ograniczeń czasowych (bo przecież zawsze możesz zapauzować lub cofnąć)- po prostu bajka!

W każdym momencie możemy zrobić sobie przystanek, przetestować coś samemu. Motywuje to nas też do działania, gdyż widzimy już wcześniej, że naszemu trenerowi się udawało, więc i u nas będzie ok- mamy zapowiedź ewolucji naszego projektu, namacalny cel.
Najczęściej do kursów załączane są dodatkowe materiały jak kody źródłowe, spis linków z narzędziami itd. co ułatwia nam pracę.
Plusem jest też to, że zazwyczaj takowe kursy nie mają ograniczeń czasowych i możemy do nich powrócić i po roku by coś sobie odświeżyć.

Skąd tutaj się uczyć?

Możliwości też jest kilka. Osobiście najczęściej się uczę na Udemy.com z uwagi na olbrzymią ilość kursów. Większość jest po angielsku (ale nie przejmuj się- zdarzają się także prowadzone po indyjsku, a czasem trafić można nawet na combo- kurs po angielsku prowadzony przez Hindusa, którego angielski jest mniej więcej na tym samym poziomie co esperanto u mojego psa), każdy może sam coś stworzyć i udostępniać (lub sprzedawać), więc podejście do tematu jest przeróżne i naprawdę kurs kursowi nie jest równy.

Jednak jeśli ktoś woli naukę w języku polskim to z rodzimych firm mogę polecić StrefaKursów.pl oraz Eduweb.pl.

Warto też zajrzeć na YouTube na kanały:

 

Jeszcze inną kategorię stanowią wszelkie twory wchodzące w interakcję z użytkownikiem.

Do nauki podstaw webdev z pewnością można polecić: FreeCodeCamp.com, dość znana platforma, łagodnie i prosto wprowadzająca w świat HTML oraz CSS.

Z kolei jeśli chcesz pouczyć się trochę obsługi systemu kontroli wersji (skrótowo pisany SVN) to polecam chyba najczęściej stosowany GIT. Z kolei do jego nauki też jest interaktywna stronka, która jak mi się wydaje zaorała temat: LearnGitBranching.js.org

Dobrym wyjściem do nauki, (ale to już w trochę późniejszym etapie nauki) jest zainteresowanie się tematem hackathonów (choćby jako obserwator), konferencji i warsztatów- naprawdę wtedy fajnie poszerza się wiedzę, współpracuje się z profesjonalistami i tworzy naprawdę fajne, ciekawe projekty co dodatkowo motywuje.

Nie chcesz wychodzić z domu na jakieś tam spotkania? Spoko- zawsze zostaje Ci TopCode.com i zdobywanie (czasem całkiem fajnego) siana za rozwiązywanie problemów ludzi.

Ostatni temat, który chciałbym podjąć to kwestia w jaki sposób się uczyć.

Żeby nauka szła efektywnie trzeba na nią poświęcić trochę czasu- sam kurs, taki wartościowy, ale jeszcze standardowy, to ok 3-4 godzin materiału.
Przerobienie nowego materiału, tak by faktycznie zrozumieć to czego się uczymy to średnio (z mojego doświadczenia) półtora czasu trwania kursu- jeśli trwa on 3 godziny to przed nami jakieś 4,5 godziny faktycznej nauki by nieźle zrozumieć temat- podstawowe ćwiczenia, przeanalizowanie słów, sprawdzenie czegoś w Internecie na temat z kursu... Oczywiście mówimy tu tylko o teorii.

Jednak nie wystarczy przerobić tylko teorii by zgłębić otchłanie wiedzy. Nie można przerobić trochę materiału “oczami”, uśmiechnąć się i powiedzieć “umiem”.Bez treningu, bez przeklikania samemu, bez potestowania- nie nauczysz się.
Nie ma bata- zapamiętasz 70% informacji, ale ich nie utrwalisz i zazwyczaj te brakujące 30% jest kluczowe by cokolwiek działało, a na drugi dzień już zasób informacji spadnie do 50%...

Co za tym idzie kurs takowy wydłuża się, o ile oczywiście podchodzimy do niego tak serio-serio. Tutaj ciężko jest wprowadzić jakąś sztywną ramę dotyczącą trwania fazy praktyki.
U mnie zazwyczaj jest to dwukrotność czasu trwania kursu- zawsze chcę obadać jak najwięcej, wryć w pamięć wszystko.
I tak kurs 3 godzinny daje nam 4,5h teorii i 6h praktyki.

Oczywiście to się może zmieniać- mam porównanie z innymi ludźmi z branży, w szczególności ze współpracownikami, jak zmienne jest tempo nauki.
Bywały kursy ekspresowe, gdzie po szkoleniu następowało pół godziny ćwiczeń i starczyło, a bywały takie materiały, gdzie bawiliśmy się przez tydzień nowo poznaną zabawką (przyznaję się bez bicia, że jak dorwalem szkolenie z frameworku Phaser.js to bawiłem się chyba tydzień w tworzenie prostej gierki i praca z tym frameworkiem dała mi dużo frajdy- być może powrócę do niego za jakiś czas).

Warto jednak pamiętać jedno, niezależnie czego, skąd i jak się uczymy- najważniejsze jest to by się nie poddawać i cały czas rozwijać. Technologie idą wciąż do przodu, stwarzają wciąż nowe rozwiązania i kreują przed nami zadziwiające możliwości.
Żal zostać w tyle i nie skorzystać z narzędzi do tworzenia przyszłości!

P.S Są różne, alternatywne metody nauki- może warto wypróbować naukę przez muzykę?