Самое сложное — это поддерживать актуальность своих знаний. Порой сложно даже просто оставаться на месте, не говоря уже о движении вперед.
IT в целом развивается бешеными темпами, а с программированием все еще хуже. Появляется новый язык — для него пишутся десятки библиотек, удачная реализация чего бы то ни было порождает множество клонов различного качества, а наличие готового решения не спасает от острого желания написать собственный велосипед... Вдобавок все это продолжает развиваться, обрастая новыми версиями, не всегда совместимыми, а потому продолжающими существовать бок о бок. Попытки впитать такое количество информации будут напоминать борьбу с Лернейской гидрой.
К счастью для отдельных программистов, но не для индустрии в целом, мы продолжаем ходить кругами: разные библиотеки решают схожие задачи, разные фреймворки используют схожие принципы, а многие «свежие» идеи на поверку оказываются хорошо забытыми старыми. Т.е. сфера быстрее растет вширь, нежели вглубь. Например, популярный сегодня архитектурный паттерн MVC был описан в 70-ых, начал обретать популярность только в 90-ых, а Microsoft встроили его поддержку в свой фреймворк только 2009-ом. В такой ситуации необходимо прокачивать базовые навыки: алгоритмы, паттерны, принципы проектирования, а дальше наращивать знания в соответствии с текущими потребностями. Необходимо развивать критическое мышление и не бросаться с головой во все новое и трендовое.
В поисках актуальной информации нужно научиться отделять зерна от плевел. Благодаря стремлению сообщества повысить продуктивность разработки общий порог вхождения в сферу снизился, но это привело и к ухудшению инженерной культуры. Очень много неопытных программистов, ведущих блоги или каналы на youtube, рассказывают о «крутых фичах», которые на самом деле лежат на поверхности, например, прямо в документации (RTFM). Ищите опытных, копайте сами. И да, книги по-прежнему работают. Написание книги — нелегкий труд, что автоматически отсекает большинство потенциальных авторов-невежд. Действительно, сейчас возможно просмотреть короткие курсы и тут же накрапать на коленке пресловутый «Hello World!!!» и почувствовать себя очень крутым. Не стоит обольщаться: большинство онлайн-курсов — это Introduction to..., Basics of..., 101... Они могут быть полезны, чтобы в общих чертах понять суть, но показывают только верхушку айсберга, а появляющееся чувство осведомленности ложно и связано с отсутствием понимания общей картины (Эффект Даннинга-Крюгера). Даже углубленные курсы — это только начало пути, ходят слухи, что настоящего просветления можно достичь только после 10,000 часов практики.
Можно обойтись и без всего этого. Да-да! Можно выучить азы веб-технологий и делать однотипные сайты-визитки без логики, используя старые добрые таблицы в верстке. Можно даже «прикручивать формочки к базам данных». Но таких работников программисты брезгливо зовут «кодерами» ;)