Jak efektywnie uczyć się programowania i rozwiązywania problemów
Mam do was pytanie, jakie są wasze najlepsze sprawdzone metody, aby skutecznie się uczyć programowanie i efektywnie rozwiązywać problemy?
Oczywiście mogą to być sposoby na naukę innych dziedzin, którę będzie można wykorzystać do nauki programowania.
Na podstawie tego pytania można zrobić wiki post, aby wyciągnąć najlepsze rzeczy z odpowiedzi.
Chętnie dorzucę i swoją cegiełkę 😊 Wątek jest bardzo ciekawy i cieszę się, że takie pytanie padło. Poniżej chciałabym przedstawić kilka swoich punktów, które są moim zdaniem bardzo ważne zarówno w procesie nauki programowania, jak i przy nauce czegokolwiek innego.
- Motywacja
Moim zdaniem motywacja jest kluczem do sukcesu w każdej dziedzinie. Po pierwsze zadałabym sama sobie pytanie, dlaczego chcę nauczyć się programowania, dlaczego chcę programować? Traktuję to jako dodatkowe hobby czy może wiążę z tym swoją przyszłość zawodową? Chcę programować, bo jest to teraz modne? Bo moje otoczenie jest ściśle z tym związane? A może kuszą mnie wysokie stawki jakie widzę w ogłoszeniach? Odpowiedzenie szczerze samemu sobie na kilka pytań tego typu, sprawi, że łatwiej będzie Ci określić swój cel, a także gdy będziesz mieć moment zwątpienia to przypomnisz sobie, że warto, że jest to dla Ciebie ważne.
- Cel
Tu nie będę odkrywcza😉 jasne określenie swojego celu pomoże w jego osiągnięciu. Samo "chcę programować" to moim zdaniem stanowczo za mało. "Za rok od dziś chcę zostać Java Junior Software Developerem" jest już dużo jaśniejsze. I tu ważna rzecz: Każdy cel, dziel na mniejsze i mniejsze cele. Nie od razu Rzym zbudowano - pamiętaj o tym. Robienie małych tasków, małych projektów, zrozumienie działania danych technologii - każde takie działanie przybliża Cię do Twojego głównego celu. Powołam się tu też na słowa dwóch znajomych programistów - Programowanie nie jest trudne, tylko jest czasochłonne.
- Notatki
Rób notatki. Nawet nie wiesz, ile razy uratują Ci życie. Robienie notatek jest też formą nauki i zapamiętywania, więc korzyści są przeogromne. Dodatkowo pamiętaj układać i porządkować swoje notatki. Chaos w notatkach, będzie się też przekładał na chaos w głowie. Ale pamiętaj, że to Ty sam masz się w tych notatkach odnajdywać i rozumieć swój system, a nie ktoś. Dla kogoś to może być bałagan, ale najważniejsze by dla Ciebie były przydatne i łatwo dostępne.
- Powtarzanie
Powtarzając dany materiał rozumiemy go z czasem coraz lepiej i coraz dokładniej. Mimo że czasem ten progres może zająć kilka dobrych dni, to nie można się zniechęcać, tylko należy dać sobie czas na zrozumienie.
- Przerwy
Rób sobie przerwy😉 Ludzie to nie roboty, i nasza energia oraz siła też mają swoje granice. Poćwicz, wyjdź na świeże powietrze, posłuchaj muzyki, utnij sobie nawet drzemkę, jeśli czujesz, że tego potrzebujesz - zrób cokolwiek by się zresetować, odpocząć i nabrać sił na więcej. Nie wiem dokładnie, gdzie, ale gdzieś kiedyś usłyszałam, bardzo trafne w tym kontekście porównanie - Odkładanie siebie samego na sam koniec, jest jak szukanie stacji benzynowej dopiero, kiedy mamy pusty bak. Uważam, że jest to metafora idealnie w punkt.
- Ludzie
Rozmawiaj z ludźmi, którzy mogą Ci pomóc i coś wytłumaczyć czy podpowiedzieć. Nie bój się nie wiedzieć. Pytaj, próbuj, rozmawiaj z kimś kto ma już pewne doświadczenie i nie zrażaj się, jeśli ktoś Cię niemiło potraktuje. Po prostu idź do kogoś innego, wbijaj na Dirask-a i po prostu czerp przyjemność z tego, że masz szansę nauczyć się czegoś od kogoś.
- Błędy
Przyzwyczaj się do nich🙂 Kod bez błedu nie istnieje. To jest codzienność programisty (jak mi nie wierzysz, to się zapytaj i się przekonasz). Zmień do nich swoje nastawienie - w szkole za każdy błąd byliśmy oceniani niższą oceną. Teraz przyjmij, że błąd to po prostu szansa na poznanie czegoś nowego.
- Metoda
Nie ma jednej metody, która będzie optymalna dla każdego. Dostosuj metodę do siebie, a nie siebie do metody. To, że coś działa na kogoś, nie znaczy, że będzie działać i będzie dobre dla Ciebie. Dlatego ucz się, czytaj, pogłębiaj swoją wiedzę, próbuj różne techniki i czerp z tego wszystkiego to co Tobie najbardziej pasuje.
Moje rady będą dotyczyć raczej osób, które już potrafią pisać jakieś proste programy, co nie oznacza, że nie możan ich zastosować również na początku :)
Warto skupić uwagę na:
- cel - konkretny projekt,
- metoda dziel i zwyciężaj dla rozwiązywanych pod problemów w naszym projekcie-nie zawsze trzeba patrzeć na całość projektu rozwiązując jedna z funkcjonalności,
- porada od kogoś,
- funkcje i inne zagadnienia potrzebne do rozwiązania problemu,
- bawić się kodząc.
Wersja szczegółowa powyższych punktów:
- Postawienie sobie celu, który nas motywuje. Na pewno nie raz w życiu mieliśmy coś takiego co chcieliśmy mieć, zrobić lub coś, co nas ciekawiło — trzeba taką rzecz przenieść na świat programowania. Jako dziecko chciałem mieć zawsze Tamagotchi ;) i dalej ono mi chodzi po głowie, w mojej wersji zwierzątka różnych właścicieli mogłyby się spotykać, hehe
- Rozbicie problemu na mniejsze. Skoro jesteśmy ludźmi to warto wziąć sobie kartkę papieru i od strony wizualnej/funkcjonalnej zaplanować jak taki program napisać. Czyli: karmienie, zabawa, sen, rysowanie pikseli (w konsoli kwadraciki z tablicy ASCII). Kilka typów jedzenia + woda. Numerek ile nasze zwierzątko ma energii, pozytywnego nastroju i jaką akcję jedzenie/sen/zabawa uruchomić dodając +1, +2, +3 punkty w zależności od typu akcji.
- Zapytanie kogoś z branży IT jak on widzi problem — może doradzi,
- Zebranie na liście rzeczy potrzebnych do napisania takiego programu, np. wczytywanie z konsoli znaków, proste pętle, tablica, wypisywanie na ekranie znaków, czyszczenie ekranu — efekt końcowy to kombinacja tych rzeczy :)
- Cieszyć się każdym postępem :)
Jak efektywnie uczyć się programowania i rozwiązywania problemów, moja lista:
- Programowania uczymy się na całe życie, więc może to zająć troszkę czasu :), polecam być cierpliwym i zapisywać sobie swój postęp.
- Umieć docenić swój wysiłek i postęp. Np co 3 dni zrobić sobie skok wstecz i zobaczyć czego nauczyliśmy się w 3 dni (może to być też tydzień).
- Planować co chcemy w danym dniu i godzinie osiągnąć.
- Robić przerwy co 60 min, wyjść na balkon, na zewnątrz, dosłownie 5 min, rozciągnąć się. np Technika Pomodoro lub coś podobnego. Osobiście lubię używac budzika w telefonie nastawionego na 55 min. Zastanowić nad obecnie rozwiązywanym problemem, czy przypadkiem nad czymś prostym nie spędzamy za dużo czasu, jeśli tak to czasem można zacząć robić drugi task, a do tego aktualnego, nad którym nam nie idzie, powrócić za dwie godzinki lub jutro. Gwarantuje, że ta metoda jest bardzo skuteczna.
- Dużo sportu np 20-30 min dziennie :), ale robić to codziennie, wiem wiem dużo :). Może to być rozciąganie, yoga, bieganie, piłka nożna, rower, brzuszki, pompki, 7 min workout z aplikacją, ćwiczenie z youtube-em. Lub np 3 razy dziennie po 10 min w pokoju jakiś zestaw fajnych ćwiczeń + spacer do parku po świeże powietrze na 30 min.
- Zapisywać czego dokładnie nie wiemy, czego nie umiemy zrobić, czego nie rozumiemy i dlaczego zadwać pytania w formie pisemnej samemu sobie. Część problemów da się tak rozwiązać lub znaleźć odpowiedz bardzo prosto w google.
- Robić bardzo dużo notatek.
- Przed pójściem spać zapisać sobie na karteczce kilka małych problemów, które chcemy rozwiązać, a nasza podświadomość pomoże nam w bardzo. Tutaj bardzo fajny post na ten temat, tylko jest w języku angielskim: How to Engage Your Subconscious Mind to Solve Your Toughest Problems
- Apropo snu to przed snem, warto przewietrzyć pokój. Wyjść na zewnątrz i zrobić kilka głębokich wdechów. Jeśli mamy problemy ze spaniem, czasem warto napić się melissy lub pokrzywy (podobo pomaga się zrelaksować i wspomaga lepszej jakości sen).
- Nie można przesadzać i się przepracowywać. Trzeba też umieć robić sobie przerwy i regenerować swoje siły.
- W moim przypadku działa dobrej jakości sen :), jak się dobrze wyśpię to praca idzie MEGA sprawnie, mam dużo pomysłów i super się czuje.