Comment If you must take college classes... (Score 1) 662
Take factual courses, not process courses. Avoid anything called "software engineering" or "development" anything or "testing" anything. Be doubtful of the usefulness of "proof" of correctness, unless you are working on mission-critical systems. Interesting classes are likely to be assembly language, programming paradigms, data structures and algorithms.
All those facts you would get in college also exist in books, and generally on Wikipedia, which is why the education isn't necessary.
Everyone has their own personal cult; no one is right for everyone all the time. Many of them are better than 90% of what is actually done in the field.
Read books, including all the ones listed here. Also, Implementation Patterns, by Kent Beck. Later, or really, the first time you don't know how to structure something, buy Design Patterns, by Erich Gamma et al. Put it on your shelf, then buy Head First Design Patterns and read it instead.
Don't be afraid of "Head First" or other intro books; often they will provide the framework to understand the lists of available tools later.
Learn what tools your group uses, and then learn other tools as they become useful. Profilers, unit test frameworks, IDEs and debuggers will all cut down on the knowledge you need to remember at any given time in order to be effective.
Most of all, try things out. Don't be afraid to make mistakes, just make them big so they are found. If you don't understand something, try to use it. If you don't know how to proceed try the doing that really stupid thing that couldn't possibly work; either it will or you'll learn enough about the problem to find a different way. Don't get bogged down in either the high-level stuff, or the low level stuff. Eventually you'll realize they aren't that far apart, but in the meantime swap often.