Flamebait
"Between 1969 and 1973, Ken Thompson implemented a version of the Multics system at Bell, called Unix, with Dennis Ritchie."
Riiiight, that's what happened alright.
Google won't allow the co-inventor of Unix and the C language to check-in code, because he won't take the mandatory language test. Between 1969 and 1973, Ken Thompson created Unix with Dennis Ritchie. At the same time he also developed the C language. The speed and simplicity of C helped Unix spread widely. Both have …
A professor of physics (say) is not allowed to rewire your house, even though they could explain in excruciating detail by by-passing the RCD is a "Bad Thing"(tm) and even manufacture an RCD out of duct tape and a milk-bottle top. Put simply: they are not an electrician, even though they are very good at the theory.
It's the same here. Mr. Thompson may be very good, he may be very smart; but he still has to prove that as well as being a good "physics prof" he is also a good "electrician".
Having just said that, most programming exams are a pile of crap (I've done a few). "If you see code like this, what happens A) B) C) or D)" The correct answer is, of course, "E) Find the person responsible for this incomprehensible horror and beat some sense into them". And the other classic "Is method A on class B? Yes/No" Correct answer "Umm...this is, like, why we have API docs. No point in knowing it's there without knowing how to use the wee beggar."
So yes, do not allow commits from Mr. Thompson until he passes the exam.
After said exam, do not be surprised if Mr. Thompson rips the exam (and its writers) to shreds.
The ultimate irony would be if Mr. Thompson was involved in writing/approving the exam!
"Mr. Thompson may be very good, he may be very smart; but he still has to prove that as well as being a good "physics prof" he is also a good "electrician"."
Bad analogy is bad.
Go read K&R, then tell me that he isn't a good programmer. And if you don't know what K&R is then but the f--- out, because you don't know what you're talking about.
Anyone who knows anything about British management knows that the referee has to be an English invention.
Then there was Agincourt. What do you suppose the crowd was there for?
Ripping a new hole in the local law enforcement is pretty much a par in the after match party tricks of the English abroad. And the result, typical of French law enforcement.
He'd have fallen at the first hurdle with the recruiting agency:
Drone: "So Ken, what skills do you have for this vacancy?"
KT: "Well, I designed, wrote and developed a language called C".
Drone: "Hmmm, that's interesting. how do you spell that?"
KT: "Like the letter"
<drone writes down "cee">
Drone: "and how long have you been programming in , errrrrr, cee?"
KT: "I wrote it in 1970, and I've been using it every day ever since"
Drone: "Hmmm, I'm afraid you'd be a bit too old for this client, how much experience have you got with Lie-nux?"
I work for a software development company. A large proportion of our employees are not allowed to check code in. Turns out, it doesn't matter because they don't work on the code, they do other things. Looks like it's the same for this guy. Are we scrambling for stories now that the volcano ash cloud is blowing away?
Perfectly reasonable, since at the time, they seemed to be employing robo-Loompas to send solicitations for CVs to pretty much everyone that posted a coherent answer to any question on any newsgroup or mailing list with a technical focus and used a real name to do so. I got three before they quit bothering.
Seems pretty much par for the course - Google, like most other big companies obviously has a crazy idea that its testable methods are better than actually getting to know the staff they hire.
I love this line: "an acne-scarred, know-it-all Oompa-Loompa who is absent-mindedly flicking paper pellets into a Starbucks cup while Twittering" and I am going to be actively seeking out chances to use it again in the future. Pure ranting gold. Bravo.
....is if Ken were to subvert all their compilers in a way that makes it impossible to discover that he's done it, my he could even explain it in a paper somewhere, like here for instance:
http://en.wikipedia.org/wiki/Backdoor_%28computing%29#Reflections_on_Trusting_Trust
Google, pwned!
*chortle*
I've lead teams of developers, interviewed plenty and the quality of code can be atrocious.
I think Google are right to test coder's ability to code but I wonder how they go about it. The mark of a decent programmer to me is someone who produces clean, tight, readable, pragmatic, documented, safe, modular, correctly formatted and maintainable code. On top of that a decent programmer will listen / contribute to a house style, enforce it, share their knowledge with their peers, be a good communicator, push back when designs don't make sense and generally do all they can to make a better product without going overboard and rewriting stuff for the sake of it. How do you test that?
All too often you get someone who can answer all the interview technical questions but can't write decent code for love nor money. They'll hammer out yards of screed, cutting and pasting the same code without abstracting, or writing code that's dangerous, breaks if you breathe on it, or implement the spec even when the spec contradicts itself or doesn't make sense.
The biggest offenders by far seem to be contractors who come in with little understanding of the "house rules" for coding and generally aren't interested in writing decent code anyway since they're long gone by the time the next upgrade cycle is around. I think sometimes they just don't know how bad at programming they are because they're out the door before it becomes an issue. Usually permenant staff can be beaten into shape through code review, peer review etc.
Implicit "a"? That's new one on me. ;-) If you can say "test the ability of coders to..." then you can say "test coders' ability to..." without putting a foot wrong.
Strangely enough, I don't know what a gerund is - I went to school when teaching grammar was out of vogue and I can't remember ever being taught the specifics (which is a good thing given that the exceptions outweigh the rules). English to me is similar to computer language: you immerse yourself in it enough that in the end you get the rhythm and you simply know (with fairly good accuracy) what's right and wrong by feel alone.
Of course if you helped to write the language in question then you're the one who gave the language its rhythm in the first place.
Yes I admit it, I made some mistakes. Coder's was actually correct but I missed out the "a" before it and I always misspell permanent & led. Normally I catch them through a spell checker but not this time. It's not uncommon for me to hit post and re-read what I just wrote and discover I missed out whole words or left half a sentence in there.
You had me up to the bit where you started smearing contractors. It's a shame that that is your experience of them; it is not mine. I hope you are allowing a personal bias to cloud your objectivity.
In the interests of balance, I'll make a crass (and largely inaccurate) generalisation too:
Permenant staff are usually slow-witted, inefficient and lacking insight. They use the company structure to mask their fundamental incompetence and require constant training and spoon feeding in order to produce anything useful. They like to belittle contractors and understate their contribution and commitment in order to promote their own dubious merits.
So there.
I've been a permie and I've been a contractor. Currently I'm a contractor so my opinion is from observing both sides of the fence.
I didn't say all contractors are bad programmers, just that contractors have in my opinion a greater tendency to write poor code for the reasons I cited - they show up, they're told to do something, they don't push back or share knowledge, they hammer out some code and then they piss off before the problems in their code are discovered.
I think any place that employs contractors really needs to get them into line with the house rules as they first thing they do. For example usually after someone has been beaten up in a couple of code reviews they start falling into line.
"I've been a permie and I've been a contractor. Currently I'm a contractor so my opinion is from observing both sides of the fence."
Then I'm very surprised you are happy to regurgitate such lazy stereotypes as:
"contractors have in my opinion a greater tendency to write poor code for the reasons I cited - they show up, they're told to do something, they don't push back or share knowledge, they hammer out some code and then they piss off before the problems in their code are discovered."
If this situation is allowed to happen in an organisation then the recruitment and subsequent management of development staff (contract or permie) is piss poor.
@ DrXym: That's one of the most sensible comments I've seen about interviewing for software developer roles.
At most interviews programming tests and questions are geared to quick and dirty solutions. Ask for a reasonable spec and you will get short shrift. This reflects the culture of the development environment that you are supposedly wanting to join. When I've asked interviewers questions from the the Joel Test I've got looks that indicate being offended and often that indicate 'how dare you question our / my professionalism!'. And DO NOT mention documentation, design or UML. And DO NOT ask to see a sample of their production code base! You need a job after all! Or do you?
UML! I last worked at a company that asked for knowledge of design patterns. The team lead said that he had used them in creating the company's C++ software. When I got there what do I find. They didn't use UML or any documented design! Go figure! The team lead said all the notes and sketches were in his note book! When I came to read the 'new' C++ code base I knew in the first 30 seconds it was a pile .. of ... of messiness. They wanted, and expected, everything done yesterday of course.
How do you test for a good programmer? It depends on the view of who has written the test and the interviewer. I've read Coders at Work and the sections on interviewing techniques; makes for interesting reading. For myself they should bring their own projects to interview showing specs, design, documentation, source etc that should reflect the professionalism of the interviewee. This will give an excellent starting point for questioning and discussion. This may be useful to validate and verify what is on their CV.
I expect Mr Thompson could bring quite a few projects to an interview.
If you "Look Inside" (r) Kernighan and Ritchie's book (you know, The Book), the word Thompson is mentioned. Twice. Go on, have a look.
Mr Thompson was a very very clever man, invented B (precursor to C), and did loads of other good work, including UNIXy stuff, but afaict the historical consensus does not seem to think he invented C.
Does it?
You're welcome.
Yes, Ken Thompson was not the inventor of C. That was Dennis Ritchie. Ken's work heavily influenced the design of C and he wrote a shit-load of excellent C code. Like C compilers, the early UNIX kernel, Pascal interpreter & compiler for UNIX, games (including some of the strongest chess programs) etc, etc. In fact he wrote the whole of the first rudimentary UNIX system in a month. All of it. In assembler.
Any truly clueful company would hire Ken in a heartbeat over any of the pasty-faced yoof emerging from higher education with their advanced Excel programming and Visual Basic degrees.
google should be proud to have him and not piss about with fuckwit tests. He worked at Bell Labs Computer Science Group for fuck's sake and won the industry's top awards: ACM medals, etc. The only tests that are needed here are for working brain cells inside the thick skulls of the stupid fuckers who think Ken Thompson needs his programming skills tested.
Well done, you spotted that he can prove he is without doubt quite good at writing in Assembler.
That rather suggests that he _isn't_ going to be up to speed on modern coding standards and/or modern languages.
If, on the other hand, he is as much of a genius as some commentators suggest, then he should be able to ace the test in half the required time, and the failure to do so implies some character defect. Often it is not the test itself that people are interested in, it is how you approach it.
Had a quick look at the Go language, its nice and clean.
It looks remarkably like Algol. Its got a particular favorite of mine, an explicit distinction between assignment and equality -- ":=" versus "=". Such pedantry makes for clean code. Its therefor a bit surprising that he's bowed to the fashion of trying to eliminate semicolons where possible. These tokens separate clauses; I know they're redundant from a human perspective but we're not parsing the code, the computer is.
I think I'd probably fail a language test as well. Its like driving -- I bet most people who read this would fail a road test if they had to take one this afternoon. They can drive, obviously, but that's got nothing to do with it.
Go uses the + operator to concatenate strings. That is an instant fail.
It supports freakin' Unicode, for crying out loud. They could have chosen *any* symbol they liked for string concatenation. Yet, they had to pick one that was already in use for something else.
This means you either have to have everything statically typed -- remind me, what century is this again? -- or waste space doing explicit type coercions anytime you wish to add two numbers, lest one of them be mistaken for a string.
There are a lot of things wrong with PHP, but using different operators for different operations can't be said to be one of them.
Actually Dennis Ritchie was more of the inventor of C, but he and Ken worked together on UNIX and probably on the C compiler.
UNIX is not a version of Multics. Oh my god, is that wrong! UNIX was a reaction to Multics which was a complex and inefficient system that Ken worked on before we went to Bell Labs. This of course was in the days when UNIX was actually a simple system designed by a few visionary people, not the sprawling buggy bloat that it has become today.
Alistair Cook told a WW2story of an old man ignoring all the regulations at an airstrip in the USA. Just striding out, getting into an airplane, and flying off. No log book checks, no flight plan, no pre-checks.
When Cooke commented on it his host said: 'yep. He ain't got no pilots licence neither.'.
Cooke asked why he was flying then.
'That's Orville Wright. Ain't no-one got the cheek to ask him to sit a test'.
I've had that at big corp (especially banks)
Favorite is the logic/spacial reasoning test (which of this shapes is different from the other shapes type questions?) to see if you have an 'aptitude' for programming.
I would have thought my PhD showed an aptitude - true it doesn't prove i know the specific language you are using or that I can program my way out of a paperbag but it probably does show an interest/aptitude for programming more than your "rearranging symbols for 5 year olds" test.
If this type of nonsense existed when computers were a fantasy they'd still be a fantasy.
You can't have what I would call bureaucracy involving itself in technology like this.
Sure perhaps the chap might not be as good as he thinks he is but who is google to question someone that created a language that they surely have used to build their fortunes.
My question to him is why even bother with google. The company has no where to go but down, and it's coming.
This is exactly why I got out of electronics in the 60s.
MFs wanted me to take a FGD test and pay for it.
Right, spend 2 years of my life in the Viet-nam war and still have to prove I have skills.
Screw you Indiana.
I worked at a Gasoline* station.
My wife convinced me that I could program.
Luckily, fu*king Indiana does not require a test for programming.
But I am not still pissed off about this.
As anyone can tell.
*petrol.
I hate this bloody minded attitude in companies where some obstinate control freak inflicts blanket rules that utterly defy common sense. To me it comes across as not truly valuing the staff they employ. Any attempt to question the logic of the rule is met with a wall of bloody minded defiance and outright obstructionism because they simply don't want to give in and instead want to dominate (and undermine) everyone by inflicting their rules on everyone. Its blatantly Passive-aggressive Narcissist behaviour. Which is why they can always think up partly believable excuses to fool people to try to justify their actions, but their true intentions are simply to dominate others.
Its a big problem (for employees) in big companies. The bigger the company the more Passive-aggressive Narcissists you are likely to find, but they are also in small companies as well, where they can rule over all as the boss of a small company. (Its not just more people in a big company, Passive-aggressive NPD's are attracted to powerful companies where they can play their power games over people as they fight their way up the office corporate structure).
(Passive-Aggressive Narcissist behaviour comes from a fear of dependency on others (a fear often caused by the way they suffered excessive control as a child. That control at times can be so extreme that they cannot even learn to express their emotions clearly so they hold it all in, filled with growing resentment towards others around them and a deep determination to never be dominated by anyone else ever again) and these people are often very good at hiding their true intentions (they are very two faced schemers) so most people most of the time wouldn't even fully realize the full extent of their true game against everyone else). They will even undermine the successes of others around them, if it helps their goal of fighting for dominance in a company. They take the joy out of doing a good job for some companies, because whatever you do, they seek ways to undermine you.
An aggressive Narcissist is easy to spot and so easy to get out out the way of, but a Passive-Aggressive Narcissist can take a long time to see through their words to see their true intentions and so in the long term they can be utterly evil people to work for as they bring you down. They can really run you into the ground. All the endless excuses from them twist your mind every which way, yet behind it all, is their scheming manipulation of others as they undermine others and so maintain dominance. (Sadly they make very good politicians. Its why many politicians like this lack so much empathy towards others). A Passive-Aggressive Narcissist is the purest definition of the Machiavellian pattern of behaviour defined almost exactly 500 years ago (in 1513) by Niccolò Machiavelli).
The problem is these people seek positions of power in politics and in companies (and they don't like to be dependent on others, so they fight to the top in power over others) and sadly they are enough of them in society that almost all of us at some point in our lives will end up working with one of them. They can be very difficult people.
Ken Thompson should tell them outright he isn't taking the test and that if he is forced to take the test, he isn't going to work with the person forcing him to take the test. Because Google will have one eye on the PR implications of someone as high profile as him speaking out against being treated like this. I suspect that could be part of his plan in publicly speaking out about it.
These Passive-Aggressive Narcissists in companies are the reason why office politics can be so infuriatingly bad at times. But then their whole life is one long political battle for power over others. No wonder they are such a danger to fairness in society. They don't want fairness, they want power over others.
There is a pattern to their behaviour, you just have to learn it, but its well worth learning it, to see how to avoid them and to help to protect yourself from them. (I was seriously thinking of using the Big Brother Icon, because this Passive-Aggressive Narcissist minority in society are the core driving force behind why we are sliding into this ever more controlled world (especially as they are determined to exploit ever more technology to give them more power) and its why that kind of world, regardless of which technology of control is used throughout history, it always ends up so bad for the majority of people because at the core is this ruthlessly controling minority).
:(
At the number of people who think it's quite reasonable to ask people to undertake tests that a moment's thought show tell the tester are unnecessary.
I've got degrees, taught students, and published articles so I resent being made to undertake basic literacy and numeracy tests just because they are a formality.
Why don't people think more about what they are doing?
It's "ticks in boxes" thinking.
It all goes back to the current trend in managment for ensuring that you have a completely nailed down process that anyone can follow.
It sounds like a good idea until the inevitable followup happens. Once anyone can follow it, you sack everyone capable of walking and chewing bubblegum at the same time and run the whole shebang with minimum wage fuckwits incapable of independant thought. It's self-reinforcing too as the fuckwits don't ask difficult questions about the process and, since they're beavering away rather than asking questions, this is obviously more efficient.
It's exactly the same process that has removed discretion from policing, replacing the helpful bobby on the beat with a spotty little fascist in a car as a side effect. For some strange reason, the world appears to be run by people who think that all of life's little uncertainties can be reduced to a simple form with tickboxes. I've come to the conclusion that the only way we're going to solve this problem is by rounding up everyone who thinks that way and burning them at the stake.
"I've got degrees, taught students, and published articles so I resent being made to undertake basic literacy and numeracy tests just because they are a formality."
I'm amazed people think this is unreasonable. No one should mind being asked to demonstrate their expertise. Paper qualifications are almost useless in determining ability to perform a job.
One of the worst programmers I have worked with (in the bottom 10%) had a PhD and was a university lecturer in software. People with PhDs are either very good or totally usueless with the useless outnumbering the good about two to one, severe problems with basic communication skills is one of the common issues.
Basic numeracy and literacy tests are not a formality they are essential, especially for those who have degrees and taught students.
This is a story from the German Democratic Republic - a state with surveillance everywhere, files on everyone, employers' blacklists, meetings attended because if you didn't you weren't a good team player and god help you, empty slogans everywhere, police who could arrest you if you took photos or looked too confident, where the judges and politicians were bent , secretive and self-serving, and where the press and media were rigidly controlled by the state or a few powerful individuals.
Anyway, one night there was a big do at the Berlin Palace of Culture to celebrate Bertolt Brecht - a great German dramatist (Threepenny Opera, Galileo etc). The man himself was the guest of honour. Some bloke in an old leather jacket and three days' stubble showed up and was told to piss off by Jobsworth at the door cos he was shabby and the do was posh. So off he sloped - he knew when he wasn't wanted. After a couple of hours no Bert B. had shown up. Turns out he was the shabby bloke in the stubble.
Of course, it could never happen here, could it?
(Paris could she'd have been let in even with three days' stubble, nudge nudge wink wink)
I applied for a post once, which not only gave you aptitude tests - apparently a PhD is not sufficient indicator of ability - but examinations in morality as well.
One of the questions went: "Do you enjoy looking at naughty pictures on your PC and in magazines?". I really tried to keep it together, a furious magma chamber of mirth and outright shock at being asked such a question, bubbling away inside.
But having then decided I was not going to be working for them, I raised my hand, in a room full of other candidates, and asked for clarification in my best Serious Voice for the definition of "naughty" - were we just talking nakedness, or more hardcore? (Gay or straight?) This brought about sniggering from those around me, apart from the PR stooge facing us at the front.
Perhaps then, the interview process defines the company, allowing not only the interviewers to make an informed choice?
ex Google here. What he's talking about is a called a Readability Review, everyone has to do it, it shows that you are aware of the org coding standards. Stuff checked in has to pass review, and passing your RR lets you get commit rights.
Common sense, any software house with a large number of developers have something similar.
Just because you invented the language doesnt mean you know the org coding standards.
Also, the Gawker article is a non-article anyway, he was asked a question, he doesnt commit code, so he doesnt need to do the RR anyway.
In my experience, most language tests involve very artificial code fragments, specifically designed to test knowledge of an obscure part of the language. I've done a few of them over the years, and even written ones myself, and they don't really tell you a lot about someone's competence. One interview with a certain large Dutch consumer electronics company had the interviewer's boss asking "Is that REALLY in our codebase?" (not a good sign). Another large Swedish telecomms company had a paper that the interviewer didn't know the answers to, despite being in charge of a large group of developers. In reality, stuff you see in tests should mostly NEVER appear in production code. Oddly enough, the most creative and innovative firms rarely conduct language tests - if you can pass a general oral technical interview, that's a good enough indicator that you're sound.
Agree with the previous posters that just because you can compile C++ in your head (and answer deliberately ambiguous, designed to confuse questions about cornercase [mis]features of the language), you're not necessarily a good coder.
It's a bit like a construction worker that can tell you everything about how long it takes to set x% concrete / y% limecrete / z% sand / p% recycled paper mixtures with q% water content at X degrees getting five hours of full sunshine a day (versus 3 1/2). Someone who can tell you that surely must be an expert.
But only until you see first them build a bridge from knotted-up al-dente spaghetti. They know they can and know how to - does that make it good ? Will you find anyone else to maintain or repair their work ?
The best code is that not written at all, and the best use of a programming language feature may well be in the decision to avoid it.
As one of Ken's mates has said, "debugging is twice as hard as writing the code - hence, you're not good enough to debug the best code you write". In that sense, Ken Thompson may do great - by only stopping others from being far too clever for their own good.
These "programming quizzes" would really improve code quality if, in addition to asking "what happens: A-D" they'd also ask "would you recommend to create code like this Y/N". Then reject any applicant that has more than 10% 'yes', as the risk of them creating maintenance hazards is too high.
"Between 1969 and 1973, Ken Thompson implemented a version of the Multics system at Bell, called Unix, with Dennis Ritchie. At the same time he also developed the C language. The speed and simplicity of C helped Unix spread widely. Both have subsequently become quite popular."
Beautifully understated =OD