> For bad programmers, like bad cooks, the mere mechanics of programming are challenging. Whereas good programmers, like good cooks, can make whatever they choose, so for them the big challenge is deciding what to make.
I've always loved the analogy of coding to cooking... a lot more than painting, or architecture.
I've just realised that I cook like programmer (or program like a cook). I take a recipe, then cook it multiple times changing different variables (iterating) until I'm satisfied with the results (shipping). The best thing isn't the food, but that you shipped something in a few days ;)
I keep a cooking journal where I write down the effects of a particular iteration, but I don't do the same for programming. I think I might start doing similar for programming excercises.
I'll keep a log and have a series of "recipes" that I iterate on and record the results. It should be both fun and help increase my skill set.