> People with CS degrees have a "bump" in the jobs they can get.
I don't believe that premise for a second.
My pre- and post- degree experience is that nobody cares about the degree if you have more than a couple of years worth of experience.
In terms of my ability to get high paying jobs, getting my MSc made no difference. I got great jobs before I completed my degree, and the same after. In fact, the only way my degree comes up in interviews is as a semi-suspicious "why did you bother, with your track record, it's not as if it matters?" For me it was a personal choice, not a career choice, and the research project was interesting.
The reason I didn't complete my degree in the first place, was that it was so trivially easy to find high paying jobs based on my skills and experience (I started programming at five, and did my first paid development at 13) and nobody ever asked about the lack of a degree. I ended up leaving to do consulting and start a couple of companies.
At the same time I also know that none of the places I've worked - including a multi-billion dollar company that certainly had the budget to pay extra well for the degrees if they'd cared to - has placed any preference on people with a CS degree. The few great programmers we've found with good CS degrees have been offered no more because of their degrees than equivalent developers with other degrees or no degree at all. By your argument these people should've gone elsewhere because we'd be offering them well below their market value by offering the same as developers with no degrees, or with say, a Linguistics degree.
That idea just does not mesh with any of my experience.
> The ones who are really good get hired at better jobs than any that you can offer.
The ones that are really good without degrees also get hired really quickly - it doesn't stop me from seeing CV's from, and interviewing, a lot of people like that, many of which we immediately pass on because we know they will get offers much higher than what we're willing to pay.
Sure, I don't see many CV's for people who'd be able to claim $1m+ base, either, but people in that range are so few overall that even if every single one of them somehow have CS degrees it would not make much difference.
It also ignores the issue of the contents of the CS degrees. See below.
> Conversely good people without a CS degree have a hard time getting into those really good jobs, and are therefore available for your sample.
Junior developers or mediocre developers without degrees might face more of a challenge without a degree, but for experienced developers, my experience on both sides of the table is that years of experience matters far more when considering whether or not to give an offer, or when discussing remuneration - both when negotiating with technical managers and when negotiating with non-technical HR people.
> obviously positive attribute (CS degree)
Here you let your bias shine through. Why is it an obviously positive attribute in this setting?
Software engineering is not computer science.
A big part of the problem I see with CS graduates is that most of them don't have the faintest idea about engineering discipline. Many of them have not had any exposure to testing practices; many have not had any exposure to software design methodologies; many have hardly written any programs, and if they do they often only know one language and don't understand how to generalize the concepts (sure, they know the theoretical underpinnings, but often don't know how to translated that into writing code). Far more don't have much domain knowledge in any fields outside pure CS - it doesn't help if they can write code if they need a business analyst to babysit them all the time.
The issue is not that a CS degree makes people bad programmers, but it does very little to make them good programmers and even less to make them good, well rounded software engineers. Many places you can pass through a CS degree without having had more than a passing exposure to programming.
At my university, you could've easily get as much programming experience while completing a biology degree (or pretty much any other science related degree; for humanities/liberal arts you'd have to work a bit harder to get there) as in the CS degree, and that's not unusual.
Personally, I passed through my entire degree with the equivalent of less than 2-3 months worth of actual programming and I picked a few programming courses on purpose because they were interesting to me (e.g. a class on Smalltalk, and a course on compiler construction), but it would've been trivially easy for me to opt for a more math or theory heavy degree and avoid pretty much all practical programming exposure.
And my experience - both from hiring, and from talking to people in the business - is that a lot of people do, and very few go the other way and try to pick subjects that makes them better suited as software developers. Most people that go that way end up picking other degrees - such as going to schools that actually offers software engineering as a subject.
But I'm not hiring mathematicians or logicians or people who are meant to run research projects where undergrads do the programming - I'm hiring software developers.
While it is perfectly possible to combine the two, the important part to consider is that a CS degree teaches you computer science, not software engineering, and while there is varying degrees of overlap at different schools, if you spend your time doing a CS degree you spend a lot of your time 1) not programming or learning about software development skills, 2) not developing communications skills or more business oriented skills that are generally far more valuable most places that needs software developers than the additional skills CS does give.
Over the years I've had far more use for my (natural) language skills and communications skills than I have had for my CS degree. And I've had far more use for programming experience I've built up than either. I don't regret my CS degree, because I get a lot of pleasure out of using those skills on a hobby basis, but if I'd gone back and were to pick a degree specifically to be the best possible software engineer, there's just no way I'd have picked CS degree.
I've had situations where we genuinely had use for someone with a CS PhD, but for most development the CS skills are not that interesting and what you need are software engineering skill sets that most CS degrees simply don't teach. In the cases we've needed someone with in depth CS knowledge, we've in some cases found it easier to pair up someone with the CS knowledge with a good developer rather than trying to find the perfect combination.
I don't believe that premise for a second.
My pre- and post- degree experience is that nobody cares about the degree if you have more than a couple of years worth of experience.
In terms of my ability to get high paying jobs, getting my MSc made no difference. I got great jobs before I completed my degree, and the same after. In fact, the only way my degree comes up in interviews is as a semi-suspicious "why did you bother, with your track record, it's not as if it matters?" For me it was a personal choice, not a career choice, and the research project was interesting.
The reason I didn't complete my degree in the first place, was that it was so trivially easy to find high paying jobs based on my skills and experience (I started programming at five, and did my first paid development at 13) and nobody ever asked about the lack of a degree. I ended up leaving to do consulting and start a couple of companies.
At the same time I also know that none of the places I've worked - including a multi-billion dollar company that certainly had the budget to pay extra well for the degrees if they'd cared to - has placed any preference on people with a CS degree. The few great programmers we've found with good CS degrees have been offered no more because of their degrees than equivalent developers with other degrees or no degree at all. By your argument these people should've gone elsewhere because we'd be offering them well below their market value by offering the same as developers with no degrees, or with say, a Linguistics degree.
That idea just does not mesh with any of my experience.
> The ones who are really good get hired at better jobs than any that you can offer.
The ones that are really good without degrees also get hired really quickly - it doesn't stop me from seeing CV's from, and interviewing, a lot of people like that, many of which we immediately pass on because we know they will get offers much higher than what we're willing to pay.
Sure, I don't see many CV's for people who'd be able to claim $1m+ base, either, but people in that range are so few overall that even if every single one of them somehow have CS degrees it would not make much difference.
It also ignores the issue of the contents of the CS degrees. See below.
> Conversely good people without a CS degree have a hard time getting into those really good jobs, and are therefore available for your sample.
Junior developers or mediocre developers without degrees might face more of a challenge without a degree, but for experienced developers, my experience on both sides of the table is that years of experience matters far more when considering whether or not to give an offer, or when discussing remuneration - both when negotiating with technical managers and when negotiating with non-technical HR people.
> obviously positive attribute (CS degree)
Here you let your bias shine through. Why is it an obviously positive attribute in this setting?
Software engineering is not computer science.
A big part of the problem I see with CS graduates is that most of them don't have the faintest idea about engineering discipline. Many of them have not had any exposure to testing practices; many have not had any exposure to software design methodologies; many have hardly written any programs, and if they do they often only know one language and don't understand how to generalize the concepts (sure, they know the theoretical underpinnings, but often don't know how to translated that into writing code). Far more don't have much domain knowledge in any fields outside pure CS - it doesn't help if they can write code if they need a business analyst to babysit them all the time.
The issue is not that a CS degree makes people bad programmers, but it does very little to make them good programmers and even less to make them good, well rounded software engineers. Many places you can pass through a CS degree without having had more than a passing exposure to programming.
At my university, you could've easily get as much programming experience while completing a biology degree (or pretty much any other science related degree; for humanities/liberal arts you'd have to work a bit harder to get there) as in the CS degree, and that's not unusual.
Personally, I passed through my entire degree with the equivalent of less than 2-3 months worth of actual programming and I picked a few programming courses on purpose because they were interesting to me (e.g. a class on Smalltalk, and a course on compiler construction), but it would've been trivially easy for me to opt for a more math or theory heavy degree and avoid pretty much all practical programming exposure.
And my experience - both from hiring, and from talking to people in the business - is that a lot of people do, and very few go the other way and try to pick subjects that makes them better suited as software developers. Most people that go that way end up picking other degrees - such as going to schools that actually offers software engineering as a subject.
But I'm not hiring mathematicians or logicians or people who are meant to run research projects where undergrads do the programming - I'm hiring software developers.
While it is perfectly possible to combine the two, the important part to consider is that a CS degree teaches you computer science, not software engineering, and while there is varying degrees of overlap at different schools, if you spend your time doing a CS degree you spend a lot of your time 1) not programming or learning about software development skills, 2) not developing communications skills or more business oriented skills that are generally far more valuable most places that needs software developers than the additional skills CS does give.
Over the years I've had far more use for my (natural) language skills and communications skills than I have had for my CS degree. And I've had far more use for programming experience I've built up than either. I don't regret my CS degree, because I get a lot of pleasure out of using those skills on a hobby basis, but if I'd gone back and were to pick a degree specifically to be the best possible software engineer, there's just no way I'd have picked CS degree.
I've had situations where we genuinely had use for someone with a CS PhD, but for most development the CS skills are not that interesting and what you need are software engineering skill sets that most CS degrees simply don't teach. In the cases we've needed someone with in depth CS knowledge, we've in some cases found it easier to pair up someone with the CS knowledge with a good developer rather than trying to find the perfect combination.