Учитесь на ошибках - своих и чужих. Как правильно сказали рядом, практика - это главное. Проектируйте системы - свои, чужие - лучше реальные, но можно и вымышленные.
Очень полезно начать с рассуждений "как бы я спроектировал поиск Яндекса, почту Mail.Ru, френдленту ВКонтакте". Продумайте архитектуру - а потом расскажите свое видение разработчикам этих систем и спросите, как на самом деле сделано у них и почему (вот увидите, многие с удовольствием ответят).
Следующий шаг - разработать реальную систему, попробовать ее воплотить, запустить, масштабировать - наткнуться на кучу проблем и найти решения. В идеале надо, чтобы рядом была опытная голова, которая может помочь, обсудить, указать на будущие проблемы, подсказать пути решения (я вот по жизни часто в такой роли выступаю).
Ну а еще про "чужие ошибки" - многие проекты с удовольствием рассказывают в интернете и на конференциях. Читайте их статьи, смотрите доклады - в интернете доступны записи с многих технологических конференций:
https://techforum.mail.ru/video/
https://tech.yandex.ru/events/yac/
ritconf.ru/archive и
www.highload.ru - тут видеозаписей нет, но есть слайды почти всех презентаций
В общем, в сети как обычно большой и интересный объем информации, многое из которого представляет ценный опыт.