Mike Macgirvin
Diary and Other Rantings
Beyond Silicon Valley
   
Monday, May 12 2008, 08:43 am
Sep 14, 2007
Musings on 'the code challenge'

I was recently reflecting on job satisfaction and how it seems to directly correlate with the standard 'code challenge' - a quiz given to prospective software engineers to ascertain their level of expertise.

I mentioned previously the 'Google Interview' where I was asked to construct a line between arbitrary points going nowhere and for no purpose. Over the last couple of years I've been through dozens of these quizzes - and most of them have no relation to either real-world challenges and more specifically to the specific job that was applied for.

Most of the interview questions relate to low-level database architecture, as this is one of the most challenging of software problems - and in fact people write their PhD theses on aspects of this problem. But in all of these cases I was being asked to design web pages, against an existing database that wasn't even written by the company to who I was applying for work. So what's the point?

I recall my code challenge at Netscape several years back. Write a function in 'C' that reverses a string. This was fun, and the interviewer and I talked about several novel approaches to the problem. It was more of a dialog than a test.

At Symantec, I wasn't asked anything about building web pages or security. It was more of the same old sort an array in two dimensions without getting log(n) behavior.

Yahoo! asked me several questions about PHP and web design. (Such as what does a triple equal operator do? and how do you deal with different box models?) And in fact they made me an offer, but I went to Symantec basically for more money; and this was the right move at the time since I was only looking for temporary work. Yahoo! would have likely been higher job satisfaction.

One company (Six Apart) asked me to write a rounded-corner menu in JavaScript. They obviously didn't like it when I declared that it was ridiculous to do this (after performing the exercise six different ways). Every way of doing this prior to the pending CSS3 adoption is just a hack on top of a hack. If you waste all your engineering resources making rounded corners on thirty-six different browsers, you're gonna' be late to the party. 

Anyway, the recent university challenge was anything if practical. Ten questions about real-world problems relating to the job at hand. I'll mention a couple for example -

1) You look at the systems logs for the student home page server (running RAID) and notice some low-level disk controller messages. What do you do? (Multiple choice with essay). The answers ranged from replace the disk, attempt to recover data, then replace the disk, etc.

2) You find that a machine has been compromised, seriously. What do you do? Isolate the entire subnet, isolate just the machine, reformat and rebuild the operating system, etc.

Back in the day, it was 'what editor do you prefer and why?' - or 'describe how to add modems to a Unix system'.

But the point I'm leading to is that job satisfaction has in all cases been exemplary when asked to answer questions directly related to the job, and when asked to solve unrelated problems, the job satisfaction went down - or as was usually the case, the interview was my last dealing with the company.  

 

 

Categories: rantings
Comments? | More Actions Open/Close menu
Back
[Babe] Ruth made a big mistake when he gave up pitching.
-- Tris Speaker, 1921