Для начала я бы посоветовал понять, а интересен ли вам вообще процесс программирования. Это можно сделать выполнив несколько тестовых заданий из бесплатных обучающих курсов. Или вовсе в игровой форме (в очередной раз посоветую игру Haked для мобильных платформ). Сделав это вы поймёте, надо оно вам или нет. Потому как процесс это достаточно специфический. Справиться с ним сможет любой человек, имеющий более или менее технический склад ума, но программистом при этом может стать не каждый, так как есть люди, который сам процесс программирования просто не нравится. И выяснить это можно только на практике.
Дальше, если через этот шаг мы перепорхнули, нужно понять, программистом какого толка вы вообще хотите стать. Так как направлений примерно дохрена, а у каждого из них своя специфика, лучше начать с чего-то одного. Всё остальное в дальнейшем выучить будет даже легче.
Например, вы решили стать программистом микроконтроллеров. Значит стоит почитать книги об устройстве оных, о том, что происходит внутри, как с этим всем взаимодействовать и начать учить язык, который подходит для этой задачи. Начать лучше с Си++, в последствии подучить чистый си и ассемблер.
Если же вы решили создавать игры, нужно разобраться в основах работы игровых движков. В данном случае снова стоит учить Си++ или же Си шарп, как наиболее популярные языки в этой сфере.
Хотите стать веб разработчиком, тогда вам дорога в изучение JS, PHP, Ruby и т.д.
В общем выбираете направление, от него выбираете язык, и уже на выбранном языке ищите курсы.
Книги по программированию читать не советую на начальных этапах. Они нужны уже для получения каких-то специфических знаний, когда есть база. На платные курсы идти тоже не стоит. Для начала нужно освоить базовые знания, а уже потом улучшать их с помощью преподавателей.