Why Can't Programmers.. Program?

Mike Woodhouse - “As I’m about to start looking for a programmer I shall be able to implement my long-cherished plan of asking candidates to submit a page or so of what they consider to be “good code”.”

So where can we send our resumes/good code?

And yes, I can write the fizzbuzz thing. :stuck_out_tongue:

I must say, that things like this are necessary. I hired developers for a small low budget startup before and you get any hack who has written HTML applying as a “programmer”.

Also, knowledge of the framework is beneficial but does not mean you can write a line of useful code. It means you know how the framework works, and frankly that’s what docs are for.

A true “programmer” can write code without knowing the framework and generally the code will run efficiently and well with only minimal need for tweaking to optimize it for the framework it’s on.

What is recursion and hexydecimal?
.
.
.
.
.
Sorry, couldn’t resist.

all right. At least let’s make it interesting.
Post the tests for FizzBuzz that you’d write before writing code !
Heck, I’ll take unit and/or acceptance tests.

What’s pretty dang funny is how many of the code examples above are wrong. That shows either one of two things, you misunderstood the requirements, or the even more fatal, YOU DIDN’T TEST YOUR CODE. Also the amount of of bombs we drop on suicidal muslim extremists has no bearing on this topic. As for outsourcing my old boss, when told we needed two more guys for a certain project, would say “OK get me 10 indians”.

uglydawg: I don’t even think a BS is enough these days. Completely unable to find a good programming job with mine. I was lucky enough to get a clerical position at my current company, and then the main programmer for my department left so I stepped in.

The problem is I’m still technically in the clerical position because they won’t promote me. :frowning:

The point of the interview should not be just to find a question that will trip people up. I’d get the swapping variables question wrong (well not any more) but I’ve generally do better the more technical the interview. It would seem silly to give the FizzBuz test and say “HA! You got the syntax of the modulo operator wrong (while writing the program out longhand under the pressure of an interview and not having tools to unit test it)! You are NOT a programmer!” It’s the people like that the database analyst I interviewed who couldn’t write a SELECT statement that deserve that ridicule. (Then again you might be looking for an embedded systems engineer who can do the variable swapping thing and not care if they know SQL. It’s not one-size-fits-all.)

Can anyone post the answer to the vowel/even number logic puzzle

I hate these puzzles as well, but because they often hinge on some pedantic phrasing. In “the real world”, there is usually some system against when you can test your understanding normally, some shared organizational expectation of the meaning, or some person involved in writing the spec/question you can go to for clarification. (that is, unless you’re trying to maliciously follow the spec =-) )

Now I’m not actually familiar with this puzzle, but the phrasing makes the answer pretty clear in my head.

“I have a theory that if there is a vowel on one side of a card, then there will be an even number on the other side”

That is, he says “vowel on one side = even number on other”. He’s not saying that whenever there’s an even number there will be a vowel. He’s also not saying that a consonant implies odd number (similar to previous sentence).

You only need to check one card: “B”

I read statements like “demand for programmers is outweighing supply” and “99% of comp sci grads cant write fizzbuzz” and its very encouraging. I didn’t go to school for comp sci, but I could write the fizzbuzz in under ten minutes, including the time it took me to figure out how to use g++ from the command line. I’m by no means an excellent programmer, but if most applicants are really that bad, then I think I could be quite competitive. Is that a bad attitude? I’d like to think not, because unlike many people who would apply for these jobs, I have a desire to learn more than what’s required to stay employed.

What do you think? Should I not even bother if I’m not already an incredible programmer? Would I just muck up a solid team, or is common practice to “level up” on the job?

Unlike most comp sci grads, I’d be in it for the fun of problem solving, with salary in second place.

I have to agree with the premise of the article. Most programmers really can’t program.

We give a very simple programming test that basically asks applicants to sort a list of names by first and last name. It is pretty trivial. Most applicants either totally botch it or end up giving up after four hours or so. Seriously, it has been the best litmus test we could possibly have hoped for.

I saw some comments criticizing the poster for providing the answer to the question.

The difference between skills assessment and sadism is that when you are assessing skills you tell the applicant the answer you were looking for. It’s supposed to be a learning process for both sides.

Not sharing the answer is intellectual bullying and having been on both sides of the interview table it would make me very leery about a firm that won’t answer its own questions.

At my company we use a considerably more complex programming test, but we only hire “senior” level type programmers, and our job postings specifically state we are looking for senior programmers.

For the java programmers, for example, we require them to write a webpage that will get data from a database, display it, let the user edit it, and save it.

For C programmers it’s an exercise in reading and parsing a data file and generating a report of its contents.

These tests also require knowledge a few non-programming things that are pretty basic to the unix programmer (and we include unix in the job postings, so we expect them to know the basics), like telnet and ftp.

Almost all the candidates who take the test literally don’t know how to begin. We’ve had computer science graduates who don’t know unix (when I was in college we ONLY used unix, and I’m not that old - I never had to do punch cards), who don’t understand what IP address is, don’t know how to ftp. We rarely get anybody who even makes it so far as to be able to begin writing code. Of the few who make it that far, very few of those manage to write anything worthy of consideration. It takes a looooong time to find acceptable candidates. I suppose senior programmers are less likely to be looking, and when they do they probably use their network more than job boards, but even so, it’s pretty depressing. Or entertaining, depending on your outlook…

It’s one thing for a person with limited experience, but who has written functioning code, to apply for a senior programmer position, but to not have one single skill requested in the job posting? For a SENIOR position?! I’d like to know what the hell these people are thinking! And we tell them before they come in that there’s going to be a technical test, so it’s not like it’s a surprise when they show up. And even though they know they don’t have any of the technical skills being sought, they still show up and waste everybody’s time.

Almost all of you fail. The requirements clearly say that for multiples of 3 you are suppose to replace the number and since it is part of the same sentence you can suppose they mean the same for multiples of five. However multiples of both three and five are a totally different requirement and should be printed in addition to the times the multiples of 3 or 5 are printed.

You you could just chalk it up to bad requirements from the user :wink:

Wow, double error… I meant to type “A” instead of “B”.

And I got lost in my pedantics. You do need to check all 4 cards.

Since, if a vowel is on either side you have to have even on the other… if you have even on one side, the other must therefore be a vowel. And since anything not a vowel is a consonant, and anything not even is odd (ignoring weird cases like “Y” being sometimes one or another), you end up with all 4 cases covered in your theory.

For exampe: If you have the following set A/2, B/2, 2/D, 3/D.

You only check the “A” and “3” card, and your theory looks good.
Except there’s an even number on the 3rd card (“2/D”), but there’s not a vowel on the back, and you didn’t check it, so you missed it.
You missed it - Theory wasn’t adequately tested.

@zetaprime, sure it does, the whole point is that something is wrong in your education system, it seem to concentrate on graduating people with no skills.

The US doesn’t even have a decent public school system, or a decent public healthcare system, of course these things have a direct impact on the quality of graduates.

Do you even know how much you spend on the military ? It’s completely insane amounts. You alone stand for 1/3 of worlds total military spendings, and thats with less than 10% of the worlds population.

The US is not what I would call a modern country, you may have the gadgets and a great corporate climate but you fail to realize that it’s the people that is the country, I can give you a million examples of this but that’s a completely different discussion.

The military spendings have a LOT to do with the state of your schools today.

asking candidates to submit a page or so of what they consider to be
"good code". I don’t mind if they wrote it or not,

All the better if they didn’t, since it would indicate that they actually read other peoples’ code.

“the count on February 27, 2007 08:20 AM”

are you using employment agencies or are you advertising directly?

if you are using agencies, it could simply be a case of the agencies not giving the candidate the full picture, in the hope that they’ll slip under the radar, and Mr Agent will get his/her 10% commission.

that does happen a lot , and its not the candidates fault sometimes.

I certainly agree with the fizzbuzz test in terms of knowing basic things.

However, on the other hand, there’s a difference between not knowing specific code/syntax, and not being able to learn it quickly if the need arises.

If you just don’t have the mind for the programming, then it doesn’t matter what language you use: your code is going to be confusing, messy, and very difficult for anyone else to maintain or build upon.

I’ve written one student compiler, a Prolog to C translator, numerous small interpreters, major C++ and ksh programs and subsystems, many of which are probably still running in systems around the world. By most standards (faults, easy to maintain, reusable parts), my code has been excellent. Although I would not have trouble with the FizzBuzz program, I do have trouble producing even some simple programs in 10 minutes while someone waits across the table. I suspect that many who can do this produce crap software, because they are willing to start coding before doing any analysis or design.

I had a programming interview recently…I really wish they had asked me the FizzBuzz question. Horrible round table generic questions that don’t prove, to any measurable degree, my capabilities as a programmer.