Fog Creek Software
Discussion Board




Value of degrees & resumes revisited

I know this topic had been brought up time and again, and somewhat touches on a recent one about technical interviews, but to be more specific -- I wonder what the JoS populace thinks of this:

Consider a "Master" or "PhD" candidate (as claimed on a resume), who cannot answer the following question (which, IMHO, such a candidate should do in his sleep!): Describe the properties of your choice of the following data structure: Stack, Linked list, Tree; and describe, in general detail, how you would go about implementing it in [your language of choice #1 [vs [your language of choice #2]]

The "language of choice" part comes from the people listing C and C++ on their resumes, and one wants to glean
whether the candidate grasps the difference.

In fact, I've seen very able employees being in awe, so to speak, of a candidate whose resume mentions advanced degrees. But when the candidate appears, and claims that his most relevant experience to date was an academic
project (nothing wrong with that, if you're just out of college, of course) on building a COMPILER, and then doesn't even know what a {regular expression,context-free grammar,parser generator} means -- what the hell is going on??? How are these people even allowed to get their Bachelor's, never mind being accepted to grad school in CS?

This makes me think that high unemployment rate in the industry is ok -- given the glut of utterly unqualified candidates, it's fine by me.

GG
Friday, May 28, 2004

A PhD means someone has good research skills and knows some topic in depth.

It doesn't mean they are a good developer, just as it doesn't mean they're a good writer or a good manager or a good anything.

JM
Friday, May 28, 2004

What JM said. Mind you, it is pretty strange that someone who built a compiler doesn't know what a grammar or parser are. Kind of weird.


Friday, May 28, 2004

Maybe they only worked on the compiler as part of a team, and never got to see the interesting stuff.

Steve Jones (UK)
Friday, May 28, 2004

I would expect a CS grad right out of college to know that type of stuff.

chris
Friday, May 28, 2004

I worked for a research lab where 50% are MS, 25% PhD, and the rest empty wastebackets.  Not really, but that's the way it seemed at the time.  Anyway, I was new and mentioned to one of the guys "There's a lot of PhDs that work here aye?"  He replied, "yeah, and a lot of smart people too."  Wasn't long after that that I started to see what he meant.  Advanced degrees are nice, but don't indicate a smart individual.

5v3n
Friday, May 28, 2004

Seems an odd question, graduate education (unless it's research oriented) isn't devoted to understanding data structure implementation.

I can certainly tell you the difference between the 3  (stack/list/tree), but I can also tell you graduate education had nothing to do with that.  I've simply used them.  Not sure how I'd answer going about implementing them.  My first instinct would be "why?", there's plenty of well debugged versions already.

And that's often what further education teaches you...solutions to many common problems, or ways to look for solutions.  Why reinvent? 

If the goal is to see how they think, then bring in a problem your team has actually looked at.  One interview I had that I enjoyed, the guy described their problem (basically a customer management system) and said "Ok, draw up on the whiteboard what you think you need to know about the pieces of the system."

Very cool.  I got to ask questions like "Can the same customer have multiple X in their history?"  Ok, so we have a 1 to many relationship here.  "Does the customer have a status, like current/prospective?"  Etc, etc.

After about 20 minutes we'd drawn up a pretty good diagram of the relationship between the main objects in the system and the interviewer had a good idea of what I could do and how I approached both understanding the problem and designing for it.  No code required, no useless debate about the best linked list implementation.

I really think education and work experience are complementary.  Pure academics don't understand real world concerns and the real world often doesn't understand how academic research could be applied.

That said, I also think graduate CS is more useful than undergrad as many graduate CS programs have "professional" courses (architecture, design, requirements gathering, etc) as well as more traditional science-oriented courses (database implementation).

Chris Kessel
Friday, May 28, 2004

Even if you never implemented a linked list or stack before, anybody with a bachelor's or higher degree in CS should know enough about them that you could intelligently brainstorm on how you would implement them.

Maybe the candidates are just plain lying.  Resume inflation and outright lying are very common among people applying for developer positions.

Unfortunately, to an extent the employers are partly responsible for the trend, because their inflated job requirements makes it so much harder for an honest candidate to get through the HR screens.

T. Norman
Friday, May 28, 2004

I got my PhD by going part-time while I was working in industry. My experience isn't necessarily representative, but...

Getting a PhD minimally means that you can wend your way through department politics and contribute some nominal piece of work to the body of knowledge. Like all college educations, it isn't meant to train for working in industry. Maximally, it can indicate someone with a sharp, incisive mind and a broad grasp of the fundamentals of a field.

That said, someone with even a BS who can't discourse extemporaneously about stacks or linked lists probably wasn't paying attention.

I think there is some defacto value in a degree, just like there is some value in N years of experience. Neither is a sure predictor however.

Jeff Kotula
Friday, May 28, 2004

If a PhD in CS can't implement their choice of stack, tree or list in the language of their choice, then something is wrong.

Even people with 2 yr degrees can do that.

At some point in their career, the PhD should have done some programming. If you have done any programming, you have used a list or stack at some point and you will also know at least one language.

I would assume such a person has a fraudulent diploma -- check with the school to see if it is real.

And PLEASE do us a favor and tell us which school this person graduated from with the doctorate - I REALLY want to know this.

Thanks.

Dennis Atkins
Friday, May 28, 2004

As a wastebasket developer without a degree, I can tell you that there's more to writing a compiler than language theory and parser generators.  I've written various kinds of parser generators for context-free grammars myself and worked through the various proofs associated with the hierarchy of grammar types, and those problems are trivial compared to the semantics of programming languages issues.

Maybe you should have asked him to tell you about the stuff he worked on instead of assuming a judgemental role.  If I were him and I detected that you were doing something like that, I'd play dumb just to get out of there as soon as I could.


Saturday, May 29, 2004

Blank,

Are you saying that if you were asked to write a list or stack implementation in the language of your choice, that you could not do it? And that despite this, you feel that you are a hot shot developer, one of the elite few at the top?

BTW, in case you didn't know - any ten year old can write an efficient lexer and parser. That is not where the challenge lies. But surely you realize this.

Dennis Atkins
Saturday, May 29, 2004

What are you talking about Dennis?  I wasn't ever suggesting that I'm "one of the elite few at the top" or anything about the stack/list/tree issue.  I have no idea why you brought that up.

I'm also at a loss to understand why you brought up the capabilities of ten year olds with respect to writing lexers and parsers.  A ten year old could probably write a parser generator for arbitrary context-free grammars, as I was talking about in my previous post.  I completely agree that it's trivial.  However, that's missing the point.  There's a lot more to writing a compiler than just lexing/parsing.  Semantics of programming languages is a large and busy area of research, as I said in my previous post.  But the original poster didn't even consider that when he dismissed his prospect's work (without even evaluating his work, it seems).

The original poster could have asked some open-ended questions to get the prospect to talk about his work, rather than presuming that he knew everything about it and judging the guy based on some spurious and possibly irrelevant set of criteria.  I'm sure that the guy knew plenty of language theory, but (as I said previously) the best thing he could have done at that point was to just play dumb and get out of there as soon as possible.  Any decent person's time would be wasted if spent with hostile arrogant people bent on trivializing and denigrating the knowledge of their peers.  But surely you realize this.


Monday, May 31, 2004

Oh, now I see what you get from a college degree, an ego. After 23 years in this industry, I have also observed one of the major causes of wasted time, people, and projects.

I've also noticed another pattern, degrees/advanced degrees are rarely, if ever, related to the greatness of a programmer.

And to Chris Kessel's point, I have and will continue to hire developers with real problem solving skills (egoless, good business sense, can see the forest for the trees, can speak without confusing/pissing-off project stakeholders) over highly educated techno geeks (who can spend hours arguing the finer points of tree balancing and stack implementations).

bemused
Tuesday, June 01, 2004

> The original poster could have asked some
> open-ended questions to get the prospect
> to talk about his work

I did. To give you more details, one applicant claimed to have written a compiler (! not interpreter!) for Scheme - into Java bytecode. The conversation did not turn into basics like stacks after I got blank stares first in response to "So, how did you compile a lambda?" and then to "Did you use any parser generator or did you do it yourself?"

So, er, I think I tried.

You, who claims (rightly) there's more to the compiler than mundane CFG parsing, you should then have no problem answering those simple questions in your sleep?

I am not saying you should know that. Nor do I claim I know everything. But if you claim you've built a compiler, is it so wrong to ask you what a regular expression is?

GG
Wednesday, June 02, 2004

Dennis - I can do it in private mail, if you like.

GG
Wednesday, June 02, 2004

Ha!  Of *course* you didn't ask the basic data structure questions straight off.

It doesn't sound like you asked an open-ended question at all, though you just said that you did.  An open-ended question about the project would be, "so what interesting problems did you solve in this project?"

It's funny that you interpret his "blank stare" as incomprehension, because it might just as easily have been disappointment at having his time wasted, or (depending on whether or not you had a smug look) contempt.

He very well might have gotten the message that you're perfectly willing to judge his work based on your limited knowledge and immediate bias rather than judging it on its own merits (ie: learning enough about what's been done to judge it fairly).  Maybe he didn't think that the problem of defining a low-level representation of an environment/expression pair (ala lambda) was representative of the class of problems he faced when writing the compiler in the first place.

Yes, obviously he ought to be able to answer your questions "in his sleep," but if I walked into an interview for a mathematician job and was asked to sum 1 and 1, I wouldn't feel particularly satisfied with myself or your organization by providing the right answer.  Nor would my opinion improve if you followed up with, "listen, if you have one apple and then you get another one, how many apples do you have?"


Wednesday, June 02, 2004

> It doesn't sound like you asked an open-ended question > at all, though you just said that you did.  An open-ended > question about the project would be, "so what
> interesting problems did you solve in this project?"

So, you think only the questions you think are correct are the ones that should be asked? It's funny.

> It's funny that you interpret his "blank stare" as
> incomprehension, because it might just as easily have
> been disappointment at having his time wasted, or

Well, then, it's an indication of unprofessionalism. Period. You think your time is being wasted, don't continue wasting it on sitting there "disappointed". If your time is so precious, turn around and leave NOW.

> (depending on whether or not you had a smug look)
> contempt.

Look is in the eye of the beholder.

> He very well might have gotten the message that you're
> perfectly willing to judge his work based on your limited
> knowledge and immediate bias rather than judging it on

Limited knowledge of what? What the hell are you talking about?

> its own merits (ie: learning enough about what's been

Exactly how am I about to learn what's been done in a college project? By asking "So, how do you feel about it?" To get some vague bullshit in return which tells me nothing?

> done to judge it fairly).  Maybe he didn't think that the
> problem of defining a low-level representation of an
> environment/expression pair (ala lambda) was
> representative of the class of problems he faced when
> writing the compiler in the first place.

Alright. Maybe. Maybe she -- it was she, funny how you
assume it was a he -- did think like you. Even given the fact
that I have taken a compiler class at a much more
demanding institution, and know from various experiences
that you are not writing a state-of-the-art compiler in a one-semester required course in an average school. Please.
You think it's beneath you? Fine. Prove it to me then, at least I am professional enough to shove my ego if you can prove you're better than me. But nagging doubts persist -- if this is how you respond to  "trivialities", what will you say next? This task is trivial, shove it? Well, I'll shove it. Go work somewhere else, prima donna.

> Yes, obviously he ought to be able to answer your
> questions "in his sleep," but if I walked into an interview
> for a mathematician job and was asked to sum 1 and 1, I
> wouldn't feel particularly satisfied with myself or your

If you walked into an interview for a mathematician presenting a resume the high point of which was "I just learned the rules of arithmetic", what would you say then?

> opinion improve if you followed up with, "listen, if you
> have one apple and then you get another one, how
> many apples do you have?"

So, you think the organization should give a shit about your opinion, gleaning how cool you are just from that, er, smug look on your pimpled face?

GG
Thursday, June 03, 2004

In not so many words:

>Maybe he didn't think that the problem of defining a low-
>level representation of an environment/expression pair
>(ala lambda) was representative of the class of problems
>he faced when writing the compiler in the first place.

Who gives a flying hoot what he felt? Maybe your hypothetical he felt I molest his spiritual ancestors by talking about such pedestrian matters, but he would do good to deign to answer. It would only be polite, and show that he is not willing to stoop to below my level. Alas.

Why do I get a feeling you're, like, 20. If that.

GG
Thursday, June 03, 2004

>Exactly how am I about to learn what's been done in a
>college project? By asking "So, how do you feel about it?"
>To get some vague bullshit in return which tells me
>nothing?

You ought to have asked what was important about the project to this person (not "how do you feel about it?" which is your misrepresentation).  That would have told you a lot about the person and how they think about their work.  Instead it sounds like you told the person that your ego plays a large part in forming the criteria for evaluation at your organization.

>So, you think the organization should give a shit about
>your opinion, gleaning how cool you are just from that,
>er, smug look on your pimpled face?

Sorry, my mistake, this prospect must have been a waste because it sounds like you'd be a lot of fun to work with.


Thursday, June 03, 2004

> You ought to have asked what was important about the
> project to this person (not "how do you feel about it?"
> which is your misrepresentation).  That would have told

In my experience, that still gets you some generic/vague
BS.

> work.  Instead it sounds like you told the person that
> your ego plays a large part in forming the criteria for
> evaluation at your organization.

How so? Notice how the conversation does continue (with
me, by the way, unlike you, signing it -- what does that
say about my ego?)

>>So, you think the organization should give a shit about
>>your opinion, gleaning how cool you are just from that,
>>er, smug look on your pimpled face?

Ok, I take "pimpled" back. Sorry. However, I still do not
think that, even granted that the candidate thought the
question was "beneath" her, she should have "played
dumb" (come on now, would anyone really do that? have YOU done that, or are you just IMAGINING yourself in the situation, given the fact that you are currently oh-so-comfortable where you are?). There are ways of telling people this. For a fresh college graduate, again, unless they've taken some grad courses on the level of, oh, let's
say MIT, "writing a compiler" often means "answering leading questions on every problem set". 

GG
Friday, June 04, 2004

>In my experience, that still gets you some
>generic/vague BS.

In my experience, getting everybody in sync about what concepts/issues are interesting and important (and having everybody comfortable with discussing what they feel are important concepts/issues) is absolutely central to having an effective team.

>How so? Notice how the conversation does continue (with
>me, by the way, unlike you, signing it -- what does that
>say about my ego?)

What does your signing your messages say about your ego?  I'm not sure, what do you think it says?

The only reason I 'stopped' the conversation was because it seemed like you were getting hostile.

In any case, here's how somebody might explain to themselves how your ego is factored into your line of questioning: "I just told him that I'd worked on a compiler.  I could have worked on any number of things, but he asked me about parser generators.  I wrote a parser generator in a second year language theory class.  Why isn't he asking me about my great new theorem in type theory?  Parser generators must be very important to him, but I didn't even give mine much thought.  He's going to judge me based on something that wasn't even important to my project."

>Ok, I take "pimpled" back. Sorry. However, I still do not
>think that, even granted that the candidate thought the
>question was "beneath" her, she should have "played
>dumb" (come on now, would anyone really do that? have
>YOU done that, or are you just IMAGINING yourself in the
>situation, given the fact that you are currently oh-so-
>comfortable where you are?).

No I haven't done that.  I'm not really comfortable where I am either, so I don't know where you're going with that.

In fact, playing dumb probably isn't the tactic I'd take, but I don't think that's really relevant.  What's relevant, I think, is that she *could* have had that reaction.  It sounded to me like you picked one of several possible interpretations of the situation and you picked it because it maximized your ego gratification (maybe that's not the case, I'm just speculating on the ego-gratification bit).

In any case, it doesn't sound like you gave her a chance to really lay her work out for evaluation.  In fact, when you say this:

>For a fresh college graduate, again, unless they've taken
>some grad courses on the level of, oh, let's say
>MIT, "writing a compiler" often means "answering leading
>questions on every problem set".

It sounds like you're already biased against her.


Friday, June 04, 2004

*  Recent Topics

*  Fog Creek Home