Czemu uważasz, że napisanie węża tetrisa itp to nie ten poziom?
Według mnie najlepszym sposobem na rozwój jest nauka na bieżąco. Mam tutaj na myśli, że najlepiej uczymy się rozwiązując realne problemy. Szukamy odpowiedzi na aktualny problem. Nie mam nic przeciwko nauki z książki, bo sam cały czas czytam książkę za książką, ale traktuje je bardziej jako inspirację do tworzenia własnych projektów oraz jako bazę pomysłów - do rozwiązywania problemów w lepszy sposób.
Z książkami jest ten problem, że możemy popaść w zgubną naukę czysto teoretyczną tzn, cały czas będziemy czuć, że wiemy za mało i musimy jeszcze przeczytać to czy tamto, żeby ruszyć z projektem. Według mnie nigdy nie jesteśmy w stanie przewidzieć jaka wiedza nam się przyda, a jaka nie w danym projekcie. Nigdy nie będziemy na takim poziomie oczytania, że stwierdzimy ok wiem wszystko mogę wziąć się za robotę.
Ja staram się uczyć w sposób praktyczny - robiąc projekty. To nie jest tak, że wiem wszystko, siadam i klepie sobie kod. Czytałem kiedyś o podejściu iteracyjnym do problemu. Najpierw tworzymy tak zwany MVP (minimal viable product) czyli coś banalnego, co możemy od razu testować - prototyp. Następnie sukcesywnie (chciałoby się powiedzieć slight-edgowo ;)) poprawiamy produkt. Takim to sposobem rozwijamy swoje umiejętności.
Oczywiście problemem jest wymyślić jakiś projekt - tutaj z pomocą przychodzi internet. Wcale nie musimy nic wymyślać możemy napisać po swojemu innych pomysły. Od prostych gier kółko krzyżyk po rozbudowane projekty z tysiącami linii kodu.
Odbiegając trochę od tematu dodam, że bardzo dobrym rozwiązaniem jest wrzucanie wszystkich tych swoich projektów na gita. Dzięki temu mamy wgląd w nasze postępy, wszystkie poprzednie wersje projektów, wszystko w jednym bezpiecznym miejscu. Ponadto takie repozytorium bardzo pomaga w znalezieniu pracy. Osobiście żałuję, że nikt mi o tym nie powiedział jak zaczynałem swoją przygodę z programowaniem. Wiele moich projektów przepadło w zapomnienie.
"Jak zjeść słonia? Najlepiej kawałek po kawałku." :-)