A Silicon Valley Bestiary
I do a lot of interviewing candidates for Mozilla. I've sarted to notice certain types of people who I see over and over again. In the spirit of those Matt Groening Life-In-Hell cartoons where he illustrated the 9 types of high school teachers or whatever, here's a partial guide to the types of Silicon Valley job-seekers.
The Sysadmin Grognard
Recognizable by: Beard and beer-belly are mandatory. Ponytail, suspenders, and "Slashdot" baseball cap are optional but very common.
Advantages: Experienced, knows every in and out of his chosen flavor of *nix. Can do amazing things with cronjobs, init scripts, httpd.conf, and /etc/hosts. Gets things fixed within minutes of finding out they're broken, even if it's Sunday night.
Disadvantages: Incapable of suffering fools gladly. Thinks graphical user interfaces are the tool of the devil. Programs only in shell scripts and Perl. Says "this job would be perfect if only we didn't have users".
Watch out: If he ever leaves, nobody else will be able to understand how the servers are set up. Ever.
The Conformist Innovator
Recognizable by: He's pushing a business card into your hand and telling you all about his new social networking website startup company.
Advantages: Highly motivated; up on all the latest technology trends; knows influential people; gives cool presentations; brings great new ideas to your company.
Disadvantages: The great new ideas he brings are the exact same great new ideas all your competitors are using. He's not so good at actually building things and gets impatient with the follow-through needed to turn an idea into a usable product. Not knowing history, he is doomed to repeat it.
Watch out: May leave your company at any time he gets an idea for a new startup.
The Young Pythonista
Recognizable by: Wardrobe consists of T-shirts from PyCon 2009, PyCon 2008, PyCon 2007...
Advantages: Smart, eager, thinks outside the box, hates unnecessary complexity and will strive to simplify and streamline everything he works on.
Disadvantages: A language zealot; Complains when forced to use any non-Python language; susceptible to one-true-wayism. Writes slash fanfics about Guido von Rossum.
Watch out for: You come in on Monday to find out he hacked your company's bug reporting system over the weekend to run on Trac instead of Bugzilla because "Trac is written in Python! It must be better!"
The web designer
Recognizable by: Hipster glasses, ironic t-shirt, latest MacBook, latest iPhone
Advantages: Creative, good aesthetic sense. Up on all the latest standards and practices. Cares about making things work cross-platform and cross-browser and knows how.
Disadvantages: Extremely condescending to anyone who can't tell the difference between Helvetica and Arial. Doesn't care what your website actually says as long as it looks good. Thinks the universe began in 1994.
Watch out for: The blank stare of uncomprehension when you say the word "compiler" or ask him to write any code not for consumption by a web browser.
The Straight-Out-of-College Know-it-all
Recognizable by: Giving textbook answers to questions: flawlessly correct in theoretical terms, but completely impractical. Makes you feel old when you realize his first video game system was an N64.
Advantages: Can name all the dimensions of database normalization, find the big-O of an algorithm, and answer questions about scoping and type systems like a language-lawyer. Is used to working hard, completing assignments, and hitting the books when he doesn't know something.
Disadvantages: Is used to being the smartest kid in his class; since he's used to everyone else being dumb he would rather hack alone in a dark corner for hours on end than talk to other people. He will be crushed when he finds out that making real-world software is 60% planning and communicating with a team. Unless he went to a very unusual school, he's never used version control or bug tracking before, let alone written unit tests.
Watch out for: Painstaking code optimization in places where it doesn't matter, coupled with gigantic gaps where it does matter ("What do you mean it has to run on Windows too?")
The Code Monkey
Recognizable by: His resume shows ten respectable, but random jobs with no sign of progression, advancement, or direction. Glazed, dead-inside expression.
Advantages: Does what you tell him to do.
Disadvantages: Does only what you tell him to do.
Watch out for: The time he spends at work daydreaming about what he'd rather be doing with his life.
The Eastern European Linux-Head
Recognizable by: Incomprehensible accent, beard stubble, laptop with GNU and EFF stickers, running obscure Linux distro compiled from source.
Advantages: Passionate; Solid programmer; Saves you a lot of work by pointing out "There's already an open-source library for doing that". Do-it-yourself attitude: gets stuff done.
Disadvantages: Sarcastic, zealous personality frightens other developers. Prone to outbursts of rage over esoterica of licensing practices, or starting flame wars about latest transgressions by Google/Apple/Microsoft.
Watch out for: Time spent at work contributing patches to unrelated open-source projects.
Recognizable by: Indistinguishable from other types unless you stand over his computer and make him write code while you watch.
Advantages: Friendly and charismatic. Has an impressive resume. Flatters you and your company. Makes you want to like him.
Disadvantages: Can't write code worth shit.
Watch out for: He is good enough at BSing his way through interviews that he passed the phone screen and made it to you. He will give vaguely plausible answers to questions and weasel out of being pinned down to specifics. You must expose him before gets hired and ruins your company.
The For Real Deal
Recognizable by: After talking to him for ten minutes you realize that he understands your own project better than you do, despite the fact that you've been working on it for two years and he hadn't heard of it before you introduced it to him earlier in the same conversation.
Advantages: Makes computers do things previously thought impossible, and does it with code that's fast, bug-free, and easily maintained and extended. Ask him to do something in a language he's never heard of on an operating system he's never used and he'll teach himself in under four days. Surprisingly humble.
Disadvantages: He can get a job at any company he wants, and he knows it. He don't need money and he don't need fame, so the only way to get him to work for you is if you're offering him more interesting problems to work on than any other company in the field. Which you're probably not.
Watch out for: Extremely rare. Also, makes you feel dumb.