It has always seemed quite useless to me to try to learn as much theory as you can before starting to actually do significant projects.
I agree with this, but I also advocate occasionally exploring random theory that's unrelated to your current projects, expanding your mental toolbox. Sometimes you don't know you have a problem until you've already heard of the solution.