Jest już kilka naprawdę dobrych odpowiedzi, ale pomyślałem, że mogę dodać jeszcze kilka krótkich punktów:
gdy byłem początkujący, wydawało mi się, że wiem wszystko o programowaniu, ale gdy się dowiedziałem, zdałem sobie sprawę, jak trudna jest ta dziedzina
Nazywa się to efektem Dunninga-Krugera . Jest to niezwykle powszechne wśród początkujących programistów, aw rzeczywistości początkujących w wielu dziedzinach.
Większość kodów źródłowych na stronach internetowych, widzianych przez Google Chrome, wydaje się bardzo niechlujna i niezorganizowana
Czy osoby, które napisały te strony internetowe chciały, abyś je rozumiał? Prawdopodobnie nie. W ich interesie leży, aby kod był trudny do zrozumienia.
po prostu zastanawiam się, jak można się tak wiele nauczyć.
Przez specjalizującą się . Jestem ekspertem w niezwykle wąskiej dziedzinie: projektowaniu i implementacji analizatorów semantycznych kompilatora C #. Gdybym spędził piętnaście lat studiując OpenGL, XML, HTML lub cokolwiek innego, byłbym w tym ekspertem i mistyfikowany przez analizatory semantyczne. Ale tego nie zrobiłem i dlatego mam bardzo podstawową wiedzę na temat OpenGL, XML i HTML.
Krótko mówiąc, pytanie brzmi, czy programista staje się jaśniejszy w miarę postępów w swojej karierze.
Tak, ponieważ zaczynasz widzieć większe wzory. Weźmy na przykład OpenGL. Prawdopodobnie widziałeś kilka „bibliotek API” - dużych kawałków pokrewnego kodu, w których sposób, w jaki komunikujesz się z kodem, polega na wywołaniu szeregu nazwanych funkcji z określonymi argumentami. Podstawową wiedzę na temat OpenGL można uzyskać po prostu dzięki zrozumieniu, że jest to interfejs API.
Gdy zdobędziesz więcej doświadczenia i zobaczysz wiele różnych technik programowania, zdajesz sobie sprawę, że pozornie niepowiązane technologie - powiedzmy, OpenGL i LINQ w języku C # - mają cechy wspólne. Oba są interfejsami API, w których budujesz przepływy pracy, które przepływają wokół danych, i które możesz uruchamiać optymalizatory i inne transformacje w przepływie pracy w bogaty i interesujący sposób. Gdy masz już tę koncepcję w swoim zestawie narzędzi, nagle staje się o wiele łatwiej wykorzystać pełną moc dowolnego interfejsu API korzystającego z tego wzorca.
Czy skomplikowane tematy, jak wymienione powyżej (OpenGL, MySQL, zaawansowane witryny HTML) stają się łatwiejsze do czytania, pisania i rozumienia w miarę, jak się uczysz, czy stają się coraz bardziej skomplikowane w miarę upływu czasu?
Stają się zarówno łatwiejsze, jak i bardziej skomplikowane. Łatwiej, ponieważ, jak powiedziałem, zaczynasz rozpoznawać większe wzorce myślowe, które leżą u podstaw projektu systemu, co pozwala na bardziej efektywne korzystanie z systemu. Bardziej skomplikowane, ponieważ teraz możesz użyć systemu do rozwiązania bardziej skomplikowanych problemów , a następnie zaczniesz napotykać ograniczenia systemu.
Jak możesz walczyć z poczuciem, że jesteś mrówką w świecie programowania, a te rzeczy mają wkrótce cię zmiażdżyć?
Jesteś mrówką; wszyscy jesteśmy mrówkami. Ale to nie stopa cię przygniata; to świat, w którym możesz odkrywać, żyć, czerpać korzyści i ulepszać. Ty, mrówka, możesz odkryć tylko niewielką jego część. Wybierz część, którą lubisz, w której możesz dodać prawdziwą wartość i stać się ekspertem w tej dziedzinie.