Penso che tu abbia imparato una lingua quando non la vedi. Non vedi i cicli for e gli accessi ai dati, ma il flusso di lavoro dell'algoritmo.
Non giochi trucchi con il passaggio di parametri e l'elaborazione di array, macro magiche. Non pensi al tuo codice come a un materiale di auto marketing da mostrare ai tuoi amici e insegnanti, ma a esprimere la tua comprensione di un problema e la tua volontà al computer nel modo più leggibile.
Hai delle abitudini che ti aiutano a evitare molti errori semplicemente seguendoli, come: usa {} blocchi di codice e () nelle espressioni anche se sei assolutamente sicuro che "sarà solo una riga" o "Non sono sciocco e lo so ordine di precedenza dell'operatore ".
Smetti di contare quante classi, schemi e API del framework conosci. Ecco a cosa servono intellisense, riferimenti e tutorial, e Google. Ma quando guardi un problema, sai immediatamente quali parti possono essere divise e con quali strumenti e algoritmi le risolverai.
Quello che fai funziona , è elegante e piccolo . Ti piace programmare e trovare facilmente i tuoi bug. Sì, anche i maestri creano bug perché sono umani - ma li trovano rapidamente perché la loro struttura di codice li porta nel posto giusto.
E finalmente realizzare: hai imparato a pensare, analizzare e risolvere i problemi; rispetto a loro, la lingua attuale è secondaria, solo l'attuale scatola di regole e strumenti.