"Doesn't have a CS degree" isn't the same thing as "self-taught." Though I don't have a CS degree and I suppose I learned the basics on my own, I was largely taught how to write software by my peers. I learned a lot by working with really talented developers, and finding places to rub shoulders with them - mailing lists, conferences, blogs, HN etc.
That said, I think the hardest thing to learn outside of academia is the big picture, the general landscape of computer science and software development. It's really useful to know what you don't know, but it's hard to get that without actively seeking out something resembling a CS curriculum.
That said, I think the hardest thing to learn outside of academia is the big picture, the general landscape of computer science and software development. It's really useful to know what you don't know, but it's hard to get that without actively seeking out something resembling a CS curriculum.