Ci sono già alcune risposte davvero valide qui, ma ho pensato di aggiungere un altro paio di punti brevi:
quando ero un principiante pensavo di sapere tutto sulla programmazione, ma quando ho imparato di più mi sono reso conto di quanto sia difficile questo campo
Questo è chiamato effetto Dunning-Kruger . È estremamente comune tra i programmatori principianti e, in effetti, i principianti in molti campi.
La maggior parte dei codici sorgente sui siti Web, visti da Google Chrome, sembrano molto disordinati e disorganizzati
Le persone che hanno scritto quei siti web volevano che tu potessi capirli? Probabilmente no. È nel loro interesse avere un codice che è difficile da capire.
mi viene solo da chiedermi come si possa imparare così tanto.
Con specializzazione . Sono un esperto in un campo straordinariamente ristretto: la progettazione e l'implementazione di analizzatori semantici del compilatore C #. Se avessi trascorso quindici anni a studiare OpenGL o XML o HTML o altro, ne sarei un esperto e mi sarei confuso con analizzatori semantici. Ma non l'ho fatto e quindi ho solo una conoscenza di base di OpenGL, XML e HTML.
La domanda, in breve, è se queste cose diventano più chiare per un programmatore mentre avanza nella sua carriera.
Sì, perché inizi a vedere i modelli più grandi. Prendi ad esempio OpenGL. Probabilmente hai visto un sacco di "librerie API" - grandi pezzi di codice correlato in cui il modo in cui ti interfaccia con il codice è chiamando un gruppo di funzioni denominate con argomenti particolari. E puoi ottenere una comprensione di base di OpenGL semplicemente capendo che si tratta di un'API.
Quando hai acquisito più esperienza e visto un sacco di diverse tecniche di programmazione, ti rendi conto che le tecnologie apparentemente non correlate - diciamo, OpenGL e LINQ in C # - hanno elementi comuni. Entrambe sono API in cui si creano flussi di lavoro che convogliano i dati e che è possibile eseguire ottimizzatori e altre trasformazioni sul flusso di lavoro in modi ricchi e interessanti. Una volta che hai quel concetto nella tua scatola di strumenti, improvvisamente diventa molto più facile sfruttare la piena potenza di qualsiasi API che utilizza quel modello.
Gli argomenti complicati come quelli sopra elencati (OpenGL, MySQL, siti HTML avanzati) diventano più facili da leggere, scrivere e comprendere man mano che impari di più o diventa più complicato man mano che procedi?
Diventano sia più facili che più complicati. Più facile perché, come ho detto, inizi a riconoscere i più grandi schemi di pensiero che sono alla base della progettazione del sistema, che ti consente di utilizzare il sistema in modo più efficace. Più complicato perché ora è possibile utilizzare il sistema per risolvere problemi più complicati e quindi iniziare a incorrere nei limiti del sistema.
Come puoi combattere questa sensazione di essere una formica nel mondo della programmazione e questa roba sta per schiacciarti?
Sei una formica; siamo tutte formiche. Ma la roba non è il piede che ti schiaccia; è il mondo in cui puoi esplorare, vivere, beneficiare e migliorare. Tu, formica, puoi solo esplorarne una parte minuscola. Scegli una parte che ti piace dove puoi aggiungere valore reale e diventare un esperto in essa.