The topic of jobs comes up to me once again, and I've been thinking about how I would like to work, and how I do actually work. Not to forget what I work on, and what I'd actually like to work on.
There is a chasm between the two, however, the prospect of trying a different job, after so long in the one I'm in now, does fill me with dread, not least because her at home won't comprehend the first thing I try to explain about the anxiety I'd be feeling, nor the level of pressure to impress and show how good I can be, and believe I am, as soon as I got into an interview... let alone into the actual job.
But, I've been tentatively looking around the world for clues on how modern, hard hitting, effective CV's should look, how one should present oneself, and importantly how one can do extra curricular things... Like run a blog, or a guild in Warcraft, or some tweet feed, which impresses...
What I've found is that there are a lot of people floating around the IT world, especially the programming world, who don't have the first clue what they're doing. This is not intentional, these people do not think they're clueless, they in fact think the opposite that their way is the right way, and I can't knock them for it, I believe my way is the right way, most of the time.
But, what I can't stand is when people, on eitherside of the interviewing desk, are clueless...
I read this quite an old post, and chuckled... I even did the fizzbuzz program for a giggle - took me about 43 seconds, excluding the time to boot the virtual machine and run the code file through a compiler... Does that mean I could interview for a programming job?... Maybe it does...
Does it mean the person on the other side of the desk is qualified to judge me?... Probably not... You see programming has become less about what you churn out, and more about what you've done in the past, what libraries, what projects, what essence you've brought to the fore, and how you articulate that knowledge... With the internet however, anyone can learn the right buzz words and get on with the interview without breaking a sweat; being seen to tick all the right boxes and hit all the right buzz words seems to be enough.
A person I worked closely with for a long time, many years ago, was one of the best programmers I'd ever seen, he knocked up a motion detection system, using C++ in about three days, including all the image loading and a driver for the camera in use, all from scratch... That was amazing then, and hard to comprehend today. But take him out of his comfort zone, showing Java as it was then, or heaven forbid, the internet and it was aghast.
Bill Joy at Sun would apparently take the whole Unix software away and over a weekend, re-write the whole of his Unix cut, including all the Applications and Services. That is breath takingly astounding... But would anyone be allowed to rewrite the whole system their products are based on today?... No, and would they be able to?... No.
Yet another person I worked with, who came into a "front-line" programming role, could not program for toffee, that person in fact spent nearly two years constantly asking, and re-asking, how to do things... like concatenate strings... like implement an interface... like assign or cast between types... They passed their interview, but as far as I heard when they began, their interview consisted of their explaining about the prior project they had worked on, and that was enough...
Now, in the post by Mr Atwood, he says "It's a shame you have to do so much pre-screening to have the luxury of interviewing programmers who can actually program", and he's right... But in my experience some candidates can program, like I believe I can, but we meet idiot interviewers...
Who watches the watchman?... It seems in programming interviews, no-one is watching the watchmen...
A famous one, I often tell people about was at an interview for the role of "Microsoft Visual C++ programmer" for the princely sum of £11,500 in 1998. I went, because I needed cash, and I planned to work there whilst looking for a different job... I walked in and was presented with three men at a white board...
#include <iostream.h>
int main ()
{
char x = 'a';
switch (x)
{
case 'a': cout << "x is a"; break;
case 1: cout << "x is 1"; break;
case 0x43: cout << "x is 0x43"; break;
default: cout << "dunno what x is"; break;
}
cout << endl;
return 0;
}
The first indicated a seat, the second said "read the code on the board", the third started a stop watch... After about 60 seconds, the third nodded to the first and said "Hello, can you tell me what x will evaluate to"...
Lower case character 'a', was my rather stiff, formal reply.
"Thank you for coming, we'll perhaps be in touch", said the second...
"I'm sorry?" I replied "I thought I was here to interview for a programming role?"
They smirked, especially the middle of them, and he said "You were yes".
I sat a little firmer in the seat, you're using the past tense, so I'll assume I've not passed the interview, but might I ask why? Hello, I'm Jonathan by the way, might I ask your names?"
They looked very concerned by this, I don't think they expected me to ask them anything, and had infact expected me to see my idiocy and leave the room. But, I was mid-degree, looking for work, and a placement, I wasn't going to give up, I had nothing to loose, so as per our lecturers advice I asked why I had failed the interview.
"This is a test of your ability to comprehend code, and you've not comprehended it." The middle chap said, with a touch of theatre and a smirk to his friends.
"Fair enough, I'll ask about the code in a moment, but why have I failed the interview? If anything right now, you gentlemen have failed my interview, so we may as well accept I'm not going to work here, not ever going to see you again, and get down to brass tacks. Why have I failed this interview?"
They were gobsmacked, but the guy in the middle rallied.
"Its a trick question, this code won't compile, let alone evaluate x as a". He folded his lanky legs over one another and folded his arms staring down his nose at me.
"Well, it will compile, and it will evaluate to x in MS C++, it'll be fine as a case statement in Pascal and Turbo C too..." I returned his owlish stare "but this isn't your interview surely?"
The chap on the left introduced himself as Simon from HR and said that the interview process was based on my CV, manner and ability, this was the ability section of the interview and to avoid "interviewing anyone who can not program, we've selected this particular question to demonstrate ability, and I'm sorry to say you did not pass".
"Right, but your question is at fault, that will compile, on... well on every compiler I've used, and in at least three languages I can think of with syntax very much like that." I looked up at the code again and then gave up the smart pretense and leaned back folding my arms. "Go get a PC with a compiler and I'll show you, if you prefer? And remember, I don't want your job".
They refused, "you can not place a character into a switch statement in the C or C++ languages, they are all we care about", and they sent me out, and I walked back to the bus stop puzzling. When I got home I ran that code through Turbo C for Dos, Turbo Pascal for DOS, Visual C++ 6.0 and Borland C++ Builder.... All of them evaluated it...
The guy was wrong, yet he was interviewing others...