Когда-то я учил этот язык пять лет в учебных целях и теперь совершенно его не использую, но на примере другого языка пришел к пониманию, что сложность начинается не там, где всё запустилось и работает, а там, где начинается активное использование вашего приложения.
Проблемы следующие: много кода, тяжело вносить правки; большая нагрузка (на базу, на память, на прочие ресурсы) - нужно оптимизировать но не ломать; параллелизм (для вас особенно актуально) - нужна стабильная работа; удобство и продуманность (нужно чтобы пользователи быстро осваивали вашу программу и не плевались).
Новичок прикидывает "на глазок". У него мир делится на "явно сложное" и "явно простое". А профессионал берёт время на подумать и задаёт очень много вопросов. Он не делает поспешных выводов. Новичок пишет код и время от времени понимает, что написал плохо; профессионал четко понимает, где написал плохо, почему, и при каких условиях это нужно переделать, а при каких - не нужно трогать вообще. Новичок работает на программу, профессионал работает на бизнес (или "пользователей", которые использует программу).
Чтобы стать профессионалом - 1) попадите в опытную команду которая работает над бизнес-продуктом 2) сделайте что-то такое, у чего появятся пользователи, и регулярно выслушивайте их фидбеки, внедряйте их хотелки и тд.
Опыт - очень важная часть программирования, которую нельзя "проглотить", прочитав книгу. Вы должны понять, ЧТО вам советуют, чтобы знания принесли пользу, а для этого тоже нужен опыт... часто даже печальный опыт.