Since this question seems to come up all the time, I have crafted a stock answer in the idiom of some books I really enjoyed in my youth:

Choose Your Own Adventure: Should I get a CS Degree?
Do you want to be a great developer? Yes! (Page 3) | Not Really. (Page 2)

(Page 2)
That’s totally cool, actually. If you were going to force me to wager on who becomes a success or changes the world more, I would put my money on an “okay” developer with a strong business sense, basic understanding of Minimalist/Gestalt design principles, or thorough understanding of a problem domain where technology has not been fully brought to bear over a purebred “great” developer any day. The great thing about choosing this route is that you can always decide later that you want to go deeper down the rabbit hole and learn more if and when you need to. My one nugget of sage advice if you choose this path is this; Be very, very cautious of not investing too much effort in solving “big” problems without first trying to do some research about who has tackled a similar problem before and in what way. You probably have some friends who went and got CS degrees; Buy them lunch (much cheaper than getting a CS degree), explain what you’re working through and ask them if it sounds similar to any data structures or patterns that they know of. An ounce of humility and patience here can literally save your product/career. You win! THE END!

(Page 3)
OK Then: Here is something you need to hear. Despite what all the “look at me, I’m a successful developer and I have no CS degree” reinforcement responses that inevitably pop up on these threads might lead you to believe, you cannot skip doing the work of understanding the fundamental and counter-intuitive principles and patterns that (most good) CS curricula impart and be a great developer. Doesn’t happen. Sorry.

However, despite what all the “You _need_ a CS degree – I got one and I know you could never be a good developer without one” responses (that also inevitably pop up on these threads) might lead you to believe, a CS degree is not the _only_ way to learn these things. It is _a_ way…and you might even say a pretty darn good and efficient way…but you can do it on your own if you are motivated enough.

That leaves us with the question below:
How do you want to do the work? On My Own! (Page 4) | At A University! (Page 5)

(Page 4)
Cool. I guess I’d recommend googling Data Structures and Algorithm Analysis as starting-off points…if you wanted to read (and understand even half of) Knuth’s books, you could most likely put any CS Bachelor to shame. Have at it. GO TO PAGE 6!

(Page 5)
Cool. The one obvious advantage of this path is that they give you a little totem at the end that says you did the work. That little totem may be worth more or less depending on who is looking at it and their general worldview – but no one can ever take it away or deny that you have it. The other obvious advantage is that it puts you in the general vicinity of other people who were willing to do the work. Maybe you meet some of them and end up doing some things together? I don’t know. The obvious disadvantage is that doing this costs money. Don’t do too many drugs, join a couple clubs (but not a frat/sorority) and savor the concept that for 4(-ish?) years, your entire environment is focused on your personal intellectual enrichment – this will never, ever happen to you again in your whole life. Don’t be too smug when you finish, though…you have about 5-7 more years of hard work ahead of you before you are worth a real damn to anyone but your mother (but at least they will pay you)…so don’t break your arm patting yourself on the back. If you’re lucky enough to graduate during one of the bubbles, you can get hired quickly at a good rate..but save your money, because bubbles don’t last forever. If you graduate during an “offshoring trough” take a job in a niche industry or do tech support for a while, but don’t panic – the next bubble will be coming in 2-3 years…the system just has to flush out all the “Look at me! I’m a growth-hacker/new-media-guru” dead weight they hired during the last bubble. Learn at least one new “technical” thing on your own every year (just make sure it’s a real thing you can use to solve problems and not some doucheword like “agile”) but spend more time with your friends (in real places, not some MMOG). Always be the person who buys the first round of shots/beers when you meet new people – you will either get one back in return and a new friend, or you will learn quickly who is not worth keeping around…either way, you win. THE END!

(Page 6)
If I am going to hire you, you better believe I will ask you what you did instead of getting that degree to learn the stuff you need to learn so that you aren’t spending my team’s time and money trying to solve problems that were solved 30 years ago in a much better way than you ever could...(No, child, you are not more clever than Dijkstra)…and if you think that me daring to ask you that is sufficient cause for you to terminate the interview process, then you have done my work for me. On the other hand, don’t let me give you a haircut, either – and I will try to; I put “CS Degree Required” on my job postings because I don’t want every bubble-jumper who spent an hour watching a Coursera video wasting my time. I want you to give me your resume, but I also want you to stop and think for a second about whether or not you’ve really done the “equivalent work” to mature as a developer. You are different from the school of fish who just aren’t “finishers” – but you are swimming in the same pond, so make sure I know the difference between you and them…and if I can’t tell, then I really do suck and you just saved yourself 6-7 months of working for a place where you don’t want to be anyhow and you win. THE END!