in reply to (OT) Real World Skills Versus CS Skills
I disagree somewhat with the assertion that it's not possible to work from experience to theory. Certainly, it is easier and more common to gain the theoretical through formal schooling and the practical from work experience.
However, I think it's possible to go the other way. I think the main barrier is time: the materials are generally free over the internet, and there are numerous resources where one can discuss theoretical points of CS (including perlmonks).
The other point I'd add is that a lot of the knowledge in the field I currently work in revolves around knowing the business (securities brokerage industry in my case, but even less complex industries have important sets of knowledge a good programmer should understand). Knowing this kind of information classes as "real world knowledge" in this case.