The Interview With The Programmer

October 18, 2009

If the internet has perfected anything, it's the art of the crappy, phoned-in, half-assed email "interview". For all those who have bemoaned the often pathetic state of internet journalism, when it comes to interviews, you're largely correct. The purpose of most of these interviews is quick and dirty content filler with semi-famous folk spouting off whatever random thoughts they happen to have in their head at that exact moment. The Nixon Interviews, it ain't.

That's why I'm normally not a huge fan of interview books, because interviews take an enormous amount of time and an enormous amount of legitimate, skilled journalistic effort to get right. Almost nobody does.

Imagine my surprise when Coders at Work: Reflections on the Craft of Programming turns out to be that wonderfully rare intersection of uncommonly skilled interviewing and 15 of the most influential programmers to ever touch a keyboard.

coders-at-work.png

Yes, this is the same book Joel recently recommended in his controversial Duct Tape Programmer entry, which is why I was all the more skeptical. But he's dead on. I could (and probably will, knowing me) fill a year worth of blog posts just with the thought provoking quotes and two-paragraph insights revealed in these interviews. It's astonishingly good. If, after reading what these brilliant programmers have to say, you aren't motivated to research some programming topic mentioned inside, pack it in, because you aren't even trying any more.

I also realized Coders at Work can potentially serve as a job interview filter. If the next programmer you interview can't identify at least one of the programmers interviewed in Coders at Work and tell you roughly what they're famous for …

Frances AllenJoe ArmstrongJoshua Bloch
Bernie CosellDouglas CrockfordL. Peter Deutsch
Brendan EichBrad FitzpatrickDan Ingalls
Simon Peyton JonesDonald KnuthPeter Norvig
Guy SteeleKen ThompsonJamie Zawinski

… I'd say that's an immediate no-hire.

Incidentally, I saw the first Stack Overflow user reference on page 265, in the interview with Simon Peyton Jones, who mentions one Norman Ramsey. Hmm, I thought, that name sounds awfully familiar. And indeed it was!

I would be remiss if I did not mention that the author, Peter Seibel, was directly inspired by Susan Lammers' classic 1986 book Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry.

programmers-at-work.png

This is one of my absolute favorite musty old computer books for many of the same reasons. As sources of inspiration go, this one is particularly … er, inspired. Programmers at Work isn't just the archetypal programmer interview book -- it also holds up amazingly well for a book that is over twenty years old. It is a testament to the timelessness of not just code, but the art of coding, as exemplified by these 19 programmers. I believe Peter has legitimately crafted a modern remake that will be relevant for another twenty years. And I hope I don't have to tell you how extraordinarily rare that is among technical books.

(Some -- but not all from what I can tell -- key interviews from Programmers at Work were placed online last year by the author. So if you want to get a flavor of the book, check it out.)

Another notable recent collection of interviews is Masterminds of Programming: Conversations with the Creators of Major Programming Languages.

masterminds-of-programming.png

Although I definitely enjoyed this book, there's something about the focus on programming languages and interview style that didn't quite grab me as forcefully as Coders at Work did. Also, if we're going to do languages, I'd like to see a bit broader representation -- perhaps a Volume II with Smalltalk, Ada, Pascal and so on?

These books are a potent reminder that computers are mostly a reflection of the people using them. In the art of software development, studying code isn't enough: you have to study the people behind the software, too.

Posted by Jeff Atwood
193 Comments

Well, I agree with Jeff(tho' I've snarked off at him before). If you're a 9-5 punch-the-clock working stiff, maybe you don't know who those folks are.

But if you do enough rummaging around and reading, you're going to read about so-and-so who pioneered this, or popularized that, or was pretty good at the hoo-bab. Thing is, if you don't have a good memory or you don't rummage and study, you won't know the Big Kahunas of your area. Either of those is going to disqualify you for a job that requires good memory and some independent study.

I guess it might be the difference between a technician and a professional.

Paul Nathan on October 20, 2009 3:31 AM

Thanks Charlie Lobo to summarize my thought :)

Olivier on October 20, 2009 3:35 AM

I have a similar routine, I ask 'What are your thoughts on Joel Spolsky and Jeff Atwood?', if the answer contains any hint of positivity I know the time to invest in breaking the programmers existing bad habits and building them into a competent, able developer is too great and simply not worth it, especially if influenced by those morons.

Phillip on October 20, 2009 4:27 AM

I had a boss who thought that anybody fond of using a pair of jeans HAD to be dumb. I think Jeff has reached this level too, to my surprise.

BTW, is Jeff getting used to the "fire & forget" way of blogging? I can't find any answer neither this post, nor some of the previous.

Perhaps this blog has reached inertia enough to keep rolling without his interaction, kinda prepetuum-mobile-blog.

oscar on October 20, 2009 4:46 AM

>>>But if you do enough rummaging around and reading, you're going to read about so-and-so who pioneered this, or popularized that, or was pretty good at the hoo-bab. Thing is, if you don't have a good memory or you don't rummage and study, you won't know the Big Kahunas of your area. Either of those is going to disqualify you for a job that requires good memory and some independent study.
What kind of idiot would want to hire people based on their praise of people whose influence stopped being relative - or even tactile - over a decade ago?
I would much rather have a developer with a brain that can work out problems than an idiot that can recite useless trivia.
I enjoy most of your posts Jeff, but the last few days need a reset.

Duna on October 20, 2009 4:46 AM

Jeff, your blog posts used to be 'all winners', but in the last year they have become 'hit or miss'. Well, at least you'll make some money when people click through and buy the books on Amazon, which you've conveniently linked for us

While I agree that understanding the history of computing is extremely important, I wouldn't give a programmer an automatic 'no-hire' for not knowing these names. It's exactly the type of closed minded, binary decision process that old school business always tries to impose. If a developer wasn't aware of Knuth's, "The Art of Computer Programming', it would send up a red flag, and I would question him/her in greater depth with regard to algorithms.

As a side note, I used to ask potential development managers if they read 'Joel on Software', and again it would raise a red flag if they hadn't. But now, your and Joels posts are less relevant and poignant than they used to be. #FAIL

Gene on October 20, 2009 4:50 AM

Paul Nathan says, "But if you do enough rummaging around and reading, you're going to read about so-and-so who pioneered this, or popularized that, or was pretty good at the hoo-bab."

Yes, which would explain why the name Donald Knuth is *somehow* familiar, a common reflex for people who 'fail' Jeff's test.

Or course, the implication is that I don't give a crap about reading up on software engineering but from the volumes of self-study I've done I couldn't remember specifically where Knuth fit in. Did he invent one of the many programming languages I don't use? Was he instrumental in developing Unix? Is he one of the GoF? Or did he find/popularize some algorithm?

Is that bit of trivia *really* a deal-breaker? Or is it better that I know which container has the best algorithmic complexity for what you want to do with a collection of objects?

By all means, do your best to guage the passion and affinity for extra self-study in any candidate - but it is foolish to think you can grade effectively testing such specific name-dropping and factoids.

Sean on October 20, 2009 5:31 AM

How come no one's mentioned this famous developer?

http://www.dba-oracle.com/images/redneck_smoke.jpg

Steve on October 20, 2009 5:45 AM

I wonder how many of the guys on the list know about each other.

Bobby on October 20, 2009 5:46 AM

I better go and click on the Amazon links, whilst sending the CodeHorror referrals, and purchase those books or i won't have any chance of ever getting a job - and risk losing my current one!

Oh wait, i forgot that i'm not that easily manipulated.

Bobby on October 20, 2009 5:54 AM

As someone previously mentioned, it is important to differentiate between name dropping and actual proper familiarity with the works of one of the luminaries of the field.

Being able to say "Knuth is that old guy who wrote all those big books on algorithms" isn't at all impressive compared to actually having read his books. I'd rather know if you can tell me the difference between NP-Complete and NP.

Similarly, I don't care whether you know that Peter Norvig wrote "that AI book", I'd rather know whether you're familiar with the "no free lunch" theorem.

You might know who Ken Thompson is but can you tell me the advantages and disadvantages of micro-kernels and monolithic kernels?

etc etc etc, I could go on. For those of you who actually know who those above 3 people are, can you then follow that knowledge up with actual knowledge of that field? I doubt it for most.

Oleh on October 20, 2009 6:12 AM

where in the hell is John Carmack?

Jinwe on October 20, 2009 6:21 AM

Coders at work is an excelent reading!! It's really cool to know a little about how those programmers think and how they write software.

Michael Paul on October 20, 2009 6:56 AM

I admit that I don't know all of the programmers on that list. Specifically, I've heard of Brendan Eich, Douglas Crockford, Brad Fitzpatrick, Donald Knuth, Ken Thompson, Joshua Bloch, and Jamie Zawinski. Of those, I only know what Eich, Fitzpatrick, and Thompson did (well, I know Knuth wrote some books on algorithms).

Of the ones I do know, I fail to see why two of them are important.

For instance, why would I expect people to know Brad Fitzpatrick? His major claim to fame is that he created Livejournal. I know his company created several technologies used by it (memcached, perlbal, etc...), but I was not aware that he was personally involved in any of them!

Also, why would you expect people to know Brenden Eich, the guy who created the mess that is Javascript? I only found out who he was when the browser makers rejected his ECMAScript 4 proposal.

R. Bemrose on October 20, 2009 8:12 AM

this blog sucks

whocares on October 20, 2009 9:35 AM

I couldn't agree less. The biggest mistakes I've ever seen made in hiring developers in the past, are programmers who won't move with the times.

Donny on October 20, 2009 9:51 AM

"What are your thoughts on Joel Spolsky and Jeff Atwood?"

Instant hire: "Who?"

Mike Judge on October 20, 2009 11:02 AM

The coders we despise are the guys that waste all of their time reading some BS written by Joel or Jeff. Joel is busy managing a company that wrote fogbugz. If I can remember writting a full blown helpdesk system is easy as pie...

Jeff and Joel on October 20, 2009 11:41 AM

I'm amazed at how many people doesn't even know Knuth. He's the father of algorithm complexity, Big-O notation, analysis of algorithms.

Sure, there are many people who don't know what that is either, and I couldn't care less about them. But I'm guessing many of the people complaining do know that linear complexity is better than exponential complexity. How can one study such subject and not have an inkling of who Knuth is, I can't fanthom.

I liked the one mentioning rivetters, and asking if they should develop a love of rivetting. Surely not, as long as they don't pretend to be engineers. There are no rivetting jobs with computers, just engineering jobs being done by rivetters who think that's all there is to it.

Daniel Sobral on October 20, 2009 11:54 AM

HA HA! These comments are hilarious!

blabla on October 20, 2009 11:54 AM

If someone's teaching you how to program, names are the last thing you should be focused on. It won't magically transform you into a good programmer either, only practice will.

This blog is pretty annoying though.

*whistles and blows the unsubscribe button*

Daquan Wright on October 20, 2009 12:09 PM

Controversy again. I fall on Jeff’s side, knowing at least one of the names is a reasonable indication that the candidate doesn’t just program for a living but lives for programming (religious overtones indeed). It's difficult to go through any amount of books on programming without coming across one of the names.

And don't forget to look up who called premature optimization the root of all evil.

Geoffrey Summerhayes on October 20, 2009 1:58 PM

Worst post ever

Oh yeah lets not hire the guy who knows how to write programs lets hire the guy who knows the names of some. By the way I actually know 4 from your list so it's not sour grapes it's just a terrible way of eliminating candidates and I don't expect a programmer to make illogical statements like this.

pete on October 21, 2009 2:00 AM

Q>
"If the next programmer you interview can't identify at least one of the programmers interviewed in Coders at Work and tell you roughly what they're famous for …
… I'd say that's an immediate no-hire. "

That is probably the single stupidest thing I've heard you say. Granted, you're normally pretty much right about this stuff, but that is an elitist statement
Q

Completely agree. This is one of your stupidest statements ever Jeff. I don't know a single guy on that list and I've been programming for 20 years. Who gives a painted whore who did what first?

Regis on October 21, 2009 2:21 AM

Time to start my own blog!

JustAGuyFromTheIndustry on October 21, 2009 2:37 AM

I wouldn't hire any of you f**kers! I'd probably just have to rewrite all your code anyay.

:-p

Dave on October 21, 2009 3:01 AM

I do not know why all these people read this trivia here on this blog.

It is really a mistery for me and posts like this do not help to explain it more - an immediate no-hire if you do not know somebody?????? hello - not all programmers have time and will to sift through all those semi famous biographies and interview books. Some might actually have to well program or have a life besides programming - can you imagine?

Maybe its like in one of the Simpson shows where Homer as a Crusty replacement in his tv-show started talking about serious things - taking an advice from Lisa - whereas before he was just chatting away bar talk with Lenny: Watchers immediately started leaving. Guess its the same with this blog: Just write enought emotional touchy trivia and people keep coming.

Ben on October 21, 2009 3:28 AM

Well I can understand why people do not know any of the programmers, but seriously.. Donald E. Knuth?

Come on guys, you can't tell me, that anyone who is even slightly interested in algorithms (ok I agree that there are some areas where that knowledge won't help you) could manage to circumnavigate that name. It's not about knowing his whole biography, but if you couldn't even recognize the name..

Voo on October 21, 2009 3:42 AM

"It's nice to read about ideas of other people. But worshiping them because the are famous or so called great thinkers is a big mistake IMHO. You can get inspired and excited, but thinking that if you know their names or what they did will improve then you are seriously mistaken."

uhhh... that's a pretty fancy strawman you've built there. Must be some pretty nasty crows you're trying to scare off.

Breton on October 21, 2009 4:39 AM

Well my background isn't the 'classical' from Uni to the workplace , being a RPG guy who shifted to CRM work .
I recognised Knuth ( Thanks Charles Stross !!, but no Torvalds , Gosling or Sinclair for the Brits out there...), but I think the major issue trying to be discussed is folks who go into the IT world just cos its seem to be said well paid and have no interest in it besides the pay cheque .

Now I've worked with great folks who could be described as being uninterested as they don't do stuff at home or show much enthusiasm , but were Professional about their jobs.
If you are looking for a bright eyed kid then at least some knowledge of the history would be helpful , it puts things into context on how they got into it and why they want to be there. Sometimes though , its not the be all and end all of an interview - experience, reliability and just common sense can be a much greater factor . Depends on what you do and want .

UriGagarin on October 21, 2009 5:32 AM

It's nice to read about ideas of other people. But worshiping them because the are famous or so called great thinkers is a big mistake IMHO. You can get inspired and excited, but thinking that if you know their names or what they did will improve then you are seriously mistaken.
Making this a job requirement makes me think that you lack yourself creativity and think other people do so, too. Therefore they must follow the "giants" to do anything useful.

I really hate when people start this stupid worshiping, get inspired but also think you can be at least as creative or even better. Don't be a follower, be a creative leader yourself. More enjoyment and advancement for everybody.

Maël on October 21, 2009 7:40 AM

"What kind of idiot would want to hire people based on their praise of people whose influence stopped being relative - or even tactile - over a decade ago?
I would much rather have a developer with a brain that can work out problems than an idiot that can recite useless trivia."

And you don't think research is part of problem solving?

Breton on October 21, 2009 1:05 PM

Hmm. Can't read right now. Too busy coding...

I respect your opinion, Jeff. It's definitely good to be aware of some fundamentals ideas developed by famous computer scientists and programmers, even though I doubt that it's important to remember their names and who did what.

But I guess at some point you should just shove all those books aside and simply start coding, tackling problems as they come by. I'm sure I don't have to tell you that, seeing that you're a successful entrepreneur.

I could read books about algorithms and design all day long, but at the end of the day I need to enter the unforgiving, imperfect and messy real world. And we all know that theory and practice do diverge.

You can try to describe and understand each and every detail of a can of worms. It stays a can of worms nonetheless.

ZuBsPaCe on October 21, 2009 1:52 PM

And another post that prooves Jeff indeed is an idiot.

Andrew on October 22, 2009 4:36 AM

I would hire anyone rightaway that doesn't know Jeff Atwood ;)

Andrew on October 22, 2009 4:38 AM

>>>
"What kind of idiot would want to hire people based on their praise of people whose influence stopped being relative - or even tactile - over a decade ago?
I would much rather have a developer with a brain that can work out problems than an idiot that can recite useless trivia."

And you don't think research is part of problem solving?


Research - sure, I'll buy that for a dime. I still don't see how you relate quality of hire to who invented the wheel to fix a puncture. Or who coined the CMOS to support a computer. Or hell, who invented Javascript to develop a web app.

There's a lot of folks out there that -do- know this trivia though. Some people call them gifted. The medical community calls them idiot savants.

Duna on October 22, 2009 4:43 AM

I knew what 7 of them were responsible for, but I admit that I am a rubbish coder.

Sorry, but this better not be the only interview question you ask.

Not that I'm looking for work.

Uncompetative on October 22, 2009 8:26 AM

Why isn't John McCarthy listed? ;-)

Ryan on October 22, 2009 8:27 AM

"Research - sure, I'll buy that for a dime. I still don't see how you relate quality of hire to who invented the wheel to fix a puncture. Or who coined the CMOS to support a computer. Or hell, who invented Javascript to develop a web app."

If you work seriously with javascript, like I do, sometimes you gotta ask Brendan a question. You can't do that if you've never heard of the guy, or you don't care enough about javascript to find out.

if you work seriously with programming, sometimes you might want to .. you know, become a better programmer. In which case Donald Knuth and his Art of Computer Programming series might be the first name you come across.

If you don't care about programming at all, maybe you've never heard of any of them. Maybe you think you're still a good programmer, in which case: good for you. It's important to have confidence and self esteem. But maybe your self esteem is easily punctured by random comments on internet blogs, in which case you might find yourself whining about how a certain blogger is an idiot, rather than, you know... Finding out who those people are, and figuring out why they might be important.

So we have here represented in the comments two broad approaches to problems. In one approach the programmer has stopped and complained loudly, and called Jeff Atwood an idiot. In the other case, the programmer as quietly investigated the problem, and used it as an opportunity for self improvement. This dichotomy of problem solving approaches is very indicative, I think, to how I would expect the programmer to approach and solve *programming problems*.

So, perhaps, knowing or not knowing a name on the list isn't an entirely good indicator- But how loudly someone complained in the comments section, most definately is.


Breton on October 22, 2009 8:41 AM

I admit I only recognized three names :

Bloch because he wrote Effective Java and I'm a java programmer. BTW, if you are a java programmer and you haven't read Effective Java please go buy it for god sake.

Knuth because his name is almost in every computer science books

Steele because I have interest in Lisp/Scheme.

To the people complaining that they are to busy coding stuff. You need to train yourself (i.e : stop writing code and start reading stuff) to get better. Practice is essential and it is probably enough for your day-to-day job. But to improve you need to train yourself. One way of doing it is to read some well known books. If you read those books I will ended up reading one of those names.

So what Jeff meant, in his bold statement, is that he will only hired people that are willing improve.

Julien Grenier on October 22, 2009 11:04 AM

Can't identify at least one programmer?

I couldn't identify any of them.

Why? Because I am busy developing and building software, not preening myself reading what other programers have to say (other than reading this blog once every two weeks).

So, I don't care. I know what I am capable of, and if someone used that critia to hire me, I am glad they didn't, because I would be working for a foo foo, look at all the books I read, I can't program anything, moron.

And by the way, how can you continue to write this blog every day and still be a viable programmer?

If ur bloggin', you ain't codin'...

Don't Hire Me on October 22, 2009 11:46 AM

sometimes riddles/puszzles are a great way to learn about a person.

I was once asked to calculate the amount of gas stations in Arizona, i didnt do any math and answered: "Two. The one closes to my house and the one closest to work."

brian on October 22, 2009 11:46 AM

>

3. Programmers who look by the window all day long (and yet, somehow, manage to get paid as programmers).

Anonymous on October 22, 2009 12:01 PM

Coding Horror again.I do have paid much time in coding ,i was picked up as software analyst,but i know situation that coders face.

Thanks for your blog which has given so much information about coders

weblogica on October 22, 2009 12:04 PM

I bought the book immediately, since I loved Susan Lammer's book Programmers At Work, which I bought it when it first came out and actually got Bill Gates to autograph the book for me at Comdex one year, sometime in the 80's. I still have the book. I asked him how he knew how to write Basic for the Altair, and he said, well, it was the third time I'd written Basic. I tried to get him to write, "to jeff - thanks for all the help", but he wouldn't, he just signed it.

There's a feeling I get reading Coders At Work, that these guys were doing things at a young age that I still can't do after 30 years of coding. It's a fascinating read that you just can't put down. One common theme is that you should be reading other people's code, which I don't do enough of.

I love the book, it's awesome. I've also read Studs Terkel's book Working and the follow up book (not by Studs) called Gig. Those are also good books in this same category.

Jeff Lorenzini on October 22, 2009 12:24 PM

I think we programmers (phew, I am one now :-) ) tend to compile blog posts - one error, or a different syntax, and Bam! you have a 100 compiler errors.
What I've noted for a long time is that Jeff Atwood does not write code in his blog posts. He writes (emotionally charged?) *English*.
Defending him when he is such an authority who should not make mistakes? Maybe.
But the tone is of leisure, clearly, of encouragement, rather than strict compilerese.
It's a blog, and we probably should not spend time reporting the same error. He's not a source code generator here and we're not compilers.
I'm guilty of being a compiler too, but then I forgive myself too!!
:-) :-)

Be peaceful, write code, create stuff, make merry!
Take Jeff seriously, but maybe not literally and definitely not syntactically (error msg : error ratio ~ 10+ ) so.

MarginOfError on October 22, 2009 1:06 PM

>Come on guys, you can't tell me, that anyone who is even slightly interested in algorithms (ok I agree that there are some areas where that knowledge won't help you) could manage to circumnavigate that name. It's not about knowing his whole biography, but if you couldn't even recognize the name..

What the hell does his name have to do with algorithms? Please explain that?


And this bloody capatcha has gone mad!
It's like irobot or something.

TrXtR on October 23, 2009 3:59 AM

This is one major difference between Computer Science and History. In History, you have to know WHO discovered America. In Computer Science, you need to know HOW to code various types of sort. The person who first invented a type of sort is much less significant than knowing how to actually do it.

I've heard several of those names before, but I couldn't tell you what any of them did. Why? Because it simply is NOT significant to be able to develop good software. I would much rather someone know how to actually apply the right technique at the right time rather than someone who knows a bunch of CS trivia.

Trivia = matters or things that are very unimportant, inconsequential, or nonessential; trifles; trivialities.

If you come across a software developer who seems to know how to code but can't name anyone on that list, please send him/her our way. We will gladly take them on our team.

Joe on October 23, 2009 7:08 AM

C'mon, you all know that trying to figure out who is going to make a good programmer is really a crapshoot, so people end up picking criteria that is very specific to them. Jeff's criteria means you would be a good programmer to work with Jeff, who has a very codified world view. It's about finding a programmer that is not just "good" is some unmeasurable way, but will make a good fit within the culture. I'd personally say that anybody who can't hear an opinion that they disagree with without calling them an idiot would be a no-hire.

And if you are commenting on a blog about programming, are you "passionate about your craft", or just a time-waster who if they were really passionate about their would be writing code. Hmmm, I may have to let myself go.

Brent Hoover on October 23, 2009 8:24 AM

I only recognized Knuth and Eich and couldn't tell you specifically what they did other than Knuth's saying about premature optimization. I'm was a CS major, took a history of computing class in college, have been programming for 25 years, and am generally well read. Where's Babbage, Von Neuman, Turing, K&R? Your list is more like something I'd expect to see in People Magazine, not historical/theoretical signficance.

JohnOpincar on October 23, 2009 9:17 AM

>>Come on guys, you can't tell me, that anyone who is even slightly interested in algorithms (ok I agree that there are some areas where that knowledge won't help you) could manage to circumnavigate that name. It's not about knowing his whole biography, but if you couldn't even recognize the name..What the hell does his name have to do with algorithms? Please explain that?
Well if you are a genius who doesn't need to read anything about certain problems, then, yes, this doesn't apply to you. If you can't invent every complex algorithm out there yourself and have to read books or search the net, you'll almost certainly stumble upon Knuth.

I mean half of the books about these algorithms were written by him and the other half quotes him.
The Art of Computer Programming is one of the best and certainly the most comprehensive book about the whole subject out there and a great reference.

Voo on October 23, 2009 9:32 AM

"If the next programmer you interview can't identify at least one of the programmers interviewed in Coders at Work and tell you roughly what they're famous for …
… I'd say that's an immediate no-hire. "

This is incredibly stupid!

This blog is becoming worst and worst everyday! :(

Raphael on October 23, 2009 9:42 AM

Jeff,

Thanks for the insanely kind words about Programmers at Work. Pretty amazing the interviews continue to have legs given the speed of change in computer world. No doubt I was lucky with my first PC wave timing and getting access to such incredible young talent! And it's nice to see Coders At Work carry forward the tradition.

Susan Lammers on October 23, 2009 11:55 AM

It's really moronic, Jeff, when you yourself read a few books, like them a lot, and then declare that everyone who hasn't read them is not good enough. You too were at a point where you never heard of these guys. You're not any better. We too could zoom in on one particular aspect of the computing industry and self-declare it a must-have knowledge where you would fail at.

Furthermore, you fail to see the realities of the programming world, where at the most 5% would have the passion required to know this kind of stuff, and the rest just does it as a job.

Ferdy on October 23, 2009 12:37 PM

Haha,
I love interview of people who really did anything admirable.Anyways, i loved the comments posted by the guys. :)

Ashish Jha on October 24, 2009 10:26 AM

thanks for all admin
very good

ben 10 oyun on October 25, 2009 2:31 AM

tldr; trolls and nubs don't know about my EXPERT PROGRAMMER skills

I couldn't read past about the top 50 comments so forgive me if I repeat; however, aside from the obvious trolls, there are some obvious pride-hurt programmers and obvious newbies to the field.

Joking or not, Jeff's statement that has caused so much preening has struck such a chord because it is truth.

My example, why would we ever want to know Knuth?

Knuth solves problems. Entire classes of problems, such as the _exact_cover_ problem, which _sudoku_ is a sub-problem of. He often does it in these interesting and efficient ways, such as the Dancing Links technique to efficiently solve this _exact_cover_ problem.

Why do I care about these things? Look them up. The implications are vast. Surely by now in these blog circuits you've heard about the AGILE programming DESIGN PATTERN advocate who tried to solve sudoku and got little more than a board representation in hundreds of lines of code. He could not even solve the sub-problem that Knuth solved completely, elegantly, and efficiently.

Knuth is also into provability, and proving programs correct. He has been known to write programs in pencil in longhand in notebooks before they ever reach the computer.

Maybe if you didn't know anyone on this list and were upset by the comment, you should pick the book up, read it, and then quite easily pass the simple and worthwhile red flag test put forth.

Anonymous Programmer on October 25, 2009 5:17 AM

tldr; trolls and nubs don't know about my EXPERT PROGRAMMER skills

I couldn't read past about the top 50 comments so forgive me if I repeat; however, aside from the obvious trolls, there are some obvious pride-hurt programmers and obvious newbies to the field.

Joking or not, Jeff's statement that has caused so much preening has struck such a chord because it is truth.

My example, why would we ever want to know Knuth?

Knuth solves problems. Entire classes of problems, such as the _exact_cover_ problem, which _sudoku_ is a sub-problem of. He often does it in these interesting and efficient ways, such as the Dancing Links technique to efficiently solve this _exact_cover_ problem.

Why do I care about these things? Look them up. The implications are vast. Surely by now in these blog circuits you've heard about the AGILE programming DESIGN PATTERN advocate who tried to solve sudoku and got little more than a board representation in hundreds of lines of code. He could not even solve the sub-problem that Knuth solved completely, elegantly, and efficiently.

Knuth is also into provability, and proving programs correct. He has been known to write programs in pencil in longhand in notebooks before they ever reach the computer.

Maybe if you didn't know anyone on this list and were upset by the comment, you should pick the book up, read it, and then quite easily pass the simple and worthwhile red flag test put forth.

Anonymous Programmer on October 25, 2009 5:18 AM

I'm in an wrong part of the industry. I've also found that having a PhD degree correlates strongly with no-hire as well. Our best hires have been those who've had to write a lot of software in the pursuit of some unrelated degree. Maybe I should pick the book up, read it.

Half on October 26, 2009 3:23 AM

Knuth is also into provability, and proving programs correct. He has been known to write programs in pencil in longhand in notebooks before they ever reach the computer.

Half on October 26, 2009 3:25 AM

what a bunch of idiots on here

its very simple

would you hire a physicist who doesn't know who Fermi is ?

well, its not important who you know, its what you know.
yeah, right [sarcasm]
that's just an excuse for people who don't know anything

I don't have time to read biographies about physicists. I'm to busy working.
yeah, right [sarcasm]
maybe the reason you're so busy is because you're so uneducated you don't even know the basics, so what should be an easy assignment is difficult for you

if you don't the basics, the big names in the history of your profession, then you're you lack the education to excel at your profession

james L on October 26, 2009 4:26 AM

@james L
>>would you hire a physicist who doesn't know who Fermi is

If he had the skills, abilities and personality that matched the company I run, yes.
You still don't get it do you. It's got so much less to do with knowing about famous names, than it is about knowing your job. I bet Fermi didn't have a clue about Oklo at the time.

Anu on October 26, 2009 11:10 AM

I thought Knuth was a white bear?!?

Anonymous on October 26, 2009 12:48 PM

Thanks for hosting codinghorror.com and sharing your ideas and opinions, Jeff. Forget about the crazy people who have no manners when they are a guest on your site.

Vadim on October 27, 2009 5:54 AM

There's something about this article that reads very much like a Reading Rainbow book review.

*BUH-DUM-BUM!*

Anonymous on October 27, 2009 12:55 PM

I know some of those, don't know some others. I still don't find the correlation between one's ability to cite Computer Science biographies and one's ability to work software development/engineering with an acceptable level of quality. I'd like to think that was a joke, but knowing how extravagant software folks can get, I would not be surprised if were not.

Engineering disciplines in general, and software in particular, seem to attract certain colorful characters. Bright notwithstanding, some are incapable of functioning in a team, under pressure, with the heat right on the neck when the pedal meets the metal.

It's not just about how clever we are, or deep our knowledge of historical/technical minutia is. It's about organizational and interpersonal skills combined with sound software engineering principles and that talent (that usually comes with experience) that lets you know when to do things by the book and when it is time just to hack it and deliver it.

Those are the things that count when it comes to hiring people. Nothing else.

Luis Espinal on October 27, 2009 1:53 PM

I'm still not seeing how wilful ignorance correlates to someone who's worth hiring. Sorry.

Paul Nathan on October 28, 2009 4:08 AM

I'm still not seeing how knowing a list of names by heart correlates to someone who's worth hiring. Sorry.

Burpy on October 29, 2009 6:09 AM

If you don't like it, quit subscribing, quit reading, quit being so pompous and commenting on how superior you are.

travesti on October 29, 2009 9:54 AM

I got a little worried when I first saw that list. I barely knew anyone but then I did a little poking around and found that I was quite familiar with many of their works.

I guess remembering their names was the important part that I missed.

Noted.

Steve-O on October 29, 2009 12:31 PM

I am reading Coders at Work now, but I have been very disappointed.

I am not a big fan of that style (Interverviewer:... / Response:..., etc.). It's kinda lazy on the author's part.

I've been coding for well over twent years and a lot of stuff, specifically acronyms, are puzzling to me.

I don't want to keep a dictionary of technical terms with me while I am reading a book. That's the kind of stuff that should be cleared up by the author.

There have been a few aha moments, but I could count them on one hand.

Michael Haines on October 30, 2009 11:56 AM

It's odd that he didn't mention Programmer's at Work anywhere in the credits of the new book?

Corey on October 30, 2009 1:24 PM

thanks for all admin
information is the most beautiful treasures

sikiş on October 30, 2009 1:39 PM

It seems that the standard argument to support the "no hire"-Theorem is "i cannot imagine how to not know this names if you are interested".

Beside the fact that this no argument but a shift of the burden of proof, it is pretty simple to explain how.

Take a hobbyist, who works, but likes to inform himself about this fancy O-thingy. Now he searches the Wiki. He finds out, that the father was a german guy called Landau (not, as previously statet, Knuth).
If the hobbyist now fights his way through 5 screenscrolls of Math (that minus the links he clicks to actually get the Math), he learns that it this already invented knowlegde was first applyied in computer science by knuth. If he cares to read the little History paragraph after the mind-boggling coolness of the stuff just learned.

It's even worse when he is german-speaking: in the german wiki, knuth is not even mentioned on the O-Notation-Page.

If he decides to study computer science, the hobbyist may be taught this topic the way he was taught analysis in school: without a historical detour to Leibniz or Omar Khayyám. At least that's how i remember my "Grundlagen der Informatik I" class: straight to the point.

And please dont mistake that as an excuse: Knuth was the name i recognized.

And comparing Computer Science to other fields does not fit here.
A Phsyicist will have heared about Newton, because it's called "Newtonian Physics", there are Units called "Tesla", and a thing called "Maxwell distribution". The names "Ford" and "Toyota" are even known to non-automotive-enthusiasts.

Now look at the list: It is the java collection framework, not the "Joshua Bloch Framework", it is the Netscape Explorer, not the Jamie Zawinski Browser. Heck, even if you are into Patterns, you may remember the Authors only as "Gang of Four" (as i do), but not their actual names.

So, in fact, it is very easy be a good programmer without knowing names: it happens, when you focus on the art, not on the artist.

MrSmiley on November 5, 2009 7:49 AM

It seems that the standard argument to support the "no hire"-Theorem is "i cannot imagine how to not know this names if you are interested".

Beside the fact that this no argument but a shift of the burden of proof, it is pretty simple to explain how.

Take a hobbyist, who works, but likes to inform himself about this fancy O-thingy. Now he searches the Wiki. He finds out, that the father was a german guy called Landau (not, as previously statet, Knuth).
If the hobbyist now fights his way through 5 screenscrolls of Math (that minus the links he clicks to actually get the Math), he learns that it this already invented knowlegde was first applyied in computer science by knuth. If he cares to read the little History paragraph after the mind-boggling coolness of the stuff just learned.

It's even worse when he is german-speaking: in the german wiki, knuth is not even mentioned on the O-Notation-Page.

If he decides to study computer science, the hobbyist may be taught this topic the way he was taught analysis in school: without a historical detour to Leibniz or Omar Khayyám. At least that's how i remember my "Grundlagen der Informatik I" class: straight to the point.

And please dont mistake that as an excuse: Knuth was the name i recognized.

And comparing Computer Science to other fields does not fit here.
A Phsyicist will have heared about Newton, because it's called "Newtonian Physics", there are Units called "Tesla", and a thing called "Maxwell distribution". The names "Ford" and "Toyota" are even known to non-automotive-enthusiasts.

Now look at the list: It is the java collection framework, not the "Joshua Bloch Framework", it is the Netscape Explorer, not the Jamie Zawinski Browser. Heck, even if you are into Patterns, you may remember the Authors only as "Gang of Four" (as i do), but not their actual names.

So, in fact, it is very easy be a good programmer without knowing names: it happens, when you focus on the art, not on the artist.

MrSmiley on November 5, 2009 7:50 AM

first thought of it. Unlike many that study at schools that don't understand the logic behind why you would do something a certain way. If reading interviews of specific people help you understand "why" something was done a certain way, great. Otherwise, I see little value in it

travesti on November 6, 2009 3:28 AM

I totally agree that this is an extremely poor test of a potential hire. I'm the type of person that loves a song and I have no clue who sings it, I simply don't care.

It's the same with programming. Being self-taught, I know "how" and I taught myself "why" to do things a certain way. However, I really don't care who first thought of it. Unlike many that study at schools that don't understand the logic behind why you would do something a certain way. If reading interviews of specific people help you understand "why" something was done a certain way, great. Otherwise, I see little value in it myself. I read a lot of programming books, but I couldn't tell you the authors without looking at them, it's just not important information to me.

Hell, I'm even fuzzy on "Big 0 Notation". I just don't need to know it to be a good programmer. You need to understand when an algorithm is linear or exponential and what the alternatives are. Like many things, including patterns, it simply makes communication of the concept easier within a very narrow "development team". In business as a developer/designer, most of my conversations are with other stakeholders and they don't care about any of that. It either works and is fast or not. It's that simple.

Jeremy on November 6, 2009 12:46 PM

nice,http:www.dfobaby.com http:www.idarkfallgold.com

dfo gold on November 8, 2009 7:40 AM

Couldn't name one. Ouch!

But does Jeff know how much wood could a woodchuck chuck if a woodchuck could chuck wood? Eh... I thought as much...

ForkandBeard on November 11, 2009 12:21 PM

If that's your criteria for hiring, I wouldn't want to work for you either.

Chris on November 12, 2009 1:54 AM

Chris... this is your boss... you are fired.

ComicBookGuy on November 12, 2009 2:05 AM

The big problem I have with this list is that these guys are mostly academics, not people who ship real software in a corporate setting. Sure, it's good for people to know about them, but I'd far rather a candidate know about people like Scott Meyers or Steve McConnell. I want people who are interested in how to produce good code. Knowing about airy stuff like language invention is just really not all that important for the average developer.

When looking for someone to design your house, do you want an architect who knows Frank Lloyd Wright or an architect who spends all his time reading about current building techniques?

Steve Burnap on November 22, 2009 12:15 PM

I only recognise Donald Knuth, but still I am so ashamed by Jeff's assertion I am compelled to quit software development and pose as a beggar instead.

;-)

Comon folks, after so many years you should be used to Jeff making extreme statements to lure controversy and your attention.

;-)

Aaron Seet on February 6, 2010 11:22 PM

Jeff,
I get the distinct impression you wrote this blog entry just for the sake of writing a blog entry. It doesn't appear that a lot of thought went into this, which is disappointing.
Is Stack Overflow not generating enough revenue?

Clayton on February 6, 2010 11:22 PM

This blows my mind. Would you expect an electrical engineer to know who Tesla or Maxwell is? Wouldn't you be suspicious of one who didn't even recognize their names?

anon on February 6, 2010 11:22 PM

"Jeff,

I'd fail your test.

Then again, I've only been programming for over 10 years. Blah blah blah, I'm so clever and awesome, and u suck Jeff " -and all the other comments along the same lines....

Just.. what exactly have you been doing all those 10-20 years? Never bothered to read a book, or a blog about programming? Is this the first coding horror entry you've ever read? I'm not trying to argue that you had to have heard of those people to be a good programmer (and I don't think jeff is arguing that either), but I have to wonder how someone like you can possibly exist, unless you just have a bad memory for names. Have you ever heard of a guy named Barack Obama? how about George Washington? Let's try someone more obscure.... Benjamin Franklin? Thomas Edison? Keep in mind jeff isn't saying you have to recognize all those names, just--- At least one.

I also wonder about the credibility of a programmer that feels the need to constantly defend their own capabilities from all potential slights. "No jeff, you're wrong! I AM an awesome programmer, I can prove it! I have a degree!", no.. . good programmers don't spend any time defending their skills to strangers on the internet. They're too busy making piles of money, or programming something amazing.


I can't help but be reminded of the time that Charlize Theron made an anti rape ad for south african television where she said "Rapists aren't real men", and got a flood of complaint mail from people who didn't appreciate that implication.

Breton Slivka on February 6, 2010 11:22 PM

I read a decent article on here a few months ago and added Coding Horror to my igoogle.

Now I just wonder why so many people feel compelled to read and reply to this nonsense.

A Swanson on February 6, 2010 11:22 PM

I guess given that list I would never get a job in programming, after all i didn't do CS degree and not done a formal course in anything but mathematics c; however, tbh, i don't seem to being too bad in my career :)
In my job, no one cares who you know, its purely based on skill. I don't recall any of the questions checking those sorts of names in any test / interview i did those years ago to get an internship/grad post. A lot o f fellow CS students didn't even get an interview.

simon on February 6, 2010 11:22 PM

The book is fascinating, but they are the top programmers (most of them) in the sense of language creation and research, rather than large scale real world development. I highly recommend it, and it'll definitely inspire you to take a look at other languages, but I'm not sure that they are the people you should be taking advice from if you really are doing large scale real world development.

Jon Vaughan on February 6, 2010 11:22 PM

Coding is not horror.I love coding and I am a software engineer.I love these kind of interview.Thanks for sharing.

Yeast Infection Causes on February 6, 2010 11:22 PM

Actually it's well documented and has been proven many times that if you don't know Bloch did the Collections API for Java that you can't work in a job related to computers in any way at all.

QED.

Aaron on February 6, 2010 11:22 PM

Why is it that according to everyone who would fail the test, the world of programmers can be exactly divided in:

1. Programmers who work all day long and have not a single minute to themselves.
2. Programmers who masturbate intellectually all day long by reading CS-related books and don't program at all (and yet, somehow, manage to get paid as programmers).

I wrote this on February 6, 2010 11:22 PM

Pedant:
A pedant is a person who is overly concerned with formalism and precision, or who 'makes a show of learning'. The corresponding (archaic) female noun is pedantess

@james L
You come off as a pedant.. I suspect you could probably define and give criticism on any of Guy Steele's theorums. I bet you'd be pretty good at discussing a few other people's skills and attributes.
But hey, not having a personality or skills of your own; that's normally accepted I guess. I'd still not hire you.

Don on February 6, 2010 11:22 PM

«Back

The comments to this entry are closed.