Aquí hay algunas respuestas realmente buenas, pero pensé que podría agregar un par de puntos más:
cuando era un principiante solía pensar que sabía todo sobre programación, pero a medida que aprendía más me di cuenta de lo difícil que es este campo
Esto se llama el efecto Dunning-Kruger . Es extremadamente común entre los programadores principiantes y, de hecho, los principiantes en muchos campos.
La mayoría de los códigos fuente en sitios web, vistos por Google Chrome parecen muy desordenados y desorganizados
¿Las personas que escribieron esos sitios web querían que pudieras entenderlos? Probablemente no. Les interesa tener un código que sea difícil de entender.
simplemente me hace preguntarme cómo se puede aprender tanto.
Por especialización . Soy un experto en un campo extraordinariamente estrecho: el diseño y la implementación de analizadores semánticos del compilador de C #. Si hubiera pasado quince años estudiando OpenGL o XML o HTML o lo que sea, sería un experto en eso y desconcertado por los analizadores semánticos. Pero no lo hice, y por lo tanto solo tengo una comprensión muy básica de OpenGL, XML y HTML.
La pregunta, en pocas palabras, es si estas cosas se vuelven más claras para un programador a medida que avanza en su carrera.
Sí, porque comienzas a ver los patrones más grandes. Tome OpenGL por ejemplo. Probablemente haya visto un montón de "bibliotecas API": grandes fragmentos de código relacionado en los que la forma en que interactúa con el código es llamando a un montón de funciones nombradas con argumentos particulares. Y puede obtener una comprensión básica de OpenGL simplemente entendiendo que es una API.
Cuando haya adquirido más experiencia y haya visto un montón de técnicas de programación diferentes, se dará cuenta de que las tecnologías aparentemente no relacionadas, como OpenGL y LINQ en C #, tienen puntos en común. Ambas son API en las que construye flujos de trabajo que canalizan datos, y que puede ejecutar optimizadores y otras transformaciones en el flujo de trabajo de manera rica e interesante. Una vez que tenga ese concepto en su caja de herramientas, de repente se vuelve mucho más fácil aprovechar toda la potencia de cualquier API que use ese patrón.
¿Los temas complicados como los enumerados anteriormente (OpenGL, MySQL, sitios html avanzados) se vuelven más fáciles de leer, escribir y comprender a medida que aprende más, o simplemente se vuelve más complicado a medida que avanza?
Se vuelven más fáciles y más complicados. Más fácil porque, como dije, comienzas a reconocer los patrones de pensamiento más amplios que subyacen al diseño del sistema, lo que te permite usar el sistema de manera más efectiva. Más complicado porque ahora puede usar el sistema para resolver problemas más complicados y luego comenzar a encontrarse con las limitaciones del sistema.
¿Cómo puedes combatir esta sensación de que eres una hormiga en el mundo de la programación y estas cosas están a punto de aplastarte?
Eres una hormiga; Todos somos hormigas. Pero las cosas no son el pie que te aplasta; es el mundo que puedes explorar, vivir, beneficiarte y mejorar. Tú, hormiga, solo puedes explorar una pequeña parte de ella. Elija una parte que le guste donde pueda agregar valor real y convertirse en un experto en ella.