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