lionart, немного далекий от жизни подход... ИМХО, конечно же.
На мой взгляд более реалистично: читаем книженцию а-ля "Java за 21 день", потом for(int i=0;i<N;i++) { ставим себе подъемную задачу i-той сложности - реализуем ее}, идем в контору узнать, как это все происходит в жизни, после идем на odesk за первыми боевыми задачами. Ну а дальше на вкус и цвет: кому-то больше понравится быть на ставке, а кому-то быть не привязанным ко времени и зарабатывать на конечных заказчиках, а кто-то напишет прогу для Андроида, которая разойдется миллионным тиражом и принесет большие деньги.