I think laying down a good base of the basic understandings of a language is best done in a classroom setting. But you MUST continue to learn on your own afterwords, otherwise you'll be writing insecure code, and falling behind with the latest advancements.
Very similarly to digioz, I was a self-taught web developer, but after returning to school, it filled in the gaps that I was missing.
I'm currently trying to learn OOP. Despite understanding the language, it's difficult for me to wrap my head around the whole concept and format so I can actually write clean OOP code myself. I may head back to class to accomplish this.
