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 …
"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.
Good. Sort of.
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!
I may not be a psychologist, but i can tell your an idiot.
Tell his an idiot
"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.
just because you invent something....
doesnt mean you are any good at it. look at the England football team :(
The England football team didn't invent football.
Oh yes they did!
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.
What is this? No pair programming?
Mr. Thompson is sure to appreciate having his code (hopefully Limbo, not C) checked in by his paired companion.
It's not exactly a secret that common sense
is in short supply at Mountain View
He'd never even have got the job in the UK
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?"
What comes around ...
ken didn't like giving tests, either. Probably the only reason I got my first degree ;-)
::snicker:: at the very idea, though ... google needs its collective psyche examining. There is something very, very wrong with the core of that organization.
I think it's both party's fault. Google should give the guy a free pass because he ****ing INVENTED the language.
On the other hand, how hard would it be to take & pass the test, when you ****ing INVENTED the language it's about?
Paris 'cause she's good at "oral" exams.
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.
"I just haven't done it."
So, not "won't" but simply "hasn't".
Nothing to see here, move along.
Now, what would really serve them right....
....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:
Get it from the source ...
Code quality and defensive programming
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.
,,, is very important as well. For example, there's a wee difference between "lead" and "led", "coder's" and "coders'", and "permanent" and "permenant". It's all about being clean and tight, no? ;-) Hope you don't mind the peer review amigo mio. Ciao!
Coders code - managers manage
I think we have a PHB in our midst. To the burning pitchforks lads.
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.
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.
How do you test for a good programmer?
@ 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.
Okay for lead/led and permanent/permenent, but "... test [a] coder's ability..." passes muster IMO, if only with the implicit "a". The other choice I suppose would have been "... test coders' abilities..."
(/me trying to remember what a f*cking gerund is? )
> The biggest offenders by far seem to be contractors who ... generally aren't interested in writing decent code anyway since they're long gone by the time the next upgrade cycle is around.
Surely code inspections and unit tests would detect this while they are still 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."
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.
I'm allowed to "regurgitate" it because it's my opinion after working with 30-40 contractors over the course of 20 years. Of course there are good programmers amongst contractors but there are many more who aren't and I have no problem saying it.
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.
La plume de ma tante
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.
What I mean is I wrote "I think Google are right to test coder's ability to code " and I meant to say "I think Google are right to test a coder's ability to code".
"Thompson, inventor of the B programming language"
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.
Ask dmr ... here, have a link:
reflections on testing Thompson
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.
C, Java, PHP, C#
also use different tokens for assignment and equality. And Pascal. That must cover a fair chunk of all the code ever written. What language do you use?
"I bet most people who read this would fail a road test if they had to take one this afternoon"
Which is why everyone should be made to retake their road test every 10 years and produce a valid eye exam every 2 years. The eye exams are easy, you've already paid for them via taxation!
It's got my pet hate, though
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.
Ken and Dennis
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'.
Big company policies
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.
Obstinate control freak rules at work (and in society) defying common sense...
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'm Supprised (2)
"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.