I've done it three times, and regretted it two of them. Here's why.
Anybody with the right talents and motivation can become a competent coder. But it takes a lot more than that to become anything other than a code monkey.
Professional software development is really about making somebody's life easier, or more fun, or solving some problem they have by writing code for them. To do that effectively, somebody has to be able to understand and encompass the customers' concerns. If all you can do is crank out code, that person isn't going to be you.
When you get an American computer science degree, it's not a four year version of high-schoool auto shop for programmers. They require you to study lots of other subjects like science, literature, sociology, art, music, and so on. If you actually pay attention, that broad background is incredibly valuable in a software development career, because it will give you a basis for understanding the needs of people who are willing to pay you to write software for reasons you would never come up with yourself.
The other thing you can get from a bachelor's degree is four years of mentored training in how to learn about really difficult, weird subjects you might not even care about. If you cooperate with what the faculty is trying to teach you around that, you will wind up with the self-discipline, patience, and intellectual tools to achieve rapid comprehension of an astonishing range of topics.
Of course, I'm not saying everybody who comes out of college has achieved those things - in my experience, most have missed out on some or all of it. (I'm currently reading a lot of literature at 52 which I could have studied in college if I hadn't been so full of myself at the time.)
And I know for certain you don't need a CS degree to be a competent coder, because I'm a chemist/mathematician who's only ever taken two FORTRAN classes in the '70s. Nowadays, I do all kinds of interesting computer graphics and human interaction work in C, C++, and Objective C on Linux and Mac, and even present papers on it. And I've hired really great programmers who wrote great software with non-CS degrees, including a medievalist, a physicist, a mathematician, a clarinetist, a historian, and a cinematographer.
Why did I regret hiring those two guys? One was a college dropout who couldn't cope with steep learning curves, so when we ran out of trivial work for him, what he wrote was junk; he quit right before we were going to fire him. The other is a really brilliant coder who dropped out of high school for a programming job, but is a "my way or the highway" kind of guy who kept blowing off the customer's need to get the job done on time, so I fired him.
Of course, it's possible somebody with a degree could have those problems - but it would be a lot less likely. If you can't learn, or you won't do what the prof wants, you'll get lousy grades and you won't get a degree.
And it's possible somebody without a degree could have learned all the non-CS skills I cite above outside of college. But that would be way more effort than picking those up by going to college. So not only would they need to explain why they didn't go to college, I've honestly never met anybody with those skills who didn't go to college.