Considering that a focused dropout would spend his formative years focusing on learning what’s needed rather than wasting time on a CS degree where he’d learn things that he’ll never use; Don’t you think dropouts would make better programmers than a CS grad?
never dropout, you’ll have plenty of time to pause and realign, drop or delay too much should not be an option in this times
Having hired developers both with a degree and without a degree, I'd say largely those without a degree are better programmers, but I believe it's because they're more open to out-of-the-book thinking. I have hired some very good degreed programmers, too, but as one new grad told me six months into the job: "I've learned more in the last six months than in four years of college."
I may be biased, though. I am self-taught and don't have a degree. I couldn't see paying $40,000 for a piece of paper that says I know what I already knew.
Looking back, though, I wish I had gotten my degree at some point along the way, though.
No, of course not. There are exceptions, but those are the exceptions, not the rule. Just like there are people who never studied architecture and nevertheless are able to design great houses.
No knowledge is useless* and, even then, every student can learn the same stuff that dropouts learn (because all the resources are freely available) while also counting with very knowledgeable and experienced guidance, many immediately available like-minded people with whom to discuss and very good facilities with which to practice (for more complex stuff).
For that matter, let's leave it to one of the best himself: Linus Torvalds: I do not believe everybody should learn to code.
The bottom line is that what makes a good programmer is on the person and how motivated they are, not on how they learned. That said, people who are motivated to learn a trade, generally study something related to that trade.
*I've seen many who weren't even dropouts (merely studied something else, even an engineering), who, although they could write code, didn't know about complexity or about several software engineering best practices; more than once I saw people having to be introduced to scrum.
You probably think about Mark Zuckerberg, Bill Gates and Steve Jobs. Non of those are exceptional good programmers, they had the support from others like Steve Wozniack and Paul Allen. Bill Joy is exceptional in algorithms too and didn't dropout.
So those dropout you think about, they had a great idea and some skilled people around.
I'm not saying they won't make good programmers, but the question kind of implies that we learn things we never use when obtaining a CS degree - Not true at all.
I can speak only for India, but I learnt a huge deal in college - the basics of programming. Sure, I paid attention in only 1% of my lectures, but there are some key programming principles which I would have to learn the hard way if I had dropped out.
I was on the hunt for a new job in December 2016 and I had a lot of free time, so the only thing I did back then was to build side projects. In a way, dropouts do have a lot free time and if they're motivated enough, they can become good programmers. However, you cannot generalize and say that dropouts make 'better' programmers than CS grads.
TLDR; Anyone can be a good programmer - with or without a degree.
Mark
Focussed, motivated people make better programmers. There are surely some dropouts with high motivation that will outperform most CS graduates. But there are also a lot of lazy ones.
Spending equal time and energy, I think the CS graduate would come out ahead. Of course, in some countries, he'd also have quit a bit more debt.
CS degrees are not useless at all, but they do have some parts that are more research-focussed and that might not be as immediately useful for you. But don't underestimate how many different things come up.
Math, for example, is often seen as useless, but I'm sure I'd be a better programmer had I done more (and I did a fair amount already).