Jaki jest najbardziej efektywny sposób nauki programowania?

Mam taki problem, że jak się czegoś uczę z książki to zapominam co było 4 rozdziały wcześniej i muszę wracać… dlatego mam wątpliwości czy to dobry sposób nauki?

Waszym zdaniem lepiej uczyć się “na sucho” z książki, tematami po kolei + jakieś swoje małe programiki czy lepiej rzucić się na głęboką wodę - czyli po poznaniu absolutnych podstaw zacząć analizować, modyfikować jakiś większy projekt z Gita? i uczyć się np. o dziedziczeniu w trakcie analizowania jakiegoś większego kodu? wspomagając się książką/internetem.

Moim zdaniem żaden z powyższych.

Samodzielne pisanie programów i analizowanie kodów żródłowych.W programowaniu najważniejsze są algorytmy,czyli jak to robi maszyna.Od prostych programów typu podaj dwie liczby po metody sortowania.Następne jest przeszukiwanie tablic.Algorytm jest określonym sposobem zapisu skończonej liczby kroków,które mają dać jakiś założony w zadaniu wynik.

Moim zdaniem czytanie na początek książek o programowaniu w jakimś konkretnym języku mija się z celem. Lepiej poczytaj kilka książek traktujących temat programowania ogólnie. Mam na myśli takie sprawy jak historię programowania, jak i od czego to się zaczęło, na czym programowanie polega, co to jest i jak działa elektroniczna maszyna licząca :), trendy w programowaniu, jakieś wzorce projektowe, co to są języki programowania i jak się dzielą itp. 

Jak już to ogarniesz, to prawdopodobnie zrozumiesz o co chodzi w moim pierwszym zdaniu. 

Potem zadaj sobie pytanie jaki język Cię interesuje i poczytaj książkę o tym konkretnym języku :slight_smile:

Nauka takiego języka polega w zasadzie na ogarnięciu składni charakterystycznej dla danego języka, ważniejszych funkcji wbudowanych, kilu specyficznych zasad itp. Reszta jest wszędzie podobna - zmienne, stałe, pętle, logika if…else, funkcje, klasy, przestrzenie nazw itp, itd.

 

Kolejny krok - znajdź sobie jakiś dobry projekt i go zrealizuj.

Jeśli  nie znajdziesz chętnego, który taki projekt u Ciebie zamówi i jeszcze za niego zapłaci, to wymyśl sobie coś sam. I nie - nie może to być kalkulator. Niech to będzie np… katalog biblioteczny ze wszystkimi bajerami - dodawanie, usuwanie, modyfikowanie książek, klientów, historią wypożyczeń itp :slight_smile:

Będziesz to dziergał pewnie kilka miesięcy, ale jak wydziergasz będziesz mógł przejść do kolejnego kroku.

Optymalizacji własnego kodu :slight_smile: Wtedy zainteresuj się takimi bajerami jak wzorce MVC, MVVM, jakieś IoC, DI itp itd.

Sama nie wiem… ogólnie wszystko rozumiem, piszę jakieś proste programy, analogiczne do tych z książki, ale raczej nie potrafiłabym sama stworzyć projektu. Ostatnio oglądałam tutoriala na youtube - tworzenie gry 2d i naprawdę bardzo dużo z tego wyniosłam, czyli: 1. mniej więcej orientuje się w jaki sposób tworzy się nieco większy projekt 2. Zobaczyłam wszystko tak jakby “razem” wykorzystane w praktyce.  

Dlatego pomyślałam aby ściągnąć sobie jakiś projekt z Gita i go zacząć analizować “z książka w ręce” - na zasadzie widzę np. metodę abstrakcyjną (w tym projekcie z Gita), więc czytam o niej w książce i sprawdzam jak działa (w tym projekcie), jaką pełni role i dlaczego została wykorzysta, następnie modyfikuje np. dodaje do niej jakąś funkcjonalność. Co o tym myślicie?

Chyba nikt nie zna odpowiedzi na takie pytanie :wink:

Polecam skorzystać z obu metod, zarówno czytać książki/tutoriale i bawić się przykładowymi kodami, jak i analizować i próbować modyfikować większe projekty.

Przy czytaniu książki/tutoriala sądzę, że lepiej czytać od początku a nie skakać po stronach (oczywiście możesz później wracać do wcześniej przeczytanych fragmentów, natomiast nie polecam przeskakiwania nieprzeczytanych stron/rozdziałów).
Warto też zwrócić uwagę do kogo kierowana jest książka, jeśli jest kierowana do bardziej zaawansowanych to autor ma prawo zakładać, że czytelnik zna pewne podstawy.
Dobrze też zajrzeć do więcej niż jednej książki/tutoriala - różni ludzie mogą różnie patrzeć na te same sprawy (oczywiście nie musisz czytać dokładnie o tym, o czym już przeczytałaś w innym miejscu) - czasem to co w jednej książce jest niedostatecznie wytłumaczone, w innej może być lepiej.

Co do modyfikacji istniejących projektów, to moim zdaniem nie warto się porywać od razu na zbyt duży. Na początek pobawić się projektami w rozmiarze kilkuset do kilku tysięcy linii kodu.
Z czasem warto też spróbować napisać taki projekt samemu od zera.

Oprócz nauki jakiegoś języka programowania, warto zapoznać się zagadnieniami z algorytmiki, struktur danych oraz wzrorców projektowych (możesz też poczytać o antywzorcach żeby wiedzieć czego unikać :wink: ).

Powyższe to tylko moje zdanie i nie twierdzę, że jest jedyne słuszne, być może są lepsze sposoby.
Najważniejsza jest determinacja - musisz chcieć się czegoś nauczyć i nie zrażać się niepowodzeniami :wink:

Możesz też poczytać artykuł kierowany do pocztąkujących http://gynvael.coldwind.pl/?id=238 - autor opisuje w nim wiele cennych porad.