Я начинал свой путь с написания своих программ, котрыми пользовался долгое время, и которые мне было интересно разрабатывать и работать. Далее нужно подковатся в правилах оформления исходных кодов, для вашего языка программирования. И конечно, много-много практики, и изучения чужих проектов. Конечно нужен опыт для создания совего хорошего open source проекта. Лучше коенчно присоединится к интересному и не сложному проекту, и помогать в разработке. Тут ведь какое дело, без практики и Свойих ошибок опыта не будет, и нужно, "заболеть" этим делом, если душа к этому не лежит, то и смысла в обучении не будет, результатов не будет. Это ж творческая работа ведь! Книги можно здесь советовать лишь мануалы и описание целевого фреймворка и целевой платфомы. Желательно еще определится в направлении. Т.е. это может быть web, базы данных или что то еще. После можно определится и с яп и фреймворками. И удачи!