where to learn best practices beyond algorithms?
swannodette: How can you learn to invent with spending some time reinventing? In my opinion reinventing the wheel is a often a wonderful task. It helps you understand a hard problem that you would otherwise have serious difficulties with. For example, continuations always baffled me. I ported an existing library from Common Lisp to Clojure.  Did I do anything truly new? No. Did I have a much deeper understand of Common Lisp, Clojure and continuations? Yes.And, sometimes (if you're really lucky) you might find that you have reinvented a better wheel.