0) Программировать.
1) Программирование = практика. Нужно писать код, решать задачи. Желательно, какие-то реальные.
2) Не столько читать, сколько программировать.
3) Определиться с языком, вернее, с отраслью. На C# не пишут сайты, на PHP не делают десктопные приложения, на objective-c не пишут демонов. На Pascal вообще не надо ничего писать.
4) Программировать.
5) Возраст сложный. Внимание концентрируется плохо. Порог вхождения в первый язык может быть и небольшим (что вряд ли), но проблема в диссонансе между ожиданиями и реальностью. Начать хорошо программить или программить вообще сразу не получится. Придётся себя заставлять. Придётся ощущать себя дураком, который ничего не может понять. Это больно, не все могут сразу въехать. Это — нормально. Терпение и труд. Не всё сразу. Главное — не бросать и что-то обязательно получится. Или наоборот, вы поймёте, что ну совсем не ваше. Это тоже нормально.
6) Желателен наставник. Желателен постановщик задач для решения. Для учащихся неплохой вариант с курсами. Там хоть какая-то программа есть, которую надо выполнять. Так проще учиться, когда тебя пинают, чем когда ты половину энергии тратишь не на учёбу, а на самопинание.
6) У Вас сейчас задача не стать хорошим программистом, а стать программистом вообще. Это труд. Трудиться тяжело.
7) Программировать.
8) Лучше сразу уходить на linux и начинать изучать всю современную it-экосистему. Это тоже важно и нужно. На практике. Больше практики.
9) По возможности, максимально скоро идти работать программистом — получать опыт.
10 ) Программировать.
И лично от себя. Не надо PHP для сайтов, если будет такая возможность, возьмите сразу Python.
UPD: Не могу не прокомментировать зложелателей. Какие же вы моральные уроды. Конченные мрази. Не надо обращать внимание на это мудачьё.