I'd suggest a slightly different approach, being one of those who came to field non-professionally -- learn the same fundamentals a school would require of a CS student:
in reply to Recommendations for a self-taught Perl programmer
The list could go on, but you begin to see that you're "re-loading" your problem-solving toolkit with some different basic items. These will help you approach programming problems differently.
- Finite Mathematics
- Operating system design -- not the MS "Windows XXX" kind, but the real nuts and bolts stuff