College is the first step for many professional software developers and while a Bachelor's degree in Computer Science will get you a good foundation it is heavily biased towards theory. You get a good understanding of how computers and programming languages work but it barely scratches the surface of professional software engineering.
Books, articles and research papers can be a good, inexpensive supplement. I've learned quite a bit from self study but this requires a good deal of self-discipline as well. Something that can take years of practice in its own right to develop.
Many of the best author's in the field are also involved in consulting and training workshops. Trade shows are another place to find training. The problem with both of these is cost. Most, if not all, of these workshops and tradeshows range from $400 up to $2000+ to attend. This is fine if you work for a company that has the resources and interest in improving the skills of its developers but the high price tag places these kinds of events out of reach for the average programmer (or maybe just out of my reach).
I've been fortunate to find some recorded training hosted online for free and these have been excellent but they are scarce.
By the way, before anyone says it, I know there is no substitute for experience, which can only be gained through hard work but I also know that training can give you skills you may never pick up through job experience.