I think you are going about it wrong. Find things to solve that you are excited to solve, rather than 'improving yourself'. I mean make games, puzzles, stupid shit - whatever seems fun to program. Do it enough, and you will start having to stretch your skills.