Naucz się uczenia

„Jak się uczyć programowania/języka/frameworka/pilotowania statku kosmicznego?” To pytanie dosyć często pojawia się chociażby na forach programistycznych. W moim odczuciu brak odpowiedzi na nie łączy się z pytaniami zadawanymi na forach: „Jak zrobić [tu wstaw jakiś temat] ?”, czy „Dlaczego nie działa?”. Ponieważ te drugie, zwłaszcza jeśli nie są dodatkiem do rozwiązania, które autor próbował sam stworzyć, świadczą o tym, że osoba je zadająca nie podjęła próby znalezienia rozwiązania czyli nauczenia się danego zagadnienia. Ale to nie jedyny powód, dla którego dodałem ten post, drugim było zobaczenie tego komiksu Dilberta :)

228535.strip

Być może tytuł sugeruje, że będę tutaj opisywał różne metody i techniki instalowania wiedzy w mózgu, ale tego nie będzie, postanowiłem, że poruszę kwestię nauki i zdobywania wiedzy z trochę innej strony.

Praca w firmie == widza?

Ile razy spotkałeś się ze stwierdzeniem, że dopiero w pracy, kiedy będziesz obcował z bardziej doświadczonymi współpracownikami nauczysz się co to prawdziwe programowanie? Jest w tym sporo prawdy, ale na pewno nie można zakładać, że „pracuję == automatycznie zwiększam wiedzę”. Tak na prawdę samo przychodzenie do pracy gówno Ci da jeśli sam nie wykorzystasz szansy i nie nauczysz się, że warto patrzyć na innych Ale wnioski z tego trzeba wyciągać samodzielnie.

To co zrobić? Może od razu pytać wszystkich o wszystko, w końcu kto pyta nie błądzi. Dostanę odpowiedzi lub nawet gotowe rozwiązania, popatrzę na to i na pewno potem będę umiał sam się tym zająć? Ok, a lubisz kiedy robiąc coś w domu podchodzi do Ciebie znajomy lub ktoś z rodziny i zadaje pytanie dla Ciebie banalne, a jednocześnie mało związane z tym czym aktualnie się zajmujesz? Domyślam się, że niekoniecznie, a przynajmniej nie za często.

To teraz przełóż to na świat biurowy. Ktoś pracuje nad ważnym modułem do nowej aplikacji. Właśnie rozwiązuje poważny problem wydajnościowy klepiąc kolejne linie w asemblerze. W tym momencie podchodzisz Ty i pytasz jak się robiło metodę szablonową w C++. Myślisz, że ta osoba z uśmiechem na ustach oderwie się od pracy i wytłumaczy Ci dokładnie to o co pytasz? Albo wręcz napisze dla Ciebie ten fragment, którego nie potrafisz zrobić? Jesteś w błędzie. Jest to jedno z pytań, po którym najczęściej jeśli w ogóle zareaguje to odeśle Cię do Google lub dokumentacji. I taka odpowiedź nie powinna powodować, że obrażony odejdziesz od tej osoby klnąc jak to ludzie nie chcą pomagać. Wręcz przeciwnie. Powinieneś być wdzięczny, że taki człowiek przypomniał Ci gdzie powinno zacząć się szukanie.

Zresztą podobnie sprawa ma się z zadaniami na uczelni. Pytanie kolegów o każdy banał na pewno nie polepszy opinii na Twój temat. Szybko zaczną robić to samo co wspomniany wcześniej współpracownik – odsyłać Cię do Google. Jeśli zaczynasz karierę programisty albo naukę nowego zagadnienia to wiedz, że Twój problem prawdopodobnie został rozwiązany już na wiele sposobów. Albo jest tak prosty, że pierwsze 3 wyniki w Google prawie na pewno dadzą odpowiedź zazwyczaj zawierającą jeszcze dodatkowe informacje albo odnośniki do podobnych zagadnień, które za chwile mogą się w Twojej pracy pojawić.

Informacja – bogactwo tego świata

Ale przecież miało być o tym jak się uczyć, a ja tutaj z jakimś zadawaniem pytań zaczynam? To prawda, ale właściwie to nie odbiegłem od tematu. Umiejętność szukania informacji jest podstawą każdego procesu poznawania. Nieważne czego będziesz chciał się nauczyć zawsze najpierw musisz znaleźć materiały, które tą wiedzę Ci dadzą. Dopiero potem zaczyna się sam proces przyswajania informacji. W dobie powszechnego dostępu do wszelkich zasobów umiejętność szukania jest bardzo istotna. Bez niej tak na prawdę ciężko poznać cokolwiek.

Drugim problemem po samodzielnym szukaniu informacji jest brak umiejętności analizowania tego co się znajdzie/dostanie/zobaczy. Kiedy w końcu trafisz na stronę biblioteki, którą chcesz albo musisz się nauczyć co robisz? Mam nadzieję, że szukasz miejsca gdzie pokazany jest przykład użycia. Tak naprawdę po zapoznaniu się z nim, co zwykle zajmuje dosłownie kilka chwil, powinieneś przynajmniej przemyśleć czy łatwo Ci będzie zacząć pracę z tą biblioteką i nauczyć się uruchamiać ją tak, żeby nie powodowała błędów. A jeśli błędy mogą się pojawić to zwykle są opisane w dziale z często zadawanymi pytaniami. Potem na pewno będziesz odnajdywał kolejne funkcje. Warto więc wiedzieć, że nie trzeba od razu pytać wszystkich naokoło jak się tego używa albo co to robi – skoro autor udostępnił coś takiego to być może też to opisał? Np. w dokumentacji?

Praktyka czyni mistrza

Co prawda każdy uczy się inaczej. Jednak chyba najczęściej działającym sposobem jest metoda prób i błędów, którą w przypadku programowania osobiście preferuję. Wygląda to mniej więcej tak, że biorę przykładowy kod, doprowadzam do działania bez żadnych modyfikacji, a potem próbuję zmieniać coraz więcej, ciągle starając się dążyć do tego co w danej bibliotece/technologii/języku chcę osiągnąć. Jednak nie jest to jedyny sposób. Ale nawet jeśli masz inny to i tak powinien on zawierać część praktyczną. Samo czytanie książek/kodu/tutoriali/postów na forach nic nie da jeśli nie spróbujesz tego co przeczytałeś zamienić na działający twór. Nawet jeśli ma on być na początku ułomny i średnio ładny – ważne żebyś sam go wykonał. Programiści teoretyczni może i znają mnóstwo definicji i zasad, ale bardzo często nie potrafią ich przenieść do „żywego” kodu, albo zintegrować z resztą aplikacji „bo nie było tego w podręczniku”.

Dlatego moim zdaniem jeśli masz zamiar się uczyć coraz to nowych rzeczy to powinieneś najpierw nauczyć się samodzielności w zdobywaniu informacji i próbowaniu osiągnięcia celu. Bo co z tego, że ktoś Ci podrzuci gotowy kod jeśli następnym razem znowu będziesz potrzebował takiej samej pomocy? Tylko to co sam spróbujesz, zepsujesz, a potem naprawisz da tak naprawdę efekt w postaci wiedzy, bo jak to mówią człowiek uczy się na własnych błędach.

Dodaj komentarz

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