Изучайте разные парадигмы программирования (императивное, функциональное, логическое, автоматное программирование). Не нужно следовать только одной парадигме — каждая из них может оказаться полезной в зависимости от задачи.
Научитесь писать (и пишите!) тесты. Автоматическое тестирование:
- намного дешевле ручного;
- помогает выявлять баги ещё на этапе разработки;
- вселяет в вас уверенность в своём коде;
- поможет вам убедиться, что вы ничего не сломали очередным рефакторингом.
Не изучайте новые фреймворки и библиотеки; изучайте подходы, лежащие в их основе.
Изучайте структуры данных и связанные с ними алгоритмы: списки, графы (в частности, деревья), битовые карты, хеш-таблицы. Это расширит ваш кругозор и вы станете видеть более эффективные и простые способы решения ежедневных задач.
Учитесь думать о задачах в мире бизнеса, а не в мире разработки. Помните о том, что программистам платят за решение задач бизнеса, а не за количество написанных строчек кода. Думайте о бизнесе, прежде чем переписывать проект с нуля на очередном модном фреймворке. Думайте о бизнесе, когда нужно определиться со списком поддерживаемых браузеров — если клиенты бизнеса пользуются IE8, ваша работа поддержать его, а не выводить надпись «Ваш браузер устарел, обновитесь!!!».
Универсальный совет — изучайте фундаментальные, проверенные временем подходы и приёмы, а не меняющиеся каждые n месяцев инструменты.