Fog Creek Software
Discussion Board




Joel on the Economy and the Job Market

Joel sure knows a lot about software but he often falls into the trap of describe the economy and the job markets as if they are as logical and clear as programming a computer.

For example, in his article entitled, "Whaddaya Mean, You Can't Find Programmers?", he describes basic supply and demand and talks about "It's just a matter of both sides accepting the market price."  But, let's be honest: going out and hiring a programmer isn't like shopping around town and buying a TV.  It is a market much more disorganized.  Advertising does not necessarily find and bring out the best programmers to interview, no matter how much you might be paying and recruiters, well, they may bring you lots of people to interview but they probably don't have enough understanding to separate the great from the good.

But, suppose that you do somehow collect a bunch of resumes and somewhere in that stack is the Right Guy for the Job.  Well, Joel presents some pretty good tips for finding that guy.  But, he seems to present those tips (e.g. having him write code) as a foolproof way of finding that guy.

But, let's look at the situation in real life.  In real life, you and each person on your team interviews each candidate for 1 hour max.  Based on a single hour in a single day, you are supposed to make a snap judgement about a person who may be hiring and working at your company for years.  Now, would you get to know an IDE or a language in just an hour and make a decision about whether it is good or bad?  "I tried learning KDevelop in an hour but it seemed hard so I've decided that it SUCKS."  Or, "I programmed a couple of lines of Perl and I've decided that it is GREAT."  If we don't do that for inanimate objects, why do we think that the hire/no hire decision is such a slam dunk?  It isn't.  Basically, you do your best to find the right person but, at the end of the day, you realize that there just isn't enough time to do a proper job.  You do your best and you probably didn't find him.

Let's face it: If 600 people apply for a certain job, you've got to throw out 500+ for pretty arbitrary reasons (e.g. I never heard of the school that he went to, no degree or not enough experience) just so you can have a reasonable pile to consider.  Nobody can consider 600 people at the same time; at most, you can consider about 40 and interview maybe 10-15 (at most!).  Believe it or not, getting 600 resumes no more guarantees that you'll get a subject matter expert than if you only got 5.

I can understand why Joel makes these mistakes.  An expert tends to see the world around him through "expertise-colored" glasses.  Programmers think that because they see parallels in the economy and the job market to programming that it must be as logical and sensible as programming.  But a similarity does not necessarily indicate that the underlying mechanism is the same.

So, while I think that Joel is great guy and I have a great deal of respect for him as a programming theorist, his views on other areas outside programming suffer from a desire to find similarities to his expertise and an unconscious editting out of data, observations and theories that do not support his conclusion.

Anonymous Coward
Thursday, December 12, 2002

This is a little off-topic, but why do employers toss out resumes with no degrees? This does not make sense to me in any way. I have found in my experiences that anything beyond a first-year course in CompSci is about as useful in creating real-world apps as experience working at McDonalds. And I know this because when you are in University, one of the things that you don't learn is Windows (at least not a UW, which is known in Canada for its CompSci department). So a bunch of people come out of school with theories on how to program and no experience. Great! I can read books and learn theories too, why do I need a piece of paper to tell you that I have read books? It is very frustrating when you know that you can do a good job, better than any rich-kid who paid his way through school. But the companies are blind to this fact, and it is unfortunate for both parties. You want to know how to pick out good people in the stack of resumes, try considering people who have actually coded for a living instead of reading books about it.

Giampiero
Thursday, December 12, 2002

University teaches Computer Science not Computer Programming.

There is a difference. 

Learn it.  Love it.

I have CS Degree and you don't
Thursday, December 12, 2002

Yes, but companies hire Computer Programmers not Computer Scientists

Daniel Shchyokin
Thursday, December 12, 2002

Hmmm ... you seem to be implying that no one hires CS University grads?

I have a CS Degree and you don't
Thursday, December 12, 2002

Oh yeah, and you are ensured, at the very least, that somebody who has a CS (or any other degree) has enough motivation to make it through 3-5 years of education to get the degree at the end.  So it's a good indication of at least having some ability to Get Things Done.

Languages and environments always change, but the ability to reason around a computing problem is always valuable.

w.h.
Thursday, December 12, 2002

Thanks Daniel, that is exactly my point. I will give you guys a little history of me and why I feel strongly about this. I have been to University and am just shy of graduating. Personal reasons kept me from finishing when I was supposed to. During my time at school I participated in a Co-op (translation: "paid intern") program that got my foot in the door to technology. I did a 4-month stint at a company called Delano as a Tech Writer. I had some good technical skills so the next term they re-hired me and promoted me to Technical Content Specialist (basically a translator from developer to Tech Writers). My same boss moved to another company and on my next co-op term I was hired by him as a QA Analyst. After my last co-op term I was hired permanantly and have been recently promoted to a Software Developer. The time I started as a QA Analyst was post dotcom bust.

Am I some kind of super-worker. Not really. I am pretty thorough (according to my managers) and I do good work and get stuff done. But when I drop my resume somewhere (and I have dropped off resumes for every position from Tech Writer to Developer) I don't even get an interview. I just doesn't seem right. But I bet the problem is that they are looking at my resume and seeing that I don't have a degree and just tossing out my Resume. It is a flaw in logic to do high-level filtering this way.

Giampiero
Thursday, December 12, 2002

Tossing out un-degreed candidates makes complete sense. All things being equal, why not shrink the pool to individuals who have demonstrated 4 years of accomplishment in a challenging environment?

pb
Thursday, December 12, 2002

Would you hire someone without a high school diploma?  I would not.

I've worked with programmers who had college degrees, and those without.  There have been exceptions to the rule, but on the average those with degrees were better than those without.

Go finish the degree.  It will give you freedom.  I would not hire you without it, unless I knew you or a close friend knew you.

XYZZY
Thursday, December 12, 2002

Anonymous Coward, what do you offer instead of 2-hours interview ? I think nothing.

And what Joel and any other sensible manager offers is to check those abilities that there's no point in talking to the person who's lacking them.
Ability to write correct, clean and elegant code is one of the most difficult (from my personal experience, I see many people not being able to do it) and *there is* a point in checking this as the first thing during the interview. I can continue your analogy with choosing an IDE - if I'll have one hour to evaluate it, I'll try to customize it the way I'm used to. If it doesn't allow me to choose keyboard shortcuts or project's folder - it sucks for me and I don't even care how brilliant it is in other areas (that's what Eclipse do).

I have nothing to say about your words regarding Joel's point of view (except that I don't see it the way you are) but I think you was wrong mentioning the interview as an example of it.

Evgeny Goldin
Thursday, December 12, 2002

[[ from my personal experience, I see many people not being able to do it ]]

I think I should re-phrase it - from my personal experince, I see *very few* people being able to do it.

Evgeny Goldin
Thursday, December 12, 2002

Giampiero and following --

Respectfully, I believe you missed anonymous coward's (ac) point in even bringing up discarding resumes based on college/no college.

[ ac - if I'm misrepresenting you here, I apologize and please step in and correct me. ]

He didn't use this term, but I believe s/he was talking about 'discriminators'. Society today has stupidly loaded that word with political baggage it doesn't deserve, but ac's point there was if you have 600 resumes on your desk, you're going to be looking for any excuse to choose one for subsequent follow-up and discard another. Basically, though your ultimate objective is to **select** one resume/candidate, because you have too many, the initial pass or two through them will be to **discard** resumes/candidates.

He then listed some examples of things upon which you might base this choice to discard resumes on. It has to be something you can apply pretty quickly or it doesn't gain you anything in terms of reducing the workload of comparing candidates. To provide some additional examples in hopes of clarifying what I think ac meant, If you were the hiring manager, trying to keep a stack of 600 resumes from falling over on your desk, you might choose to discard all resumes:

1) on legal paper
2) on colored paper
3) hand written
4) stack them up, go through from the top, trash every other one.
5) where the contact address is not within 10 miles of the place of work.
6) over 1 page long
7) on scented paper (movie "Legally Blond" notwithstanding)
8) where candidate has a PhD
9) where candidate has no BS/BA

you see what I mean? For good or ill, whether it's "right" or "fair" or not, the hiring manager's situation is to get the 600 resumes down to something more manageable like maybe 20. Hell, they may just shuffle them, count off the first 20 and discard the rest simply because they weren't on the top of the stack. Most if not all of these resume attributes have little to do with somebody being able to do a worthy job as a programmer; but that's not the point.

If you're the hiring manager, and you have the time and energy available to actually study 600 resumes, bring all the people in for a personal, say 2 hour screening with **you** [not HR] then you won't care much about these bull-s**t resume attributes. Since actually doing that would cost you something like a minimum of half a man-year on your part, plus maybe a few hundred thousand dollars out of your budget just to shrink the list to where you have your 5-10 'finalist' candidates, you obviously need to cut down the crop a bit first.

So, the issue here wasn't actually about whether a company would discard resumes for candidates without degrees or not...That was just an example of a discriminator to illustrate the main point, like my examples of colored paper or > 1 page length, etc.

Best of luck to you,

Cheers,

anonQAguy
Thursday, December 12, 2002

"why not shrink the pool to individuals who have demonstrated 4 years of accomplishment in a challenging environment?"



According to this statement, wouldn't someone who has held a development position in a reputable tech company for 4 years make him just as qualified (if not more)?

I'll be the first to recommend ANY candidates that have sufficient real world experience over newbies straight off of campus with a degree in their hands and wet behind the ears.

Mark
Thursday, December 12, 2002

I am not saying to not filter based on degree, but to use it as a filtering method later. I would definitely look at experience FIRST, then see if they have any extras that might help them. I don't see why having 3 years IT experience is bested by 4 years of reading books.

Giampiero
Thursday, December 12, 2002

And make sure its a CS degree. non-CS degrees also get thrown out :-)

Rob
Thursday, December 12, 2002

"Hmmm ... you seem to be implying that no one hires CS University grads?"

No Mr. I have a ComputerScience degree, I am implying, that some companies mistakenly believe that they are hiring computer programmers, when they are hiring people who graduated with a computer science degree, and may not be very good programmers at all (at least for a given company).

I am not saying a C.S. is an indicator that you are bad or are unfit to program I am just saying there are other factors, that are about 50 times more important.

For instance when I worked for John Muir Hospital, it was much more important for a programmer to know how "retroactive capitation" worked than how a quick-sort worked, because VB and Access, and SQL all had sorts built in, but none of those products can handle retroactive capitation off the shelf.

Daniel Shchyokin
Thursday, December 12, 2002

<snip>
"Hmmm ... you seem to be implying that no one hires CS University grads?"

No Mr. I have a ComputerScience degree, I am implying, that some companies mistakenly believe that they are hiring computer programmers, when they are hiring people who graduated with a computer science degree, and may not be very good programmers at all (at least for a given company).
</snip>

I was being facetious. 

However, I will humor you further.  All companies must know that CS grads don't know a thing about programming.  I think you are mistaken in your assertion to the contrary.  They are banking on the ability of these candiates to *learn*, which they have quite clearly demonstrated with 4 years of post-secondary education.

Later in your post you indicate that domain knowledge is more important than a CS degree.  I disagree.  Anyone that has a sound foundation in the trappings of computer science can learn these skills.

In the past I have worked a developer/architect in the automotive industry and energy (natural gas/electricity) sector.  These fields have an extrodinary amount of domain specific rules.  I now consider myself an expert in both, without having any prior exposure to either, before taking on these positions.

What does this mean?  I can learn "retroactive capitation" more quickly that my non-CS counter part.

I have a CS Degree and you don't
Thursday, December 12, 2002

Daniel, what does "retroactive capitation" mean?

Justin
Thursday, December 12, 2002

Why do you want to know?

Daniel Shchyokin
Thursday, December 12, 2002

<Snip>However, I will humor you further ....What does this mean?  I can learn "retroactive capitation" more quickly that my non-CS counter part. <snip>

Ah I see, what you are really trying to tell me is that you are a pompous ass, or at least trying to come off that way... but for some reason, I feel compelled to cure you of your "condition".

Can't it also mean, that someone who has domain knowledge may be able to learn to program more quickly than you can aquire domain knowledge?

But, wait, if any knowledge knowledge, is so easy to acquire, why do you need a degree at all?

Daniel Shchyokin
Thursday, December 12, 2002

Mr I have a CS Degree,

If you believe that CS grads ability to read and comprehend is necessarily tied to good programming skills your are sorely mistaken. Although I am sure that there are a good deal of CS grads who know what good coding is about, there are other parts of programming that are usually missed by that crowd of developer. CS grads learn techniques for architecting and methods for solving problems. What they don't learn in school is what customers want to see. Some CS grads don't even know how to use Windows. Without the experience, their knowledge is of little use to everyone except hard-core gaming and server programmers. So, how is hiring a developer who knows the ins and outs of C++ gonna help you when they can't design an interface that people will actually use? Linux is one of the most popular platforms to do coding on for University students. And we all know how user-friendly Linux is.

Giampiero
Thursday, December 12, 2002

University is geared to pushing people through and provides tremendous facilities for "getting a degree." I don't see why "getting a degree" is seen as being difficult.


Thursday, December 12, 2002

There's a lot of rubbish about degrees being discussed in this thread. Degrees expose you to knowledge and test your ability to understand concepts, so in this sense they have value. Does it mean you don't have the same ability if you don't have a degree? Of course not.
I studied mathematics at university and loved every minute of it, has it helped me in my work, yes.

It's part of the 'picture' of an individual, and generally a very positive part, that's about all.

As for its worth, well it depends upon the field, would you go to a doctor without a degree?

Most people will hire people without degrees but they need to be reference checked and they need to stack up.
Otherwise, there's no proof that they even know how to turn a computer on.

Alberto
Thursday, December 12, 2002

"Some CS grads don't even know how to use Windows."

That's me! When I graduated in 1995 I had never used a Wintel machine, having avoided that architecture like the plague. Got my first post-grad job and the first thing to be done was write device drivers for Windows 95 and 3.1 and also write Windows 95 applications. i had stuff working the first week and it only got better from there on out. The MS development tools were fantastic even back then and I really liked the API. By the end of my first month all of my time was being billed to clients at $165/hr and they were constantly asking me questions since I was 'the Windows expert.'

Outside of work though I have never used nor had any interest in using a Wintel machine or OS. That's the sort of thing I have to be paid to do. It's fun sure but there are things more fun I do in my spare time.

I can spit farther than you can
Friday, December 13, 2002

<snip>
Ah I see, what you are really trying to tell me is that you are a pompous ass
</snip>

No need to get testy.

<snip>
Can't it also mean, that someone who has domain knowledge may be able to learn to program more quickly than you can aquire domain knowledge?

But, wait, if any knowledge knowledge, is so easy to acquire, why do you need a degree at all?
</snip>

This is just silly.

I have a CS degree and you don't
Friday, December 13, 2002

<snip>
If you believe that CS grads ability to read and comprehend is necessarily tied to good programming skills your are sorely mistaken.
</snip>

I don't recall making such a statement.  However, it would seem to me that reading *does* seem like a good place to start.  Especially important, I would think, is comprehending said material.

<snip>
What they don't learn in school is what customers want to see.
</snip>
Could you learn this at a technical school instead?  What about no schooling at all?  The only place this skill is aquired is on the job.

<snip>
Some CS grads don't even know how to use Windows.
</snip>
And they probably don't know VB, XML, Web Services or DCOM.  So what?  They have been afforded the skills to learn these technologies and use them appropriately.

<snip>
Without the experience, their knowledge is of little use to everyone except hard-core gaming and server programmers.
</snip>
Not true.  I had no trouble landing a position, straight out of university, with a consulting firm which produced biz apps.  They thought my knowledge was valuable.

<snip>
So, how is hiring a developer who knows the ins and outs of C++ gonna help you when they can't design an interface that people will actually use?
</snip>
My point is that this skill could be learned very easily.  Building UI's isn't rocket science. 

I have a CS degree and you don't
Friday, December 13, 2002

I have a CS degree and you don't:
You really have a huge fucking ego don't you? Well I'm laughing because the code will knock even the biggest chip off your shoulder and all degrees in the world aint gonna save you. The code will humble you regardless of your experience or stature.

Ian Stallings
Friday, December 13, 2002

Not all employers base their selection criteria solely on degrees.

But we definitely weed out "good" resumes from "bad" resumes.  No company can do otherwise - we've never advertised a position, but still get hundreds of resumes a year (and we are a smaller company than FogCreek).  I suspect that larger companies who are actually advertising for resumes get thousands and thousands.

So there's got to be some criteria - be it luck of the draw or a degree or whatever.

Our main criteria currently is whether the potential candidate can follow instructions or not.  (We have very precise resume submission rules, including the format of the subject line and the type of attachments we accept).  Believe it or not, 90% of our submissions fail this step.

The next hurdle is whether the cover letter is any good. This means absolutely no grammar or spelling errors, and tailored to our company.    It should tell me that the candidate has taken the trouble to research our company and knows a) what we do and b) has an idea of what sort of job he or she would like with us (and whether it's at all realistic given what we do).

This usually weeds out another 75% of those who got through the first step. 

Then, someone will actually get to the resume and read it.  And experience counts here.  A candidate that has a degree but has done nothing else aside from flipping burgers would have to have really impressed me in the cover letter to get  an interview, because we can't afford to spend a couple of years in training (our experience of the time it usually takes such a candidate to get up to speed).  A candidate with a ton of real world experience and / or who strikes me as really knowing what they are talking about - that's worth a ton more than a degree.

However, we can do this because our first two criteria actually weed out enough candidates to be manageable.  But if you were getting thousands of candidates, you'd have to add additional criteria, and honestly, a degree is not a bad criteria since it is fairly objective.

Phibian
Friday, December 13, 2002

So, the guy who talked about "discriminators" is pretty close to my point (at least as it relates to the job market).

I'd agree that somebody without a CS degree can outperform somebody with one.  But, in a job market where each position gets 600 resumes, hiring managers use an axe, no a scalpel to prune resumes.

Hiring managers are fully aware of what they are doing.  They look at the big pile of resumes (or that folder bursting with e-mail) and say, "Shit."  Then, they pick a criteria, say CS degree.  Then, they sort by CS degree: pile with degree and pile without degree.  Then, they take the pile with degree, assuming that it is not too small, and, if they're a conscientious manager, sprinkle a few of the "better" non-degree people into the pile.  ("Better" is arbitrary, just an impression from reading the resumes.)  They know full well that they are giving the shaft to some people who don't deserve and may even be great candidates for the job.  Then, repeat.  Until you got 20-40 resumes.

But, it gets worse.  Believe it or not: candidates lie!  At a conference, I heard the statistic that 50% of all information on a resume is either intentional inaccurate or an outright fabrication.  So, even though the resume says that a guy has a CS degree and he gets into the "consider" pile, he may have lied (pushing out somebody else who didn't lie and may be a better candidate).

Then, of course, there are experts who wrote a bad resume.  Or, just described their experiences poorly.  Or, emphasized the wrong thing.

The whole process is pretty arbitrary at the 600 people level.  Sure, you'll weed out the liar at the interview (hopefully, though being a liar doesn't mean that somebody is incompetent or dumb, just unethical) but you'll have wasted time.  In fact, basing your choices off resumes, a manager might have 600 resumes but not find a great candidate.  Then, he has a choice: pick the best so far or start the whole damn thing all over again with no guarantees (wasting more weeks).

No wonder managers prefer to hire people who have a personal contact inside the company.

Anonymous Coward
Friday, December 13, 2002

The fact is whether you have a degree or not if you are applying for jobs with 600 applicants you are likely to be out of work for a long time.

I have been programming for 20 years now and have never got any work through traditional recruitment processes or agencies. I haven't even updated my CV in the last 10 years.

The only way to get ahead is milk your contacts, a referal from a friend or colleague can get you right past HR and in front of the decision maker.

Tony E
Friday, December 13, 2002

Hi,
I'm a little late to this thread, but reading it all at once maybe I picked up on a trend:  you all talk about "what HR does" and "what the hiring manager does".  Don't any of you read resumes yourselves??  Why would you ever trust HR, or even a single manager, to control the selection of your future colleagues like that?

I'm in the bioinformatics dept of a biotech company, so the mix of programming skills + biology knowledge we look for is a bit different.  But we still have to solicit resumes and hire, and we're trying to tell productive programmers from book learners just like any company.

We receive 200-300 resumes per position.  HR does not filter any of them.  They land in a pile on the hiring manager's desk, get divided into random groups of ~40, then passed around to the 4-5 people who will be working most closely with the new hire.  We read (well, scan) and rate the resume Yes/Maybe/No.  When you're done with a pile, you swap.

Yup, that's right: 4-5 programmer/scientists scan all 200 resumes.

Sounds terrible?  Sounds like it will take all week?  No, it really doesn't.  You get really good at scanning resumes for key skills and experience (NOT just degrees!), and you get an overall view of the applicant pool that is really useful.  (There are also some really choice moments of humor, like the student who wrote that he learned Perl in a week and Java the week after. :-)

When we're done, we typically have 20-30 resumes that everyone rated "Yes".  The rest are tabled.  The "yeses" are read in more detail and prioritized by the hiring manager, who starts at the top with phone interviews.  Then people start getting invitations for in-person interviews, and eventually we hire.

Even when I hired a student summer intern this year, I went through this process with ~150 student resumes, with the exception that we did multiple rounds of phone interviews and no in-person, to cut costs.  We are that serious about hiring.

Yes, it takes a bit more effort on all our parts, but it is totally worth it:  we have a VERY congenial and productive group here, with turnover way below industry averages.

In a contrasting story, my first real coding job was at a 10-person start up, launched by engineers.  At some point we were ready to hire "real" management.  But only the 3 founders were doing the interviews.  The "VP of business development" they hired was a total ass who didn't get along with any of us grunt workers from day 1.... he was fired for incompetence 2 months later, costing the company way more time and money than it could afford.  He would never have gotten in the door if more of us had been included in the interview process.

So anyway, I don't see how you could use this process I am suggesting for anything over 200 resumes, but if you can get your pile down to that size somehow, distributed reading by team members really helps.  Take control back from HR -- give it a try!

Biotech coder
Saturday, December 14, 2002

If it were up to us on this board, we would take HR out of the equation also.  HR should stick to things like career planning and development, and stay out of technical recruitment.  But higher level management doesn't think the same thing -- sometimes they even let HR do all the interviewing, without having anybody give technical interviews or tests.  Then they're surprised that they can't find any good programmers.

T. Norman
Saturday, December 14, 2002

*  Recent Topics

*  Fog Creek Home