The best advice I ever received from an old-school programmer was to just go work in the industry. Start wherever they put you and work your ass off. Learn every day and always humble yourself to where you feel there is much more to learn. Then, go learn it.
Another post mentioned a mentor, which is not a bad idea, but having many mentors is even better. Those mentors are co-workers, coders in the community, etc. Don’t just seek knowledge from one person, but many coders with different strengths and specialties. Absorb all of the information like a sponge and apply it to real-world projects.
The programming community is just that, a community that is willing to extend a hand in helping you understand the way of doing things. Why? Because we care about each others’ work, and we don’t want to deal with your shitty code when it comes back around to us to work on it.
I have degrees in audio engineering and business, which had nothing to do with me becoming a programmer. I’ve worked my way from a junior engineer to senior engineer, to a lead engineer and now my own company of engineers. I still don’t have a CS degree nor an engineering degree. Would I recommend getting one? Absolutely! Why? Because I put in 80 – 120 hours of work plus training for every 40 hours of work an engineer with an education put in.
Rey’s original response can be found here on Quora.