L'apprendimento di un linguaggio di programmazione è una cosa molto, molto, troppo vasta per poter essere spiegata completamente in un libro o in un corso.
Che sono assolutamente importanti e utili e meno male che c'è chi li fà.
Giustamente vanno affrontati innanzitutto i concetti basilari e le cose più importanti e utili.
Poi però l'evoluzione di ogni programmatore è a sé stante e non è a senso unico.
Secondo me conviene che affronti ogni problema o necessità a mano a mano che ti si presentano.
Oggi, ad esempio, vuoi imparare a usare i Database e allora cerchi info e codici al riguardo.
E fai domande.
Poi ti serve la CLV, e allora studi al riguardo.
Un altro programmatore invece, dopo i basilari, cerca come gestire la grafica e poi come fare un server.
Non è che uno ha imparato di più o meglio dell'altro..... Semplicemente ognuno affronta gli argomenti secondo necessità.
Quando scopri/impari un nuovo comando che ti permette di semplificare/migliorare un tuo vecchio codice..... In quel preciso momento sei cresciuto.