

A degree is only as meaningful as its scarcity [2008] - raganwald
http://weblog.raganwald.com/2008/01/no-disrespect.html

======
oiuyhgftrhyjuk
Degrees used to be useful for weeding out resumes. I have 10 jobs,
100applicants, just pick the dozen CVs with degrees. That fails when everyone
has a degree, so then you start to pick only ivy league, or only 1st/2:1
class.

SO you can try and pick degrees based on scarcity, ie I only hire oxbridge
maths grads, or MIT physics as programmers.

Opensource has changed a lot of that - when I went to college only
universities had compilers. A machine capable of running a compiler took a
room, now I talk to high school kids who have written kernel modules.

I now hire either people with no degrees based on projects they've done as
well as smart graduates (ie maths/physics) - ironically both groups with no
formal programming qualifications.

~~~
kenjackson
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.

~~~
jswinghammer
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.

~~~
redthrowaway
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?

~~~
enf
You would be amazed how many people apply for programming jobs who seem to
have no ability whatsoever to write software.

~~~
rbanffy
All they need to do is drag controls on Visual Studio, right?

~~~
jswinghammer
No many of them know nothing of Visual Studio. They know how to operate
Google.

~~~
rbanffy
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...

~~~
kenjackson
Why should I have to spend Googling for how to write a H264 decoder when I can
just drag one, written by people who know it really well, onto my surface?

I know that a lot of people like to argue that these people "don't understand
what they're doing". Most Ruby developers don't understand much below a single
level of abstraction presented by the language either.

------
coliveira
I think the market for CS is part of the problem. The skill set required from
graduates varies widely across the industry. Also, it depends a lot on where
you want to live. For example, if you are going to use hardcore CS knowledge,
you must be or move to an area where companies require it. This means Silicon
Valley, and a few places where there is a demand for such knowledge.

99% of other companies will hire CS people to write glue-code in Java or
similar. In that case, the important skills are team-working and project
management, beyond being able to program in Java.

So, you cannot blame only universities for delivering grads that don't know
more than the basics. This is what the market will pay for. It does no good to
a State University to teach for example AI algorithms that will be useful only
if they get a job on Google, or writing Haskell compiler that will be useful
only if they work for Microsoft.

I think a sensible solution would be to limit the number of CS programs, and
create a separate major, maybe business computing or something like this, to
attend the need to of the large majority of businesses.

~~~
nradov
Some schools already have an Management Information Systems (MIS) major, which
is basically business computing, and/or Software Engineering, which focuses
more on teamwork and project management. We should be pressing more schools to
offer those majors so that students who want to become software developers
will have other options. Then the CS major would be able to focus more on
theory and preparing students to do research (just like real scientists).

------
benvanderbeek
I was just talking to one of my coders about how nothing I have used in my
career was learned from my computer science classes.

I guess I'm a "business programmer" - if I'm a programmer at all anymore - I'm
not sure. I've definitely never delved into Scheme, Haskell, and OCaml.

I majored in CS, graduated from a California State University in 2002. I
focused on getting A's, not learning or connecting w/ people or deciding what
I wanted to do w/ my life. I figured I would graduate and a coding job would
fall in my lap. Since graduating, I've worked at a real estate franchise, a
hedge fund kind of investment place, and now ecommerce.

I don't know how a CS degree from a CSU looks vs UC or ivy league, definitely
didn't think about it enough when graduating from high school. But I do know
that my degree only _directly_ served to let me pass through a filter to get
my first job. And I probably could have had that with a vocational school
degree.

~~~
kenjackson
How much did you know about CS before going to college?

~~~
benvanderbeek
Depends what you mean by "know about." I had taken a couple of programming
classes. I knew you could write code, compile it, and make a thing that does a
thing. I started college as a Computer Engineering major, then realized that
_really_ wasn't what I wanted. If I could go back, and if it existed at the
time, I'd to informatics.

~~~
kenjackson
I ask because if knew nothing going in, you'd learn a fair bit in college.

With that said, I'd programmed since 3rd grade and still learned a fair bit in
college that I use to this day. Of course, this was pre-internet, so I think
it was generally hard to self-teach. But things I learned in college that I
used professionally:

* Data structures. Before college I pretty much used primitives and arrays. In college I learned to make much better use of trees, graphs, sparse matrices.

* OOP. Although in fairness, OOP started to come to life when I was in college. There was no ANSI C at the time :-)

* Compilers. I've since built many compilers, but having taken the sequence certainly made it a lot easier.

* Databases. Never used a relational DB until college. I think it would be fair to say I've made millions off of them since. :-)

* Regular expressions and state machines. This is just ingrained now.

* Vi ... Used Vi exclusively for the first decade of my career.

* Unix ... Used various Unix variants in the first decade of my career as well. Learned most of it in college.

* Architecture and internals -- I've done a fair bit of work at the architectural level, and college is where I laid the foundation for understanding both the architecture (registers, cache, tlbs, pipelines, units, etc..) as well as basic EE. None of which I knew much about before college.

There are plenty more, but these are some examples. Probably my big weakness
in going in to college is I did all game programming before college. I
understood graphics really well and the game loop, But looking back at some of
the code, and it was really horrible. You really shouldn't use arrays for
everything :-)

~~~
benvanderbeek
I was exposed to all of that, but 1) haven't used much besides
Unix/OOP/Databases since, and 2) feel like I only learned 1% of what I use
even in those areas during college.

A lot of it comes back to not having specific goals in college, sliding by
like I always did in school.

That, and the excessive my focus on the band I played in. Not that I regret
it, but pretty impractical.

------
JanezStupar
Degrees may not be scarce - but the knowledge that should be _contained
within_ an CS graduate indeed is. At least as my experience has led me to
believe.

So to recap the article: Don't go to UNI to get a CS degree thinking you will
make big bucks just due to the degree. However if you actually understand the
knowledge you were _supposed_ to learn - then you should be able to make a
buck.

Nothing to see here - move along.

~~~
mikecarlucci
That's the opinion often missing here. Just like ideas alone aren't valuable,
neither is schooling. If you get something out of it though, formal education
is valuable.

------
mikey_p
My wife has said for a long time that the main reason for a position to
require a degree, is to demonstrate that the candidate has subjected
themselves to the process and bureaucracy of an educational institution, which
is often designed to mimic the structure of your average corporate hierarchy.

Given that I got kicked out of college because I simply was either too lazy to
do the busywork, or too much of a rebel to please my professors, and she
finished, but considers the net gain from the experience to be relatively
worthless, I'd say she's pretty spot on. She also does better in your average
9 to 5 job than I do.

------
motters
I don't know much about the contents of CS degrees, but from observation over
quite a length of time it does seem to be true that most software engineers in
businesses are really clerks - and treated as such. It's a very lowly position
in the corporate pecking order. There are the software engineers and then
there are the cleaners and the part time vending machine attendant.

------
jh3
This was kind of depressing to read. I have a CS degree, am currently working
on a masters in IS, and am working as a web developer. I would like to think I
am doing all right for myself so far. However, sometimes I feel as if there is
a large gap in my CS knowledge.

This is one of those times.

------
jonnathanson
Yes, but the trick isn't in defining meaning; it's in defining what we mean by
scarcity.

