|more useful options|
I agree that a theoretical background is no replacement for experience and vice-versa. All too often, hiring managers want people with CS degrees, but have little care about the type of experience these candidates have in the real world. Often enough, people with real-world experience and little or no theory background (like me) are pulled into development because of short-term needs (and/or short-sighted management).
The latter was my experience. I have managed to do pretty decent work despite my lack of theoretical knowledge, and I have put a couple of green CS grads to shame. They've also taught me a few things. I think the real problem comes when your team lacks either theoretical or experiential skills, or when the two skillsets are too proud to listen to and learn from each other.
Unfortunately for me, theory is a little harder to learn independently. I don't believe that's due to the nature of CS theory, but due to a lack of good, accessible, beginner and intermediate CS theoretical materials. I'm always open to learning about key design patterns, standard data structures, etc. -- but it's hard to find that stuff if you don't know exactly what to look for.
A collection of thoughts and links from the minds of geeks
The Code that can be seen is not the true Code
I haven't found a problem yet that can't be solved by a well-placed trebuchet