Hacker News new | ask | show | jobs
by kenjackson 5716 days ago
I think you view the degree incorrectly. A degree should be a minbar of what one knows. It shouldn't be a scarcity measure. If someone has a CS degree I should be able to talk about garbage collection, threads, the pumping lemma, Amdahl's Law, control flow, NP-Completeness, etc...

Scarcity really should have nothing to do with it. Either you've acquired the knowledge, in which case the degree signals that or you haven't.

Your job as someone who hires people is to determine which vectors you put the most weight on. CS knowledge certainly isn't the only thing you care about, but a degree in CS may signal sufficient CS knowledge. In some cases maybe it requires a PhD in a specific field. Or maybe you want someone who has worked in the Linux kernel. In any case these vector weights should be job specific.

About the actual article, I must admit I don't know what the writer is talking about. As a consultant I've see a wide range of enterprise development. Some is as sophisticated as what you're likely to see at Google. Others are basic just people doing HTML markup. The degree requirement is a very pragmatic signal that the applicant has the basic skills required to do the job. I'm sure there are other ways to demonstrate this, but there's probably considerable investment in determining what they provide.

The thing that is somewhat interesting is that while there are probably just as many programmers who don't have degrees in CS/Math as those that do, most of the major breakthroughs, academia or industry, are from people either with these degrees or in the process of getting them.

5 comments

If someone has a CS degree I should be able to talk about garbage collection, threads, the pumping lemma, Amdahl's Law, control flow, NP-Completeness, etc...

Has this been your uniform experience? Consider the following thought experiment: We advertise for a position as a programmer. We state that we require a CS degree. Within the set of applicants, what correlation will we observe between the ability to speak knowledgeably about all or even most of the subjects you list and a degree?

I suspect the correlation will be higher with a degree than without it, but too low to be useful for screening applicants in and of itself. This is not a fault of your reasoning, but rather a fault of the current system, where each institution decides for itself what is and isn't part of the curriculum and many (but not all!) undergraduate programs have been moving inexorably towards vocational training rather than teaching Computer Science.

Scarcity really should have nothing to do with it. Either you've acquired the knowledge, in which case the degree signals that or you haven't.

If the knowledge you describe is not scarce, than signalling that you have this abundantly distributed knowledge is not particularly meaningful. Let's say that the degree works exactly as you suggest: Everyone with a degree can and does have strong knowledge of the exact subjects you mention. But let us further say that this is not scarce: When we advertise for a position, 80% or more of the applicants have a degree and the knowledge that goes with it.

How then does this degree help us go from 100 applicants to five interviews? Sure we might choose to throw twenty resumés away right off the bat, now our problem is going from 80 applicants to five interviews. In this scenario, a degree is not meaningful to us because it doesn't help us make a decision.

Thus, we are forced to consider other factors, such as job experience, contributions to open source, writing on line, and so forth. Those factors become more meaningful because they are scarcer.

Sure, there will always be some meaning to a degree, but its utility for making a decision is a function of its scarcity in the sample set.

If the knowledge you describe is not scarce, than signalling that you have this abundantly distributed knowledge is not particularly meaningful. Let's say that the degree works exactly as you suggest: Everyone with a degree can and does have strong knowledge of the exact subjects you mention. But let us further say that this is not scarce: When we advertise for a position, 80% or more of the applicants have a degree and the knowledge that goes with it.

How then does this degree help us go from 100 applicants to five interviews? Sure we might choose to throw twenty resumés away right off the bat, now our problem is going from 80 applicants to five interviews. In this scenario, a degree is not meaningful to us because it doesn't help us make a decision.

I'm not sure what scarcity has to do with it. Either the skills are useful for the job or they're not. For example, being 7 feet tall is rare. But it's probably not something you care about.

What you really should do is enumerate the set of attributes that are valuable. And there are generally two types, those that are binary, and those for which more of the attribute is desirable (invert the attribute for negative attributes).

Now if the degree captures a lot of the attributes, especially the binary ones, and further if you think those w/o the degree don't have it then it is useful to list. Unless you really believe that the sample set contains 95% people with degrees.

The nice thing this allows you to do then is to focus on other aspects that you value. And for the ones that aren't binary is where you spend most of your time drilling. It's not about scarcity, its about optimizing.

Unless you really believe that the sample set contains 95% people with degrees.

That's the whole point. The value of the degree is the inverse of its scarcity. If you have 50% of people with degrees, it's more useful than if you have 80%, which is more useful than if you have 95%.

Perhaps you misunderstand what I am saying?

I'm not saying a degree isn't useful or meaningful.It is not a boolean, meaningful or not meaningful. Just that it is more useful and more meaningful if a degree is scarce than if it is plentiful.

We don't need to agree or disagree on whether the lack of a degree signals the lack of knowledge or whether we have confidence that those with degrees really do have all of the skills we seek.

Just that the scarcer it is, the more meaning we apply to it.

That's the whole point. The value of the degree is the inverse of its scarcity. If you have 50% of people with degrees, it's more useful than if you have 80%, which is more useful than if you have 95%.

The value of the degree, to you, trying to whittle down applicants, is inversely related to scarcity. But not to the degree holders. In fact, as the scarcity decreases, the cost of not having the degree may increase.

There's effectively two states: (1) Have the degree (2) Don't have the degree.

In a world where the degree is scarce having the degree may provide more value over the average person (although if it is too scarce, the value may actually diminish, as it may also hinder its credibility or recognition). But at the same time, not having the degree doesn't reduce your value as much versus the average person (since its rare, no one notices its absence).

When the degree is common, the opposite is the case.

What I'm trying to say is that scarcity matters to you in a very isolated activity (whittling down applicants). Outside of that, the role of scarcity plays both sides of the fence.

That's really interesting, thanks!
Based on my 10 years of interviewing people no one with or without a CS degree can discuss any of those things. I'm usually happy if they know what a hash table is and roughly how it works.
I find this surprising. Maybe because we covered some of those topics in first year, and, as a second-year student, they're still fresh in my mind, but I simply can't see how someone who completes a CS degree would be ignorant on all of them. For the same reason, I can't see how fizzbuzz is a useful test. It was the very first thing we learned to program in our intro CS class. I'm not from a top-ranked school, and while we tend to do fairly well in competitions, we certainly aren't renowned for our CSc program.

I don't know whether to feel encouraged or discouraged when reading articles and comments like this. Are there truly that many incompetent CS grads and/or insufficient programs out there?

You would be amazed how many people apply for programming jobs who seem to have no ability whatsoever to write software.
All they need to do is drag controls on Visual Studio, right?
No many of them know nothing of Visual Studio. They know how to operate Google.
Honestly, aside from just having the mind for it, Google & time is all I've needed to figure out any of the programming challenges I've run into.
I think being able to google your way out of a problem is worth more than being able to grag a grid to a form, drag a query to a grid and call it a day...
Well, if they can't discuss those things (and an awful lot more) then they don't have a CS degree - they might have some programming qualification, but they don't know about CS.
I think that, when he mentions smart graduates, the idea is that current CS grads are on the low side of the intellectual spectrum, as compared to majors such as math and physics.

At the time I graduated, the differential was the high student demand for CS, so only the best ones would be accepted into a CS program. Nowadays the large number of programs and the low demand pretty much guarantees that almost anyone can be accepted, and thanks to the dumbing down of the curricula, they can actually graduate.

So, a somewhat unrelated question: What are the signs that your program is a good one? I get that there's a distinction between computer science and programming, but I'm interested to know what distinguishes a good CS degree from a bad one? Does the fact that, as of second year, I've spent most of my time on data structures/algorithms and far too much discrete math for one lifetime bode well, or is it not that simple?
These are the types of things I have learnt in high school programming classes.. I'm in my third year and taking AP Computer Science next year. I'm kind of wondering how someone could get through a college program without knowing the basics.