Я делал так. Сказал себе "Хочу написать клиент-сервер, который передает изображение рабочего стола одного компьютера на другой" и побежал в гугл, а оттуда на киберфорум, стэковерфлоу и.т.п. И написал, попутно разбираюсь как реализовать ту функцию или ту. А что будет если я сделаю не как в примере, а вот так ну и тому подобное. Потом сказал "Хочу написать автоапдейтер резюме на hh.ru" ну и алгоритм описан выше :)
Мне просто было это интересно, и это мотивировало разбираться с языком для решения моей задачи. Тестовые задания я не осилил делать в силу лени и не интересности. Хотя подход в целом можно назвать корявым.)