Szybkie przedmowa
Ucz się poprzez działanie: wiedza a know-how
Istnieje ogromna różnica w wiedzy i know-how. Powszechnym błędem dla nowych uczniów jest myślenie, że ponieważ „rozumieją” program, gdy go czytają, tak naprawdę rozumieją powody, dla których program jest napisany tak, jak jest.
I jedynym sposobem na przejście do tej drugiej części jest ćwiczenie. Usiądź, otwórz edytor tekstu, wiersz poleceń i przejdź do tego.
Jest prawdopodobne (i oczekiwane), że na tym etapie Twoja zdolność do zrozumienia, w jaki sposób kilka złożonych komponentów oprogramowania oddziałuje ze sobą, jest ograniczona. I to jest naprawdę dobra rzecz, ponieważ zmusza cię do rozpoczęcia od podstaw. Nie podskakuj z pistoletu i poruszaj się we właściwym tempie: zacznij od małych ćwiczeń dla małych zadań.
Szczerze mówiąc, nigdy nie byłem przekonany, że dobrym pomysłem jest rozpoczęcie nauki programowania w Javie (uczyłem programowania na życie na uniwersytecie i nadal czasami uczę się prywatnie). Jest to samo w sobie zbyt skomplikowane, aby zacząć, a większość książek o Javie będzie dość zniechęcająca. Niemniej jednak z pewnością można to zrobić (przynajmniej w niektórych obszarach tej globalnej wiedzy, których oczekujemy od programistów), o ile tylko ograniczysz się do nauki krok po kroku.
Książki
Ponieważ jesteś nastawiony na Javę i jeśli potrzebujesz porządnej książki Java, polecam:
- Myślenie w Javie . Jest OK, choć teraz nieco przestarzałe.
- Samouczek Java . Nie jest to najlepszy towarzysz ucznia, ale świetny wzorzec do trzymania pod ręką, ponieważ obejmuje wszystkie podstawy i zawiera przykłady. Nauka języka Java Trail prawdopodobnie powinien być na liście lektur, choć myślałem może to być trudne dla początkujących, ponieważ wprowadza koncepcje, które mogą być trudne do uchwycenia w pierwszej kolejności.
- Skuteczna Java . To nie jest świetna książka do nauki, ale także niesamowite odniesienie, które powinieneś mieć pod ręką na później. Nie czytać za jednym razem, ale w kawałkach wielkości kęsa.
Wspominam o tym, ponieważ nie wiem, czego używasz na zajęciach. Jest mnóstwo innych książek. Niektóre są dobre. Niektórzy kaleką studentów na lata.
Twój proces nauki
Podstawowy przepływ pracy
Odtąd radzę postępować zgodnie z 2-etapowym procesem dla wszystkich ćwiczeń i próbek kodu, które widziałeś na zajęciach:
- Czytaj i ucz się
- przeczytaj ćwiczenia
- upewnij się, że je zrozumiałeś
- kod
- Zamknij książkę
- usiądź przed komputerem z tym edytorem kodu i wierszem poleceń
- spróbuj samodzielnie napisać program
W przypadku awarii
Jeśli zawiedziesz i poczujesz, że musisz rzucić okiem na książkę, Twoja porażka prawdopodobnie będzie:
- (najprawdopodobniej), że tak naprawdę nie rozumiesz rozwiązania,
- (mniej prawdopodobne), że zapomniałeś, jak wygląda konkretny fragment rozwiązania: składnia, użycie interfejsu API, ...
Pierwszą przyczyną jest prawdopodobnie to, z czym najczęściej się spotykamy. Drugi jest anegdotyczny. Oba są przedmiotem powtarzającej się praktyki.
Za każdym razem, gdy nie uda Ci się wdrożyć jednego z tych wczesnych przykładów, spójrz ponownie na książkę, a następnie zamknij ją ponownie. Nie koduj, patrząc na książkę. Radziłbym nawet usunąć całe rozwiązanie i zacząć od nowa. Powtarzanie jest denerwującym, ale ważnym elementem procesu uczenia się.
Nie bierz tego lekko. Za każdym razem, gdy czujesz potrzebę powiedzenia sobie „tak, ok, wiem to” lub „Jestem tam w 90%, jest prawie tak dobry, jak gotowy” i chcesz przejść do innej sekcji, zwalczyć tę potrzebę i zacząć od nowa. Bardzo trudno jest uczciwie przyznać, że nie do końca zrozumiałeś pojęcie.
Uwaga dodatkowa: Uważam, że to wielka szkoda, że większość programów szkolnych próbuje teraz „rozpocząć” kursy programistyczne poprzez zbyt głupie rzeczy i zapewnienie zbyt zaawansowanych narzędzi dla uczniów: celem nie jest sprawienie, by twoje życie było nieszczęśliwe, ani abyś ty się uczył na pamięć rzeczy, które później w twojej karierze zostaną zautomatyzowane za pomocą twoich narzędzi i których czasem nawet ledwo pamiętasz. Ma nauczyć cię wszystkich bitów, które się unoszą.
W przypadku sukcesu: Go Beyond!
Jeśli uda Ci się wdrożyć swoje ćwiczenie, niekoniecznie przejdź bezpośrednio do następnego. Spróbuj zobaczyć, co możesz zrobić, aby to poprawić. Czy możesz zmienić żądane wyjście? Dodać małą funkcję? Opcja? Spróbuj, ponieważ jesteś teraz w strefie zabawy, w której minęła główna trudność, a te narzucone przez siebie małe wymagania są bardziej prawdopodobne, aby trochę poprawić nastrój.
Nie idź jednak za daleko: nie zaczynasz od drukowania alfabetu i odwracania go, aż nagle pojawia się na przekątnej na ekranie z gradientem kolorów. Rób małe kroki. Uczenie się jest długim i powtarzalnym procesem i musisz podchodzić do problemów z rosnącymi poziomami trudności (na przykład zobacz, jak zwykle myślę o wyjaśnianiu rekurencji ).
To tylko nauka - porównanie
Twój problem w ogóle nie jest związany z programowaniem. To ten sam problem, z którym spotykają się tysiące ludzi, próbując nauczyć się matematyki.
Jeśli dasz im problem, nie widzą, jak znaleźć drogę do rozwiązania. Jeśli jednak zapiszesz dla nich rozwiązanie, większość je zrozumie i pomyśli: „cholera, to było takie proste!”. Jednak podasz im podobny problem z różnymi miarami i hipotezami, a oni nie zdołają go rozwiązać: nie rozumieli logiki stojącej za tym i muszą poćwiczyć, aby móc to zrobić sami.
Zauważ, że jest to powszechny problem z matematyką, ale moim zdaniem można go zobaczyć w tonach innych dziedzin, w których wymagana jest pewna logika: nauka solfege, gramatyki języka, fizyki itp. I nie zależy to od „naturalnej” umiejętności zrozumieć te rzeczy: po prostu sprowadza się do praktyki (czy to w tym obszarze, czy w innych, które prowadzą jednostkę do łatwiejszego zrozumienia pojęć w tej dziedzinie).
Nie ma powodu, dla którego nie możesz nauczyć się pisać kodu. Po prostu próbuję dalej, aż dojdziesz do tego „ah AH!” / Moment Eureka. Następnie przejdź do następnego, trudniejszego problemu.
Mogą one również pomóc (później):