Какие навыки нужны разработчику?
Абстрактное, алгоритмическое мышление. Это то, что позволяет представить себе процесс работы будущей  программы в общих чертах (что она должна делать функционально), даже толком не зная ни одного языка программирования.
А фреймворк, язык, паттерны, пресловутый поиск и чтение документации - всё это должно быть инструментом реализации этого представления. Когда язык программирования, по совместительству, оказывается единственным пошаговым средством проектирования, вот тут начинается говнокод.
1. Оттачивать навык умения разбираться в новом, неизвестном. Навык быстро обучаться, уметь искать нужную для себя информацию, гуглить.
2. Научитесь учиться: мощные умственные инструменты, ...
3. Слишком расплывчато, у всех разные ситуации и разные задачи, люди ставят себе разные цели. Можете почитать истории успеха нагуглив их в интернете (очень много подобного), но это вам ничего не даст особо. Нужно самому ставить себе задачи и решать их.