I started programming at the age of 13 and I know quite a few professional software engineers. I can say that pretty much all of them started programming on their own already in high school. When you start young then it helps to develop a special kind of algorithmic thinking. If your thinking processes have already fully developed and they don't involve any algorithmic thinking then it is harder for you to grasp programming ideas.
I know many good programmers who write beautiful code, but have no college education at all. When I ask them why they didn't go to college, they say that everything you are interested in - you can teach yourself and getting a degree means just doing things that you are not interested in (I suppose the main problems for them would be dry calculus, physics etc.) and grinding through everything you already know (programming, databases etc.)
OTOH, I know guys who have gone to college to get a CS informatics degree, but have approached me to "help" (read: write it for them) them with their programming course exercises. And that's not because it's too difficult - they just can't be bothered. They don't care about coding. They just want the result, no matter how dirty, incorrect and inefficient the code is.
Only having a CS degree doesn't mean you are a good programmer. It means that you have most probably heard something about programming languages etc. But it certainly doesn't mean that you care about it enough to write clean, manageable and efficient code.