Well, I tend to do the work - pleasure - work cycle as much as possible, just to keep myself balanced. On top of that, since you mention you enjoy working in higher-level languages more than C, here is a recommendation that has worked well for me: When you get stumped by a function or the like, pull out your favorite scripting language, and write up a solution in it. After that, adapt it to C. This process gets more and more efficient as you do it.