But having interviewed programmers, I'm deeply impressed by the author's work ethic. Probably less than 5% of people I've interviewed have spent even 30 minutes preparing. I'd love to have employees who approached problem solving with that kind of gonzo determination and resourcefulness.
I got the impression the author had a strong practical sysadmin background, was interviewing for a sysadmin position (this wasn't totally clear), and had some technical chops. Interviewing him on CS101 seemed weak.
So if you're applying as a sysadmin at Google/Facebook/Amazon, pay very careful attention to the position description.
For more background, see this exchange on the SAGE lists:
http://131.106.3.205/lists/sage-members-archive/2005/msg0292...
> I still think they're looking for math geniuses who can write hundreds of lines of extremely complex code in their heads for every position, even what should be a sysadmin/engineer/architecture job that doesn't need it. Me, with a good 12-15 years of experience, might be qualified for a junior sysadmin job in one of their NOCs somewhere.
http://131.106.3.205/lists/sage-members-archive/2005/msg0293...
> A good proportion of the "sysadmin" positions which we (Google) advertise are for the group we call "Site Reliability Engineering". The people in this group are part sysadmins, part development engineers. Their function is to keep the Google web properties up and running, highly available, and performant. A solid foundation in systems administration is essential for this role, but the SRE group are not primarily sysadmins - they are application admins, which is quite a different thing. Any given Google application may have hundreds or even thousands of actual servers associated with it, so the kind of "system administration" with which most people here are familiar is not necessarily pertinent. Yes, sysadmin skills are essential here, however we also require a very strong skillset in development, automation, high-level systems architecture, networking, statistics and general problem-solving. This is why the SRE candidates are grilled so mercilessly.
Perhaps I'm biased because I spend so much time in front of a computer, but I can't imagine ever getting rusty at scripting unless I'd left the industry totally and gotten rid of my computer. There's simply too many simple tasks that are made much easier with ad-hoc scripting. I don't think I could make it through a week without writing an ad-hoc script, be it something as simple as transcoding videos to MP4 for playing on devices, finding some files with specific criteria, renaming and classifying photos based on EXIF data, etc.
Still, even getting that deep into it, there are 1 or 2 month stretches of time where I do no scripting at all. I might be deploying a 100TB SAN somewhere, building Oracle database clusters (using automation scripts I wrote months ago in cfengine), doing firmware updates, fixing network issues, helping VMware admins figure out their boxes, etc.
The problem with a sysadmin's life in general is that there is way too much stuff to do to focus on scripting or coding 8 hours a day. Some of us love that stuff, but when you've got a brand new SAN, blade chassis, or servers to deploy, they don't just deploy themselves. There are probably only a few shops that actually embrace the sysadmin coder, or devops as I've heard it called.
Your point about ad-hoc scripts is well taken. I use one-liners on a daily basis, even for general computing tasks like renaming files, or to manipulate data using awk or sed. This is not what I would call real scripting, but it does require a fundamental understanding of the tools.
It's the same in any field really though, even supermarkets are reluctant to hire people without relevant experience that you can only obtain from working at a supermarket.
Guess it's all about getting a lucky break, impressing someone enough to give you a chance, or getting lucky with your own venture that it eventually gets up to a scale where the same concepts apply.
When you say Facebook missed out on a hire it implies he has what they seek and by not hiring him they are now not getting what they first sought, right? I wonder if that's the case though. There probably exists people who are committed, motivated, intelligent and has good learning skills but yet also would manage to perform "flawlessly" (during the interview) or even as sought.
Now I'm not saying anything about whether they should have hired him or not, just merely stating that above conditions (commitment etc) are not always enough when comparing candidates. Ones current knowledge base is a factor since if persona A has x amount of knowledge and person B has y where y>x it would take A time to go from x to y while in the same time B goes from y to z where z>y.
>>just his lack of knowledge about some technical issues
"just". That's the thing. Why not hire the committed, motivated, intelligent, good learning-skilled person without that lack of knowledge about that technical issue? As he states in his post -- it's not like [big tech-company] has a shortage of bright people to pick and choose from.
At some companies, you can apply for a position, go through the entire interview process, and then a company-wide hiring freeze can kill it dead. Sometimes you might be up against an internal applicants with huge advantages. The interviewer might have had a hangover. There are so many things you just can't know.
At the same time, I am a bit surprised that questions about threads and interprocess communication were challenging for a senior systems engineer with ten years experience.
The guy had taken some time off and was probably rusty.
Maybe the OP is better finding a startup or open source project where he can learn at a faster pace. I suspect facebook maybe a tad too busy to help him along.