Trudno o dziedzinę wiedzy, która zmienia się i rozwija szybciej niż informatyka. W efekcie tego programiści są niejako skazani na ciągłą naukę i pogłębianie swojej wiedzy. W tekście odpowiemy sobie na pytanie, jak się uczyć programowania, na przykładzie sprawdzonych sposobów bezpośrednio od praktyków.
[jak-zostac-programista-linki]Spis treści
Przygotowanie techniczne
Przygotowanie techniczne do pracy, czyli wszystkie czynniki zewnętrzne, które wpływają na naszą wydajność.
Przygotuj stanowisko pracy
Przed rozpoczęciem pracy zadbaj o odpowiednie warunki. Mnie najlepiej pracuje się z samego rana przy moim biurku, gdy inni jeszcze śpią. Mam stałe miejsce do pracy, dzięki czemu gdy tylko wchodzę do pokoju, przechodzę w tryb pracy.
Jeżeli lubisz pracować przy muzyce rób to. To Ty sam najlepiej wiesz, w jakich warunkach dobrze Ci się pracuje.
Unikaj niepotrzebnych przerw
Zawczasu postaraj się przewidzieć, co będzie Ci potrzebne podczas pracy, czy nauki. Ja bardzo często pracuję robiąc notatki na papierze, dlatego odpowiedni zapas kartek i ołówków zawsze musi być pod ręką.
Podobnie sprawa ma się, jeżeli chodzi o informacje potrzebne do realizacji danego zagadnienia. Przed rozpoczęciem zadania zweryfikuj, czy nie potrzebujesz jakiś dodatkowych dostępów lub szczególnych informacji od innych osób. Dzięki temu może unikniesz niepotrzebnej przerwy już na starcie.
Uważaj na różnego rodzaju rozpraszacze
Slack jest fajny, telefon też, ale… Pamiętaj, że świat jest asynchroniczny i w większości wypadków kolega może poczekać pół godziny na Twoją odpowiedź. Wyłącz wszystko, co możesz i skup się na swojej robocie. Dzięki temu łatwiej zrealizujesz zamierzony cel, a nie tylko będziesz stwarzał pozory zapracowania.
Przygotowanie psychiczne
Nie chodzi przecież o to by pracować ciężko, ale by pracować mądrze. Musisz wiedzieć, czego chcesz i jak chcesz to osiągnąć.
Miej plan działania
Każdy plan jest lepszy niż żaden. Nawet przygotowanie 3 prostych punktów na krzyż sprawi, że lepiej przemyślisz dany problem i masz większe szanse, że osiągniesz swój cel.
Przykładowo, jeżeli chcesz nauczyć się programować w Javie, określ co to dokładnie znaczy i jak chcesz to osiągnąć.
Twój plan mógłby wyglądać np. tak: Chcę nauczyć się programować w Javie, dlatego zacznę od napisania aplikacji konsolowej wykonującej proste operacje na macierzach. Na ten cel chcę poświęcić 3 razy w tygodniu po 2 godziny.
Systematyczność jest ważniejsza od ambicji
Pamiętaj, że nawet najlepszy plan, jeżeli nie będzie realizowany jest nic niewart. Nie ma sensu oszukiwać się, że będziesz uczył się codziennie przez 3 godziny, jeżeli wiesz, że zwyczajnie nie masz na to czasu. Człowiek wtedy tylko jeszcze bardziej się demotywuje i całkowicie odpuszcza realizację takiego planu. Lepiej zaplanuj trochę mniej, ale postaraj się wytrwać w tych założeniach.
Rób przerwy i powtórki
Bardzo dobrym sposobem jest praca w blokach tematycznych i czasowych, np. korzystając z techniki pomodoro. Podziel sobie pracę na fragmenty po 30-45 minut maksymalnego skupienia. W tym czasie za wszelką cenę postaraj się nie odrywać do realizowanego zadania.
Po takim bloku koniecznie zrób krótką przerwę. Możesz wykorzystać ten czas na rozprostowanie kości, twój kręgosłup i oczy z pewnością Ci podziękują. Warto również przejrzeć skolejkowane w tym czasie przychodzące wiadomości i przygotować się do kolejnego bloku wzmożonej pracy.
Po co Ci to wszystko?
Praca i nauka zawsze są pewnym wysiłkiem. Żeby dobrze wykonywać swoją robotę, musisz wiedzieć, po co to robisz. Jeżeli uczysz się nowej technologii, bo sprawia Ci to przyjemność i chcesz się rozwijać to dobrze. Jeżeli wkładasz ten wysiłek w nadziei, że dostaniesz podwyżkę też dobrze. Ważne byś miał świadomość, po co się starasz. Jest wtedy większa szansa, że w chwili zwątpienia nie rzucisz tego wszystkiego i nie spędzisz wolnego czasu w inny sposób, np. leżąc na kanapie.
Miej wyraźny cel
Dobrze, jeżeli wiesz, co chcesz osiągnąć, jednak jeden odległy cel to zdecydowanie za mało. Warto podzielić sobie pracę na mniejsze fragmenty tak, by ogrom pracy potrzebny do ich realizacji Cię nie przytłoczył.
Po zakończeniu każdego etapu mamy wrażenie dobrze wykonanej roboty, jest to również swego rodzaju mini nagroda, dzięki czemu wraca motywacja do dalszej pracy. Jeżeli natomiast po realizacji takiego fragmentu uznasz, że nie chcesz już dalej tego ciągnąć, nie zostajesz z pustymi rękoma.
Wcześniej dla mnie takimi checkpointami były funkcjonalności zrealizowane we własnych projektach lub zdany egzamin na certyfikat. Dziś bardzo często jest to publikacja wpisu na blogu.
Praktyka
Jeżeli miałbym podsumować cały ten wpis jednym słowem, byłaby to właśnie praktyka. Po prostu nie da się nauczyć nowej technologii, jeżeli nie przysiądziesz i nie zaczniesz w niej pisać. Dla mnie jest to również najprzyjemniejsza forma nauki.
Rozwiązywanie prawdziwych problemów
Tak jak nie da nauczyć się pływać czytając tylko o tym, tak nie licz, że nauczysz się programować bez pisania kodu. Najlepiej jest zdobywać nowe umiejętności rozwiązując prawdziwe problemy.
Większość moich projektów w pracy zaczynałem od naprawy zgłoszonych błędów. Jest to świetny sposób na poznanie projektu i zorientowanie się w kodzie.
Pet projekt
Jeżeli uczysz się nowej technologii po godzinach, gorąco zachęcam do napisania w niej własnego projektu. Dzięki temu będziesz miał okazję wykorzystać ją w praktyce, a niejako przy okazji będziesz miał również nowy wpis do portfolio.
Poszukaj mentora
Mówi się, że dobry programista musi sam sobie radzić w każdej sytuacji i sam zdobywać wiedzę. Po części się z tym zgadzam, bo przecież zdecydowaną większość czasu pracujemy samodzielnie, szczególnie w przypadku pracy zdalnej.
Jednak nic tak nie przyspiesza nauki, jak dobry mentor. Zawsze starałem się otaczać w projekcie ludźmi mądrzejszymi ode mnie. Dzięki temu miałem okazję czerpać z ich doświadczenia.
Nauczaj innych…
…czyli zostań mentorem. Nie ma chyba lepszego sposobu na utrwalenie i pogłębienie wiedzy z danego tematu niż próba wytłumaczenia go innym. Dzięki takiej współpracy zyskują obie strony.
Możesz pisać bloga, występować na konferencjach programistycznych, czy po prostu pomóc koledze z biurka obok.
Siła skupienia
W świecie IT bardzo często pokutuje przekonanie, że ~9 kobiet jest w stanie urodzić dziecko w ciągu jednego miesiąca~. Tak jak w przypadku ciąży, w przypadku projektów informatycznych nie wszystko da się zrównoleglić. Zwyczajnie to rozwiązanie się nie skaluje.
Rób jedną rzecz naraz
Człowiek z natury nie jest przystosowany do wykonywania wiele zadań jednocześnie. W jednak chwili możemy skupić się w pełni tylko na jednej rzeczy. Chcąc z tym walczyć, ponosimy koszty zmiany kontekstu (context switching). W efekcie czego pracując w ten sposób, wykonujemy zadania znacząco dłużej, niż gdybyśmy skupili się tylko na jednej rzeczy i dopiero po jego zakończeniu przeszli do kolejnej.
Rób wiele rzeczy jednocześnie
Zadanie zadaniu nierówne, dlatego część z nich można z powodzeniem wykonywać jednocześnie. Mowa tu przede wszystkim o rzeczach mniej angażujących. Jeżeli przykładowo jedziesz samochodem, biegasz, sprzątasz mieszkanie, czy czekasz w kolejce, to jest to świetna okazja, na naukę nowych rzeczy słuchając np. podcastów.
Nauka na co dzień
Jako programiści mamy świetną okazję na naukę nowych rzeczy w godzinach pracy. Rozwijasz swoje umiejętności i jeszcze Ci za to zapłacą, sytuacja idealna 🙂
Oczywiście rzadko zdarzają się sytuacje, że pracodawca pozwoli Ci skupić się tylko na nauce. Jednak bardzo często to od Ciebie zależy jakie zadania będziesz realizował i w jakich technologiach (przynajmniej w pewnym stopniu). Warto wyjść z inicjatywą i powalczyć trochę o ciekawsze zadania.
Just in time learning
Dzięki JiTT możesz rozwijać swoje umiejętności jednocześnie nie narażać pracodawcę na zbyt duże koszty i ryzyko, że dana wiedza nie zostanie wykorzystana w praktyce.
Poznawaj nowe rzeczy
Zawsze warto poszerzać swoje horyzonty. Mówi się, że dla człowieka, który dysponuje tylko młotkiem wszystko zaczyna wyglądać jak gwóźdź. Jest w tym bardzo dużo prawdy, również w kontekście technologii informatycznych.
Mimo iż większość programistów skupia się głównie na jednej wybranej technologii, warto od czasu do czasu poświęcić chwilkę na weryfikację innych możliwości, by całego życia nie spędzić tylko z jednym młotkiem w ręku.
Ja w tym celu bardzo dużo czytam. Przede wszystkim książki tematyczne oraz blogi technologiczne.
Jaki masz swój sprawdzony sposób na naukę nowych rzeczy i pogłębianie wiedzy?
[author name=”Paweł Strejczek” image=”pawel-strejczek.jpg” url=”http://strejczek.com/”] [/author]Tylko praktyka. Programowanie nie jest wiedzą encyklopedyczną, ale umiejętnością praktyczną. Tak samo, jak nie można nauczyć się pływać czy jeździć na rowerze spędzając niekończące się godziny na czytaniu książek, nie uprawiając tych sportów w praktyce, tak też programowania nie można się nauczyć, czytając jedynie książki.
Dobre książki techniczne są wartościowe i czytam ich dość sporo – ale mają sens jedynie, gdy mamy już podstawową wiedzę jak poruszać się w wybranej technologii.
Nie jestem też zbytnim zwolennikiem (może poza małymi wyjątkami) kursów i tutoriali video. Zwykle dotyczą one jedynie pewnego ograniczonego zakresu i autor prowadzi nas tam za rączkę krok po kroku, nie pozwalając nam popełniać błędów, a doświadczenie zbieramy przecież głównie ucząc się na błędach, które popełniamy.
Ucząc się nowej aplikacji, biblioteki czy technologii próbuję od razu coś zrobić w praktyce. Przeglądam pobieżnie dokumentację i zaczynam działać. Prędzej czy później napotykam na problemy i wtedy szukam rozwiązań (w dokumentacji, w google, na forach itp.). Dopiero kiedy jestem w stanie stworzyć coś poprawnie działającego i uznam, że warto inwestować w to więcej czasu, rozglądam się za materiałami dotyczącymi dobrych praktyk, czy specyficznych rozwiązań.
Nie warto też uczyć się technologii „na zapas”, jeżeli nie mamy przed sobą perspektywy jej praktycznego wykorzystania w firmowym czy prywatnym projekcie. Po pierwsze pamięć jest ulotna, po drugie zaś rozwój w świecie IT jest niezwykle dynamiczny i wiedza bardzo szybko staje się nieaktualna.
Zap*****ć.
Nie zaczynać się obijać, żeby się zanadto nie rozleniwić. Starać się poświęcić przynajmniej te pół godziny dziennie na rozwijanie się, ostatnio w podcaście Ostra Piła Jarek Stadnicki słusznie zauważył, że nawet tak mały nakład czasu się skaluje i w tygodniu są to 3h, w miesiącu 12h itd.
Na początku jest to głównie nadrabianie zaległości i uzupełnianie luk w wiedzy. Ja miałem listę, na którą wpisywałem sobie rzeczy, których nie rozumiałem. Założenie było takie, że pod koniec dnia lista miała być pusta.
Później klepanie tego samego, co w pracy robi się nudne, więc polecam poszerzyć swoje horyzonty – klepiesz SQL-e? Spróbuj jakiejś dokumentowej lub grafowej bazki. Cały dzień klepiesz C#? Naucz się podstaw F#. Pozwala to zachować otwarty umysł i nie myśleć tabelkami i relacjami przy problemie, który potrzebuje np. grafu.
W zasadzie nie mam jakiegoś specjalnego sposobu na uczenie się nowych rzeczy. Na początku swojej kariery dużo kopiowałem z istniejących rozwiązań i starałem się samodzielnie wprowadzać zmiany w istniejącym kodzie, tak aby dostosować go do swoich potrzeb.
Teraz bardzo dużo czytam o technologiach webowych i jeśli coś mnie zainteresuje, to staram się to wykorzystać w kontekście swojego bloga, bądź pracy. Nowych rzeczy uczę się teraz niejako przy okazji. W ostatnim okresie okazję do nauczenia się czegoś nowego lub po prostu odświeżenia swojej wiedzy dał mi konkurs Daj Się Poznać. Po prostu uznałem, że to może być ostatnia szansa na to, aby posiedzieć więcej nad kodem, zanim urodzi mi się dziecko. Bo obecnie chcę poświęcać jak najwięcej czasu swojemu synowi.
W trakcie akcji Daj Się Poznać promowałem swój projekt, który zapewnia interfejs przeciągnij-i-upuść – DragsterJS. Dzięki niemu można zbudować wiele różnych, ciekawych rozwiązań poprawiających UX aplikacji internetowych czy stron internetowych.
Uwielbiam czytać, więc dla mnie na pierwszym miejscu na liście źródeł wiedzy są różne blogi i książki. Przy czym często blogi są fajniejsze, bo można od razu o coś zapytać autora i napotkać na naprawdę świeże rzeczy, o których książka powstanie dopiero za jakiś czas.
Świetnie też przyswajam wiedzę z kursów wideo zarówno płatnych, jak i tych darmowych, a nawet z filmików na Youtube, gdzie jakiś pasjonat opisuje jakiś temat.
Polecam również konferencje – dają zarówno dużo nowej wiedzy, możliwość porozmawiania z prelegentami o tematach, które przedstawiali, a także spotkania nowych osób z naszej branży. Natomiast jeśli poznawanie nowych ludzi nas nie interesuje lub nie mamy możliwości uczestniczenia w danej konferencji, to na Youtube znaleźć można większość nagrań z konferencji, które się odbyły.
Jedyny słuszny – robienie tych rzeczy. Dodatkowo pomaga mi pisanie o tym na blogu (nauka innych == najlepsza nauka samego siebie).
[author name=”Jakub Gutkowski” image=”jakub-gutkowski.png” url=”https://blog.gutek.pl”] [/author]Zawsze czytam, dużo czytam. Następnie zastanawiam się, do czego to może mi się przydać, jaki problem to rozwiązuje. No i staram się też napisać jakąś małą aplikację. Coś co pozwoli mi przetestować, to czego się nauczyłem. Czy to będzie język, czy jakiś wzorzec, muszę go zobaczyć i poczuć, zanim będę mógł się nim płynnie posługiwać.
[author name=”Mateusz Maciaszek” image=”mateusz-maciaszek.jpg” url=”http://speedcom.github.io”] [/author]Moim sposobem na poznawanie nowych rzeczy jest przerabianie danego działu samemu. Siadam, szukam jakiegoś poradnika tekstowego lub wideo i piszę krok po kroku. Przy okazji sprawdzając **Co by było, gdyby…**. Jednak również poza kursami ważne jest czytanie dokumentacji, tam znajdziemy pewne informacje, a jeśli potrzebujemy dodatkowego wytłumaczenia, warto zaopatrzyć się w dodatkowe materiały np. książki.
[author name=”Maciej Aniserowicz” image=”maciej-aniserowicz.jpg” url=”https://devstyle.pl/”] [/author]Programowanie razem z samouczkiem, wujkiem Google, StackOverflow (chociażby przeglądając pytania i odpowiedzi) i dokumentacją oraz modyfikowanie przykładów z samouczka na własną rękę. Dodatkowo, dla uporządkowania wiedzy, czytanie dokumentacji.
[author name=”Łukasz Monkiewicz” image=”lukasz-monkiewicz.jpg” url=”https://lmonkiewicz.com”] [/author]Zdecydowanie wymyślenie własnego projektu i jego realizacja w wybranej przez siebie technologii. Dzięki temu można zetknąć się z różnymi ciekawymi problemami, o których poradniki typu „Hello world” milczą i można się naprawdę sporo dowiedzieć. Taką samą technikę nauki starałem się realizować na studiach na przedmiotach, z których projekt zwalniał z zaliczenia (a z niektórych zwalniał nawet z przychodzenia na zajęcia ;)). Po pierwsze dowiedziałem się więcej niż moi koledzy na ćwiczeniach, po drugie miałem już coś, czym mogłem się pochwalić w CV. Dwie pieczenie na jednym ogniu.
[author name=”Szymon Siarkiewicz” image=”szymon-siarkiewicz.jpg” url=”http://szymonsiarkiewicz.pl”] [/author]Aha, co do nauki nowych rzeczy to najpierw to coś musi mnie zaintrygować i zainteresować, potem to już jest z górki. Zaczynam się tym po prostu bawić 😉
[author name=”Arkadiusz Mierzwa” image=”arkadiusz-mierzwa.jpg” url=”http://arkadiuszm.pl”] [/author]Najlepszym sposobem na naukę jest własny projekt. Najlepiej taki, który nie będzie zbyt łatwy ani zbyt trudny. Nie ma sensu pisać kolejnej listy TODO tak samo, jak porywać się na stworzenie drugiego facebooka. Pierwsza opcja jest mało rozwijająca, a druga sprawi, że prawdopodobnie po tygodniu stracimy zapał.
[author name=”Przemysław Juśkiewicz” image=”przemyslaw-juskiewicz.jpg” url=”http://blog.pjuskiewicz.com”] [/author]Co do pozyskiwania informacji o nowościach to na pewno Twitter tam obserwuję elementy, które mnie interesują, to jest: JavaScript, Reactjs, Angular, NodeJS, C# 7.0 w tej chwili, oraz ludzi, którzy są guru z konkretnych Technologii itp. Co do nauki najbardziej lubię przeczytać książki z danej technologii, wykonują przy tym zadanie, które jest w ramach tej książki. Polecam darmowe. Gdy przerobię całą książkę i apka w ramach ćwiczeń jest fajna, to ją rozwijam o własne pomysły. Na przykład, gdy się uczyłem JavaScript, to napisałem grę Statki w ramach Daj się poznać 2017.
[author name=”Dominik Pawlik” image=”dominik-pawlik.jpg” url=”https://b00stiandroid.wordpress.com”] [/author]Moim obecnym sposobem jest trochę teorii zapoznającej z tematem i dużo praktyki. Dopiero bezpośredni kontakt, z tym czego się uczę, uczy mnie naprawdę. Dodatkowo staram się robić to codziennie, nie tylko w pracy, lecz również po. Czasem jest to jeden przeczytany artykuł, czasem kilka godzin, ale systematyczność jest dla mnie ważna. Ostatnio praktykuję naukę również przez tłumaczenie komuś lub podsumowanie sobie swojej wiedzy poprzez pisanie artykułów.
[author name=”Kamil Ruchała” image=”kamil-ruchala.jpg” url=”https://sarvendev.com/”] [/author]Pisałem już taki luźny post na ten temat. Staram się wyznaczać sobie priorytety, żeby nie zginąć w nadmiarze informacji mnie otaczających, bo wtedy łatwo popaść w prokrastynację. Stawiam na naukę rzeczy, które się nie zmieniają szybko, a więc wzorce, dobre praktyki itp., dalszy plan to technologia. Wiadomo oczywiście, że jeśli mówimy o początkach, to jakieś zaplecze technologiczne należy mieć. Więc, zamiast przerabiać książki na temat technologii, preferuję podejście własny ciekawy projekt i wspomaganie się dokumentacją.
[author name=”Marcin Pietraszek” image=”marcin-pietraszek.jpg” url=”http://www.samouczekprogramisty.pl”] [/author]Moim zdaniem wszystko sprowadza się do praktyki. Każdą nową rzecz staram się przećwiczyć w praktyce. Napisanie kilku linijek kodu zawsze jest najlepszym sposobem na utrwalenie wiedzy. Jeśli chodzi o pogłębianie wiedzy, to lubię dokładnie wiedzieć, jak coś działa. Sprowadza się to do czytania coraz więcej na dany temat. Czytanie kodu źródłowego czy specyfikacji także pomaga.
[author name=”Michal Dymel” image=”michal-dymel.jpg” url=”https://devblog.dymel.pl”] [/author]W tej chwili to jest blogowanie, wcześniej wypracowanie sobie takiej pozycji w pracy, żeby moc pracować nad nowymi zadaniami, sprawdzać nowe technologie itp. Świetnym sposobem jest prowadzenie własnego projektu na boku.
[author name=”Jakub Dzikowski” image=”jakub-dzikowski.jpg” url=”http://dzikowski.github.io”] [/author]Czytanie blogów mniej lub bardziej technicznych. Polska scena blogowa dzięki konkursowi Daj Się Poznać bardzo się rozrosła i naprawdę jest z czego wybierać. Polecam również na uczęszczanie na devspotkania, warsztaty oraz konferencje.
[author name=”KrzaQ” image=”krzaq.jpg” url=”https://dev.krzaq.cc”] [/author]Mam to szczęście, że traktuję moją pracę i dziedzinę jako hobby, więc nawet w ramach prokrastynacji oglądam nagrania z konferencji, czytam blogi lub książki, lub biorę udział w różnych zabawach – takich jak np. Advent of Code czy SPOJ. Myślę, że najlepiej się uczyć robiąc, przy czym należy poddać swoje wytwory zewnętrznej ocenie, aby być pewnym, że uczysz się dobrze. Poza tym warto czytać dobre książki oraz być na bieżąco dzięki blogom i konferencjom.
[author name=”Wojciech Mioduszewski” image=”wojciech-mioduszewski.jpg” url=”http://www.codinghappiness.com”] [/author]Zdecydowanie wolę się uczyć od szczegółu do ogółu. Najpierw dotknąć jakiegoś kawałka kodu, spróbować się z nim pobawić, zobaczyć efekty takich czy innych zmian, spróbować przerobić go w zamierzony sposób. Dopiero potem siadam do ogółu – artykuł/książka. Choć zdarza mi się, że na sam początek biorę na tapet kurs z Pluralsigth – tam sprawy bywają wytłumaczone w taki sposób, że jako początkujący jestem w stanie wychwycić, na czym rzecz polega.
[author name=”Arkadiusz Benedykt” image=”arkadiusz-benedykt.jpg” url=”http://www.benedykt.net/”] [/author]Mój mózg najlepiej przyswaja przez 2 kanały, pierwszy video z konferencji lub sama konferencja i to jest dla mnie takie pierwsze sito. Jeśli coś mnie wciągnie to po prostu użyć tej nowej rzeczy. Nawet na małym projekcie, na jakimś proof of concept. Próbuje rozwiązać jakiś prosty problem i na bieżąco przeglądać dokumentację i Stack Overflow. Do tego dochodzi czytanie dokumentacji i artykułów związanych z daną technologią, ale to już jest dalszy etap.
[author name=”Kamil Hadas” image=”kamil-hadas.jpg” url=”https://www.webdotnet.pl”] [/author]Kiedyś były to głównie kursy online. Plural Sight, Udemy i CodeSchool to główne platformy, z których się uczyłem (i uczę do tej pory). W moim przypadku jednak niezmiernie ważne jest, by pisać kod wraz z trenerem. Jeśli tego nie robiłem i nie mogłem zdobytej wiedzy wykorzystać w praktyce, od razu po zakończeniu kursu to wiedza się ulatniała. Część kursów oglądałem bez pisania wraz z autorem, ale tylko wtedy, jeśli zdobytą wiedzę wykorzystywałem w projektach w pracy. Poza kursami online, książki i to polecam już na początku się zaznajomić z dobrymi praktykami i wzorcami, nawet jeśli nie za bardzo się je rozumie. Ja tak zrobiłem, one były gdzieś z tyłu głowy i jak po roku odświeżyłem sobie wiedzę na ten temat, to od razu elementy układanki poszły na właściwe miejsce. Uważam także, że jeśli jest taka możliwość i pracuje się w teamie osób, które chętnie dzielą się wiedzą, to należy to wykorzystać. Ważne jest tu, aby nie marnować czasu innych, przychodzenie do tej samej osoby z tym samym problemem, gdy wcześniej się powiedziało, że się rozumie, powoduje niepotrzebne frustracje. To chyba tyle, ja tak działałem przez te lata i wyszło całkiem dobrze 😊 A jeszcze jedno przyszło mi do głowy, dobrzy, gdy w pracy robisz rzeczy, które wymagają od Ciebie kreatywności i douczenia się. Dzięki temu nieustannie się rozwijasz, najgorsze co możesz zrobić to tkwić w projekcie, w którym robisz non stop te same powtarzalne rzeczy.
[author name=”Artur Dębkowski” image=”artur-debkowski.jpg” url=”http://ekhart.pl/”] [/author] Just in time learning. Uczenie się przez praktykę. Tzn. obrać sobie jakiś cel, który nas interesuje (np. stworzenie gry) i zrobić wszystko, żeby go osiągnąć. Wykorzystywać w tym celu mocno tutoriale, StackOverflow w celu odnalezienia odpowiedzi na konkretne pytania.Dodatkowo naukę pogłębia uczenie innych tego, czego samemu się nauczyło. Stąd warto właśnie prowadzić bloga, przekazywać swoją wiedzę innym. Przygotowywać prezentacje na różnych grupach związanych z tematami, które nas interesują (warto skorzystać w tym celu z meetup).
[author name=”Paweł Bulwan” image=”pawel-bulwan.jpg” url=”https://przedczasem.taurit.pl/”] [/author]Staram się uczyć tego, co będę mógł wykorzystać w praktyce w bieżącym tygodniu. Tylko wtedy wiem, że wiedza nie uleci, zanim wejdzie w palce. Czasem od tego odchodzę i uczę się tego, co mnie zaciekawiło, ale to traktuję bardziej jako rozrywkę.
[author name=”Mateusz Cholewka” image=”mateusz-cholewka.jpg” url=”https://webmtkblog.wordpress.com”] [/author]Nie uczyć się nowych rzeczy tylko po to, żeby się ich nauczyć. Jeśli już czegoś chcemy się nauczyć, to musi być konkretny powód, inaczej prawdopodobnie zabraknie Ci motywacji. Jeśli chcesz nauczyć się programować, żeby napisać aplikację robiącą COŚ, to najpierw napisz aplikację robiącą COŚ, a wtedy nauczysz się programować.
[author name=”Arkadiusz Suchenia” image=”arkadiusz-suchenia.jpg” url=”http://arnonedev.pl”] [/author]Hmmm… Jakby się tak zastanowić, to ja zawsze byłem samoukiem. Zawsze brałem książkę, konfigurowałem środowisko, czytałem książkę, robiłem ćwiczenia, ewentualnie jakieś swoje dodatkowe projekciki, w których mógłbym wykorzystać to, czego aktualnie się uczę. W ten sposób się uczyłem C++, JAVY, Android’a, technologi webowych. Spotkałem się ze stwierdzeniem „Just in time learning”, czyli, żeby uczyć się czegoś w momencie, kiedy akurat się tego potrzebuje. Ja osobiście wolę przeczytać całą książkę, ponieważ zawsze istnieje szansa, że jeśli będzie mi coś potrzebne, skojarzę sobie, że o czymś takim już kiedyś czytałem w książce i odejdzie mi trochę czasu na szukaniu informacji w internecie. Oczywiście nie zawsze się tak da… Czasem trzeba uczyć się na bieżąco podczas pracy nad danym projektem, szczególnie jeśli nigdy wcześniej nie pracowało się w danej technologii lub nie robiło akurat takich rzeczy, które teraz są konieczne (np. modyfikacja plików PDF, ich przeglądanie, drukowanie, etc.). Jeżeli chodzi o pogłębianie wiedzy, myślę, że najlepszym sposobem jest praca nad różnymi projektami, które wymagają różnych aspektów danej technologii współpracujących ze sobą.
[author name=”Marek Zając” image=”marek-zajac.png” url=”http://zajacmarek.com”] [/author]Jeśli miałbym powiedzieć o moim sposobie jednym słowem, to jest to – praktyka. Teraz naukę każdej nowej technologii zaczynam od tego, że biorę przykład z tutoriala i próbuję go uruchomić. Kiedy się to uda, to powoli modyfikuję kod, opierając się albo o dalsze tutoriale, albo po krótkim czasie próbując robić coś samodzielnie. Teorię czytam przy okazji, zazwyczaj, kiedy już potrafię coś w danym języku czy bibliotece zrobić i chcę dokładniej ją poznać. Ogromnym wsparciem, którego dawniej nie było, są przykładowe aplikacje, które, chociażby twórcy danej technologii publikują na GitHubie. Można z nich bardzo szybko poznać standardowe sposoby użycia i wyciągnąć gotowy szablon. Ogólnie rzecz biorąc, teraz zawsze szukam informacji, które są pokazane na przykładzie, czy to na blogach, czy na Youtubie. Nie ma sensu uczyć się teorii czegoś, w czym nam się źle pracuje, dlatego najpierw praktyka.
[author name=”Jacek Łapiński” image=”jacek-lapinski.jpg”] [/author]Interesować się tematem. Mieć cel. Najsilniejsze emocje są wokół pet projektów – takich swoich domowych zacisznych projektów, które rozwijamy dlatego, że coś nas w nich „jara”. A pozytywnie silne emocje to duża dawka motywacji. Innymi słowy, po prostu warto robić, to co chce się robić, wtedy idzie łatwiej.
[author name=”Michał Chęciński” image=”michal-checinski.jpg” url=”https://michalchecinski.pl/”] [/author]Nauka przez praktykę. To najlepszy sposób. Jest nawet taki cytat:
„Tell me and I forget, teach me and I may remember, involve me and I learn”. ― Benjamin Franklin
Te słowa najlepiej obrazują, jak działa ludzki mózg. Trzeba się w coś zaangażować i przede wszystkim chcieć się czegoś nauczyć samemu. Nikt nam wiedzy nie wleje do głowy. Jeżeli Cię coś nudzi, to zastanów się, może to nie jest to, co faktycznie chcesz robić.
Zwykle szukam video tutoriali na konkretny temat, bardzo lubię wizualne materiały. Korzystam również z Mozilla Developer Network, tam można znaleźć wierzytelne informacje. Do tego uważam, że świetnym sposobem na naukę jest rozwój swoich małych projektów. Wtedy sami musimy stawić czoła wyzwaniom i wtedy zaczyna się intensywna nauka.
[fbLikePage][/fbLikePage]Jak się uczyć – podsumowanie
Nie ma jednego tajnego sposobu, który jak za dotknięciem czarodziejskiej różdżki nauczy Cię nowej technologii. Nauka to w dużej mierze ciężka praca i systematyczność. Od Ciebie jednak zależy czy poświęcony czas będzie odpowiednio spożytkowany. Powodzenia.
Na koniec mam jeszcze do Ciebie gorącą prośbę. Jeśli spodobał Ci się ten artykuł, spełnij przynajmniej jeden punkt z poniższej listy:
- Jeżeli uważasz, że ktoś z Twoich znajomych może być zainteresowany tematem tego artykułu — podeślij mu link do tego wpisu. Jestem przekonany, że informacje w nim zawarte będą dla niego bardzo przydatne.
- Proszę, Kliknij „Lubię to” w boksie Facebooka odrobinę wyżej. Cel to zebranie 200 polubień do końca 2017 roku. Razem jesteśmy w stanie to zrobić 🙂
- Jeżeli jeszcze nie zapisałeś się na newsletter, proszę zrób to teraz.
- Napisz proszę w komentarzu, jakie masz swoje sprawdzone sposoby na naukę. Dzięki rzeczowej rozmowie, wszyscy możemy tylko zyskać. Liczę na Twoją opinię.
- Jeżeli masz jakieś problemy i wątpliwości dotyczące tematu artykułu, podziel się nimi. Najlepiej w komentarzu poniżej, ewentualnie korzystając z kontaktu.
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!