Il y a déjà de très bonnes réponses ici, mais j'ai pensé ajouter quelques points supplémentaires:
Quand j'étais débutant, je pensais tout savoir sur la programmation, mais en apprenant plus, j'ai réalisé à quel point ce domaine est difficile.
C'est ce qu'on appelle l'effet Dunning-Kruger . Il est extrêmement courant parmi les programmeurs débutants et, en fait, les débutants dans de nombreux domaines.
La plupart des codes sources sur les sites Web, vus par Google Chrome, semblent très désordonnés et non organisés.
Les auteurs de ces sites Web souhaitaient-ils que vous puissiez les comprendre? Probablement pas. Il est dans leur intérêt d'avoir un code difficile à comprendre.
je me demande simplement comment on peut apprendre autant.
En se spécialisant . Je suis un expert dans un domaine extrêmement restreint: la conception et la mise en oeuvre d'analyseurs sémantiques du compilateur C #. Si j'avais passé quinze ans à étudier OpenGL, XML, HTML, etc., je serais un expert en la matière et mystifié par les analyseurs sémantiques. Mais je ne l’ai pas fait et je n’ai donc qu’une connaissance très élémentaire d’OpenGL, XML et HTML.
En bref, la question est de savoir si ces choses deviennent plus claires pour un programmeur à mesure qu’il avance dans sa carrière.
Oui, parce que vous commencez à voir les grands modèles. Prenez OpenGL par exemple. Vous avez probablement déjà vu un tas de "bibliothèques API" - de gros morceaux de code lié où vous vous connectez avec le code en appelant un tas de fonctions nommées avec des arguments particuliers. Et vous pouvez obtenir une compréhension de base d'OpenGL simplement en comprenant que c'est une API.
Lorsque vous avez acquis plus d'expérience et que vous avez observé différentes techniques de programmation, vous vous rendez compte que des technologies apparemment sans rapport, comme OpenGL et LINQ en C #, ont des points communs. Les deux sont des API dans lesquelles vous créez des flux de travail qui canalisent des données et que vous pouvez exécuter des optimiseurs et d'autres transformations sur le flux de travail de manières riches et intéressantes. Une fois que vous avez ce concept dans votre boîte à outils, il devient soudainement beaucoup plus facile d'exploiter toute la puissance de toute API qui utilise ce modèle.
Les sujets compliqués comme ceux énumérés ci-dessus (OpenGL, MySQL, sites HTML avancés) deviennent-ils plus faciles à lire, à écrire et à comprendre à mesure que vous en apprenez plus, ou est-ce que cela devient simplement plus compliqué au fur et à mesure?
Ils deviennent à la fois plus faciles et plus compliqués. Plus facile parce que, comme je l'ai dit, vous commencez à reconnaître les schémas de pensée plus larges qui sous-tendent la conception du système, ce qui vous permet de l'utiliser plus efficacement. Plus compliqué parce que vous pouvez maintenant utiliser le système pour résoudre des problèmes plus compliqués , et vous commencez alors à rencontrer les limites du système.
Comment pouvez-vous combattre ce sentiment d'être une fourmi dans le monde de la programmation et que ce truc est le pied sur le point de vous écraser?
Vous êtes une fourmi; nous sommes tous des fourmis. Mais ce n’est pas le pied qui vous écrase; C’est le monde que vous explorez, vivez, profitez et améliorez. Vous, fourmis, ne pouvez explorer qu'une infime partie de celle-ci. Choisissez une partie que vous aimez où vous pouvez ajouter une valeur réelle et devenez un expert.