Куда двигаться профессионально?
Чтобы расти, нужно разувериться в уже усвоенном, разрушить его, отвергнуть все эти концепции и выстроить их заново. Критически подойти к тому, что было взято из авторитетных книг и статей, даже к тому, что было добыто опытом из собственных проектов.
Полезно поднять старых авторов, потому, что все уже было в веках, например, "Заметки по структурному программированию" Дейкстра и "Алгоритмы + структуры данных = программы" Вирта. Послушать лекции таких людей, как Александр Степанова:
"Преобразования и их орбиты"
Часть 1 https://youtu.be/QmuMHtbO4ug и Часть 2 https://youtu.be/uCGifwlgAQg
"Наибольшая общая мера последние 2500 лет"
Часть 1 https://youtu.be/Dx1MZh6KYCk и Часть 2 https://youtu.be/zqETgaYxlt0
Полезно приступить к новой сложно задаче, принципиально другой. Вот Вы занимались веб-сервисами, а возьмите проект, в котором это не подходит, где нужна связь, основанная на UDP протоколе или RPC, и с поддержкой состояния (STATEful) соединения между клиентом и сервером через шину событий или различные конструкции паттернов комуникации, см. ZeroMQ zguide.zeromq.org/page:all Если занимались корпоративными системами, то возьмите промышленную автоматизацию, она разрушит Вашу уверенность в железобетонных подходах. Если занимались вебом, то возьмите распределенные вычисления или системное программирование.
Перейти к новым парадигмам, например к функциональному программированию, реактивному, манадам и т.д. Если привыкли делать все по накатанной, то можно перейти от программирования к метапрограммированию и придется все переосмыслить. Тут мои статейки по этому поводу: habrahabr.ru/post/137446 и habrahabr.ru/post/227753
Можно даже не уходить от текущих проектов, а углубиться в оптимизацию и эксперименты. Найти узкие места, запрофилировать код, поместить его под нагрузку, сделать снятие всех характеристик системы во время работы и исследовать свою программу, как "неизвестный объект".
почитайте программу вузов по вашей специальности и изучайте