Программирование нужно изучать с постановки задачи. Как и изучение любого другого дела. Сначала выбирается задача, которую интересно реализовать, а уже потом, под задачу выбирается язык, книги, методики и прочее.
И да, зарабатывать денег - это не задача. Задачу должно быть интересно решить.
Если интересно сделать сайт, то можно начать с PHP, JS. Если игру, то C++ или C#. Если браузерную онлайн игру, то, возможно, Java и JS. Интересно сисадминить Unix - bash, perl.
Если пытаться понять, как работает ВСЁ, то не хватит никакого времени. Постановка задачи мотивирует двигаться в каком-то одном направлении и не даёт потерять кучу времени зря.