Tym artykułem mogę sobie strzelić w kolano, patrząc na to, czym zajmuję się na tym blogu. Niemniej jednak jest to problem, z którym sam zmagałem się przez długi czas, i z którym nadal czasami walczę. W tym artykule podzielę się z Tobą moimi przemyśleniami związanymi z nauką (w tym nauką programowania). Opiszę kilka problemów, jakie widzę w nauce i dlaczego uważam je za istotne.
Tutorial hell
Na problem tutorial hell trafia wielu programistów wannabe, ale i znalazłby się niejeden doświadczony nim dotknięty. Zjawisko tutorial hell polega na tym, że zamiast wdrażać zdobytą wiedzę w życie, ogląda się kolejne kursy, tutoriale, zapisuje się na kolejne szkolenia itd.
Ukończenie jednego tutoriala kończy się zwykle kolejnym i kolejnym. Wpadnięcie w taki kołowrotek jest korzystne jedynie dla twórców kursów. Do tutorial hell wpaść jest bardzo łatwo, sam w przeszłości miałem nieprzyjemność w nim być. Jednak jest metoda, która może Ci pomóc z niego wyjść lub do niego nie trafić.
W danym obszarze wybierz maksymalnie JEDEN kurs/książkę/szkolenie. Przerób ten materiał od deski do deski. Na wybór kursu poświęć trochę czasu. Wybrany kurs ma nie być dobry. Ma być NAJLEPSZY jaki znajdziesz. Taki kurs pewnie będzie kosztował kupę kasy…
Oczywiście najdroższy nie oznacza najlepszy, ale dobry towar kosztuje dużo. Od płatnego, drogiego kursu możesz oczekiwać i wymagać. Taki kurs prawdopodobnie nie będzie dukaniem dokumentacji przez losowego typa z portali z kursami sprzedawany na wiecznej promce -80%. Jak to kiedyś zasłyszałem – „nie stać mnie na tanie rzeczy”. Oczywiście istnieje ryzyko, że wdepniesz na minę, ale to już jest Twoim zadaniem, by zrobić dobry research przed zakupem. Na magików obiecujących gruszki na wierzbie i złote góry możesz trafić w każdej branży, w IT też.
Wydanie sporej kasy na kurs dodatkowo zmotywuje cię do faktycznego zrealizowania go i wyciśnięcia z niego 110%. Rzeczy, za które płacimy dużo, zwykle szanujemy bardziej niż rzeczy, które dostaliśmy za grosze lub za darmo. Prawdopodobnie inaczej podejdziesz do kursu kosztującego tygodniówkę, a inaczej do kursu, który kosztował mniej niż dobry kebab.
Na bazie zdobytej wiedzy zrealizuj WŁASNY projekt. Jeszcze lepszym podejściem według mnie będzie wykorzystywanie w praktyce wiedzy z kursu do projektu podczas jego przerabiania.
Nie bez przyczyny napisałem o własnym projekcie. Odtwarzanie projektów z kursów lub przepisywanie kodu nie nauczy Cię programowania podobnie jak zostaniesz drugim Remigiuszem Mrozem przepisując jego książki 😉
Ponadto realizując własny projekt, trafisz na problemy, których w kursie nie omówiono. Będziesz musiał(a) samodzielnie wymyślić rozwiązanie lub je znaleźć. Popełnisz też sporo błędów, których przepisując kod nie uświadczysz, a to walka z błędami jest jednym z lepszych sposobów na naukę programowania.
Dopiero gdy opanujesz wiedzę z jednego kursu na własnym kodzie na tyle, że nie będziesz musiał(a) praktycznie do niego zaglądać, to zacznij szukać następnego. Rozpoczynanie kursu „technologia X dla zaawansowanych” zaraz po ukończeniu „technologii X dla początkujących” to BARDZO zły pomysł.
Problem „zbierania informacji”
Z problemem „zbierania informacji” zmagam się do dzisiaj. Zbieraniem informacji określam wszelkie formy zapisywania materiałów edukacyjnych „na później”. Może to być na przykład wrzucanie filmów na YouTube na playlistę „na później”, zapisywanie artykułów do przeczytania (ja wykorzystuję do tego aplikację Pocket) czy dorzucanie kolejnych materiałów do specjalnego projektu w Todoist.
Oczywiście nie zawsze jest czas, by z danym materiałem zapoznać się od razu, więc siłą rzeczy ląduje on w takich miejscach. Problem jednak pojawia się gdy takich artykułów czy filmów zbiera się kilkadziesiąt lub kilkaset. Rozwiązań tego problemu widzę kilka:
- Minimalizowanie liczby rzeczy, które dodaję na listę do przeczytania/do obejrzenia. Z góry odrzucam dodawanie niektórych typów treści:
- Temat jest ważny, ale mnie nie interesuje lub nie potrzebuję tej wiedzy na dany moment. Przykładowo w momencie, gdy Generative AI zyskało na popularności, intencjonalnie ignorowałem wszystkie treści związane z AI. Uważam, że mijało się z celem czytanie wszelkich poradników i nowinek, gdy ten temat mnie zbytnio nie interesował. Dopiero gdy faktycznie zainteresowałem się tematem, to zacząłem researachować temat i samodzielnie wyszukiwać treści o interesujących mnie zagadnieniach.
- Temat jest ciekawy, ale nie jest mi do niczego potrzebny. Tutaj też mam konkretny przykład. Trafiłem kiedyś na świetny artykuł o tym, jak działa GPS. Spędziłem około godziny na czytaniu go i… dziś z niego nic nie pamiętam. W mojej codziennej pracy ta wiedza jest zupełnie nieprzydatna. Takie treści są świetne, by do nich zajrzeć, gdy faktycznie potrzebujemy tej wiedzy lub w ramach ciekawości czy rozrywki. Jednak jeśli celem jest zdobycie wiedzy w celu wykorzystania jej „kiedyś” to według mnie lepiej przeczytać go „kiedyś”. Jeśli SERIO będziesz go kiedyś potrzebował(a), to go znajdziesz, trust me 😉
- Poruszony temat jest mi znany. Nie widzę sensu, by czytać po raz dziesiąty o czymś, co już wiem. Czasami skanuję wzrokiem taki artykuł i dodaję go do przeczytania „na później”, jeśli faktycznie widzę napracowanko autora lub, że porusza dany temat niestandardowo. Ewentualnie gdy artykuł porusza aspekty danego zagadnienia, których nie znam. Z drugiej strony, rzadko kiedy są zagadnienia, o których MUSISZ wiedzieć wszystko. Często 80% Ci wystarczy. Ba, nawet 50% czy 30% czasami będzie wystarczające.
- Autor treści wykorzystuje prawo nagłówków Betteridge’a. Prawo to mówi tyle, że jeśli w nagłówku znajduje się pytanie, to odpowiedź na nie brzmi „nie”. Po co mam czytać artykuł lub oglądać film z odpowiedzią na pytanie, które znam? 😄
- Treść to wszelkiego rodzaju przewidywania, predykcje i kontrowersyjne stwierdzenia. Wiele takich treści rzetelnością niewiele odstaje od programów wróżbami i horoskopów. Zdecydowanie bardziej wolę się skupić na tym, co już jest znane tzn. na OBECNIE wykorzystywanych technologiach, a nie na tym, co BYĆ MOŻE będzie trendy za x czasu.
- Treść wygląda jak clickbait. To często występuje to w parze dwoma punktami powyżej.
- Gdy zaczynam czytać artykuł lub oglądać film i od samego początku widzę, że że brakuje konkretów, to przestaję to robić. Być może dalej będzie fajnie, ale jeśli od początku nie jest, to szkoda czasu by się o tym przekonywać. Podobnie robię, gdy treść jest kiepska pod kątem komfortu odbioru. Mam tu na myśli teksty będące ścianami tekstu, bez podziału na sekcje, akapity, z błędami językowymi itp. W przypadku materiałów audio/video, gdy od samego początku widzę, że jest dużo wypełniaczy tzn. „yyyy”, „eeee” lub jakość dźwięku sprawia, że się męczę przy słuchaniu, to również przestaję oglądać taki materiał.
- Jeśli serwis umożliwia dodawanie komentarzy, to sprawdzam kilka najnowszych lub najlepiej ocenionych. Czasami pod niektórymi materiałami można znaleźć komentarze z podsumowaniem. Na przykład, gdy autor w 10-minutowym filmie wymienia 5 ciekawych książek, to istnieje spora szansa, że ktoś je spisał w komentarzu i nie musisz oglądać całego filmu. Zresztą to nie tylko mój pomysł, Paweł Tkaczyk na LinkedIn opisał podobne podejście:
- Minimalizowanie liczby rzeczy, które dodaję na listę do przeczytania/do obejrzenia. Z góry odrzucam dodawanie niektórych typów treści:
[…] włączam prezentację z tegorocznego SXSW zatytułowaną „10 breakthrough technologies of 2024”. Trwa 55 minut, szykuję się. Pierwszy komentarz ostrzega, że Pani w ciągu pierwszych 18 minut reklamuje swój magazyn. Drugi komentarz wylicza wszystkie 10 technologii. Znam wszystkie. Przeczytanie komentarzy: 1 minuta. Wyłączam film. Oszczędziłem 54 minuty 😉
- Analogicznie, jeśli serwis umożliwia wystawianie treściom ocen to również nie oglądam tych nisko ocenianych. Return YouTube Dislike to dla mnie wręcz obowiązkowy add-on do przeglądarki. W przypadku książek przed przeczytaniem sprawdzam opinie na Lubimyczytać i Goodreads.
- W przypadku treści video na YouTube coraz częściej można pod nagraniem znaleźć spis treści z timestampami, dzięki czemu można przejść do najciekawszych zagadnień i obejrzeć tylko te fragmenty, które nas interesują. Podobnie można wykorzystać funkcję najczęściej odtwarzanych fragmentów.
- Okresowo czyszczę listę „na później” z artykułów dodanych jakiś czas temu. Usuwam wtedy wszystkie artykuły, które już nie uważam za ciekawe. Wersja nieco bardziej radykalna — co jakiś czas można wszystkie usuwać treści zapisane „na później” starsze niż X (na przykład 2 tygodnie).
- Codziennie staram się, by nieco zmniejszyć listę. Mimo że nadal zdarza mi się binge-ować zapisane treści niczym seriale na Netflixie, to robię to coraz rzadziej. Zdecydowanie lepiej sprawdza mi się przeczytanie jednego czy dwóch artykułów dziennie lub obejrzenie jednej prezentacji niż spędzenie pół dnia w weekend na nadrabianiu zaległości.
Spory potencjał w rozwiązaniu problemu nadmiaru treści widzę w Generative AI. Przykładowo AI mogłoby sugerować artykuły do przeczytania lub usunięcia. Mogłoby też przygotowywać streszczenia, na podstawie których można decydować czy czytamy dalej. Przykład automatyzacji pokazanej przez Jakuba Mrugalskiego pokazuje, że jest to możliwe.
Rób notatki!
Zakładając, że przyswajanie treści traktujemy jako naukę, powinniśmy tworzyć notatki. Wrzucenie do notatki samego linku do artykułu nie jest notatką. Moim zdaniem nauka bez robienia notatek to nie nauka, tylko konsumpcja, a czasami wręcz „odhaczanie” treści, które nie wnosi realnej wartości.
Z moich obserwacji wynika, że najlepsze wyniki w nauce danego zagadnienia miałem, gdy tworzyłem notatki samodzielnie, najlepiej opisując zagadnienie własnymi słowami. Przepisywanie słowo w słowo lub co gorsza, podejście „kopiuj-wklej” dawało mi znacznie gorsze rezultaty. Dodatkową korzyścią z tworzenia notatek jest to, że pomagają w utrzymaniu niższej liczby przyswajanych treści. Przyswoisz mniejszą objętość treści, ale prawdopodobnie więcej z niej zapamiętasz.
Nie skupiałbym się też, by wycisnąć z danego artykułu czy filmu 110%. Czasami wystarczy jedno lub dwa zdania, które zapadły Ci w pamięć.
Notatnik też nie musi być niczym specjalnym. Może to być zwykły systemowy notatnik. Jeśli potrzebujesz bardziej fancy narzędzia, to warto rozważyć np. Notion. Możesz też notować publicznie, np. tak jak ja w formie bloga czy w formie podcastu lub vloga. Jeśli nie wiesz jak zacząć blogować, to zajrzyj do mojego poradnika.
Uczenie się na zapas
To problem, którego doświadczyłem na samym początku swojej programistycznej kariery. Uczeniem się na zapas określam zjawisko uczenia się rzeczy, które BYĆ MOŻE kiedyś wykorzystam. Śmiesznym przykładem z mojego procesu nauki było przeczytanie CAŁEJ dokumentacji dla Laravela, gdy pisałem w nim pierwszą aplikację. Mimo że obecnie wiem, że było to idiotyczne, wtedy czułem, że przecież „uczę się, umiem więcej!”. Zupełnie umknął mi fakt, że po to jest dokumentacja, by nie uczyć się tego na pamięć i że dokumentacja w kolejnej wersji się zmieni i zaraz będzie nieaktualna.
Obecnie przed początkującymi programistami i programistkami jest taka nawałnica pojęć i technologii, że chęć jak najszybszego przyswojenia jak największej ich liczby jest zrozumiała. Jednak, zamiast powierzchownie pochłaniać kolejne technologie, uważam, że lepszym pomysłem jest poznać ich mniej, ale dogłębniej. Przykładowo, widząc w wymaganiach swojego wymarzonego miejsca pracy znajomość MySQL, PostgreSQL i MS SQL nie warto rzucać się od razu na wszystkie technologie.
Zacznij od poznania podstaw relacyjnych baz danych, potem wybierz jedną z nich i stwórz pierwszą bazę, pierwsze tabele, dodaj do nich dane, zmodyfikuj je, niektóre usuń, pobaw się klauzulą SELECT
i jej możliwościami. Kolejnym krokiem może być wykorzystanie poznanej bazy w którymś z projektów. W trakcie implementacji pojawią się pewnie komplikacje, z którymi będziesz musiał(a) się uporać. To właśnie przez takie problemy i praktyczną implementację nauczysz się najwięcej.
Podsumowanie
Moim wnioskiem z tego artykułu jest, że jeśli dużo się uczysz, a niewiele umiesz, to przestań przechodzić kolejne kursy zbierać linki i artykuły. Zacznij zbierać wiedzę i doświadczenie, najlepiej przez praktyczną realizację projektów i pomysłów. Trafiłem kiedyś na cytat, że „ciągła nauka to nowa prokrastynacja” i przyznaję, że jest w nim sporo sensu. Jeśli czujesz, że dużo się uczysz, a nadal mało umiesz, to być może właśnie w samej nauce tkwi problem?
Oczywiście nie należy też popadać w drugą skrajność i całkowicie skupiać się na „robieniu rzeczy” i przestać uczyć się nowych rzeczy. To prosta droga by „rynek nam odjechał”, ale to jest temat na zupełnie inny artykuł.
Daj znać w komentarzu, jakie nieoczywiste problemy z nauką Ty spotkałeś(aś) i jakie masz przemyślenia na ten temat.
Źródła i materiały dodatkowe
- #147 Zbuduj bazę rozwiązań
- Tutorial hell. Co to i jak sobie z tym poradzić?
- r/learnprogramming – How to get out of tutorial hell
- r/learnprogramming – What exactly is Tutorial Hell?
- Most “Learning” Is Procrastination… Here’s How To Finally Take Action
- Why Learning Is A New Procrastination
- University at Buffalo – Department of Computer Science and Engineering – How to Study: A Brief Guide
- Wątek z radami dla osób, które utknęły w tzw. tutorial hell – 4programmers.net
- Prawo nagłówków Betteridge’a
- X – automatyzacja powstawania newslettera #unknownews
- devszczepaniak – Jak zacząć programować
- devszczepaniak – Jak zacząć blogować
- devszczepaniak – Jak mądrze rozwijać swoje umiejętności programistyczne?
Bardzo dobry artykuł 🙂 Myślę, że „tutorial hell” mniej lub bardziej dotyka absolutnie każdą osobę, która rozpoczyna naukę nowych umiejętności. Fachowo nazywa się to „iluzją kompetencji”. Po zobaczeniu 1000 tutoriali wydaje nam się, że wszystko jest zrozumiałe, dopóki sami nie postanowimy coś robić całkowicie samodzielnie… Wynika to bezpośrednio z naszej psychiki. Mózg jest leniwy i łatwiej jest oglądać, jak ktoś coś robi niż wysilić się samemu 🙂
Z mojego doświadczenia mogę polecić 3 strategie, które dla mnie działają idealnie:
1) Uczę się tylko tego, co jest mi aktualnie potrzebne. Niby proste i oczywiste, ale też przerabiałem wszelkiego rodzaje chomikowanie artykułów/video/prezentacji na zaś w różnych aplikacjach i potem do tego nie zaglądałem 🙂 Obecnie w internecie jest absolutnie wszystko i nie starczy nam życia na przeczytanie wszystkiego nawet w wąskiej specjalizacji, której siedzimy. Po prostu trzeba się z tym pogodzić i nie wpadać we wszelkie FOMO, itp.
2) Również uważam, że tworzenie własnych notatek i bazy wiedzy jest absolutnie kluczowe do efektywnej nauki. Ze swojej strony polecam genialny, prosty i darmowy program Obsidian do tworzenia w banalny sposób własnej wiki. Lepiej jest stworzyć 1 porządną notatkę niż przeczytać 10 artykułów.
3) Na koniec zostawiam temat AI. Obecnie bardzo dużo czasu spędzam na rozmowach z ChatemGPT. Dzięki temu otrzymuje naprawdę fajne odpowiedzi, sporo się uczę i często mam wrażenie, że rozmawiam z doświadczonym tutorem, który w dodatku udziela mi totalnie spersonalizowanych odpowiedzi. Do wyszukiwania informacji zamiast Google używam Perplexity, które znacznie skraca czas wszelkiego researchu i chroni mnie przed wchodzeniem w kolejne ciekawe, ale niepotrzebne do końca artykuły.
PS ładnie wyedytowałem komentarz, żeby wygodniej było przeczytać, BTW też zwracam na to uwagę 😉
Wow! Mega dzięki za tak rozbudowany komentarz i uzupełnienie tematu! 🙂
Ze strategii 1 i 2 też korzystam i polecam 💪 Do Perplexity muszę jeszcze przysiąść.
Legenda głosi, że kiedyś zajrzę do tych kilkuset różnych zakładek które zapisuję od miesięcy…
Dobry artykuł
Łączę się w bólu 😀
Dzięki za feedback!
Chciałem dodać ten artykuł do zakładek, ale po przeczytaniu pierwszego akapitu stwierdziłem, że lepiej dokończyć go teraz niż za ok. 4 lata 🙂 Też używam Pocket i 1113 artykułów czeka aktualnie na przeczytanie.
Mi się kiedyś udało na Pockecie dobić do limitu i przy próbie dodania kolejnych dostawałem errora. Skończyło się na tym, że kolejne linki dodawałem do zakładek. 😆
Wpis dodałem na listę zadań 24 kwietnia…i właśnie przeczytałem 😉 ale nie zawsze tak było.
Wciąż pracuję nad „ucinaniem szkoleń” z szerokiej listy „chciałbym”, do „zrobię”. Parafrazując klasyka, trzeba odróżnić to, co chcemy zrobić, od tego co damy radę zrealizować. I przeznaczyć energię na to, co damy radę 😉
Do materiałów dodatkowych polecam „Cztery tysiące tygodni” Bukermana.
Dzięki za polecajkę, chętnie sprawdzę! 🙂