The things I want to learn are fundamental enough that they'll apply to any programming task. I have tried learning as I go, and I agree it's best for most skills, but I've found there are learning tasks that demand more dedication.
Then again, this may just be my procrastinating self at work. :)
Screw fundamentals (sounds like you already have a decent base, anyway) -- just build something that someone wants to use/buy (preferably find a co-founder who you can brainstorm ideas with-- find a co-founder when you already have an idea is sometimes more challenging).
But if you're like me, you're not looking for one more trick, rather you're looking for a way of synthesizing what you already know, and building a rich framework onto which you can add new learning over a career.
(From Norvig's review of SICP at Amazon.)
This is not an objection to your advice. I will consider doing what you guys say.
I barely remember anything from the book, other than the pointless factoid about MIT's first president dying while saying "bituminous coal."
A better approach would be to get the problem sets for the SICP class, and see how far you can get without actually reading the book. Then just read enough so that you can finish the problems. Maybe use javascript instead of scheme, so it isn't a complete practical waste.