But Where Do People Work in This Office?

In one study after another, workers failed to give much weight to decor in choosing, for instance, among variously colored panels and fixtures. The feeling seemed to be that depressing surroundings would be counterproductive, but as long as the office wasn’t depressing, then you could happily ignore it and get down to work.
So we see the paradoxical phenomenon that totally unworkable space is gussied up expensively and pointlessly with plush carpets, black and chrome furniture, corn plants that get more space than workers, and elaborate panels. The next time someone proudly shows you around a newly designed office, think hard about whether it’s the functionality of the space that is being touted or its appearance. All too often, it’s the appearance.

Peopleware, “The Issue of Glitz”
I’ve become fascinated by the concept of office space design for knowledge workers, in particular software developers. There’s a fantastic site called Office Snapshots that gathers information and photos about the offices of hundreds of companies, including many well-known software companies.

We’ve all heard about the lavish offices of Silicon Valley, where tech companies gather the best programmers in the world and spare no expense to provide for their every need. After looking through tons of cool office photos of many of the hottest companies in the Valley, I started to play a fun game I made up called “spot the desks”. I’ll show you what I mean.


Mark Zuckerberg recently engaged world-famous architect, Frank Gehry, to design “the largest open-plan office in the world.” Since that one’s still in the offing, I’ll share a few photos of Facebook’s existing campus in Menlo Park.

An all-you-can-drink coffee bar with free snacks!

A bright mural and custom-made propaganda posters (HACK! MOVE FAST & BREAK THINGS!)

I see a lot of awesome stuff, but where is the quiet area where your big brains go to make world-changing software? Oh, jeez. Were the geniuses that wrote Cassandra and HHVM sitting in a bullpen like this?


In the tech mecca of San Francisco, let’s check out Twitter’s headquarters.

There’s that coffee bar again. More free snacks!

It’s like a Dave & Buster’s up in here!

Ok…now where do the developers sit? Oh, I think I see them in the background of this conference room photo. Wow, that looks kinda noisy. Is that guy at card table #2 working on Bower?


We could go on all day, but let’s check out one more office. Who doesn’t love Dropbox?

It’s like they have their own Panera!

Just chillin’ in my treehouse / log cabin / conference room…

You know the drill by now. Let’s see where the desks are where the devs have their big monitors, keyboard, ergonomic Aeron chairs, and all their gear set up. You know, where they get in the zone and write that world-class code. Wait…what the f*ck!? I wonder how many MIT grads per square foot you can fit in here?

I could go on and on and on. The pattern keeps repeating. With everything we know about open plan offices, why are these mega-rich companies knocking themselves out to hire the very best and brightest minds from the world’s best universities, paying them huge salaries, tapping world-class architects to design artisanal office spaces in the most expensive place in the country, and then cramming desks together in noisy bullpens?

People Hire Clones of Themselves

Here’s a recent exchange I had in the comments of yet another post about the challenges of hiring software developers on Hacker News:

...a lot of companies that are selling pants online are searching for PhD-level engineering talent to run their shopping cart.

I've noticed this, too, and been baffled by it. My working explanation is that people tend to hire clones of themselves. If the people making the hiring decisions in that online pants company have PhDs, they'll believe they need PhDs to work on that shopping cart.

> people tend to hire clones of themselves
Winner winner, chicken dinner.
Ask a company that is hiring "is X important?", where X is one of {open-source coding, algorithm design, Ivy league degree, master's degree, MIT degree, Facebook alum, Google alum, presence in Silicon Valley, under 25 years old, over 25 years old, has a github, has a blog}, and you will get a "yes" for each X that the founder has.

This ended up being my highest rated comment on HN, so I thought it’d be worth expanding on with a blog post.

Hiring Is Hard

Hiring software developers is complicated and damn hard. Just hang around Hacker News, Twitter, or your favorite software blog aggregator and you’ll see people endlessly debating the best way to hire good software developers. It’s clear that as an industry, we’re not even close to reaching a consensus, much less even general best practices that most people agree on.

It’s not surprising then that the software industry generally sucks at making high-quality matches between organizations and potential hires. I won’t pretend that I have answers, but I just want to highlight one aspect of hiring that can be particularly baffling, especially if you’re a young software developer early in your career and trying to figure out where you fit in.

No One Thinks They Suck

In light of the bewildering difficulty of vetting software developers, an interviewer/evaluator often turns to the one exemplar of excellent software development he knows better than any: himself.

People tend to unconsciously assume, “If I hire someone like me, then I know they’ll be good, because I’m good.”

Psychologist Dr. Robert Cialdini explains in his classic book, Influence:

We like people who are similar to us. This fact seems to hold true whether the similarity is in the area of opinions, personality traits, background, or life-style.

Car salesmen, for example, are trained to look for evidence of [backgrounds and interests] while examining the customer's trade-in. If there is camping gear in the trunk, the salesman might mention, later on, how he loves to get away from the city whenever he can; if there are golf balls on the back seat, he might remark that he hopes the rain will hold off until he can play the eighteen holes he has scheduled for later in the day; if he notices that the car was purchased out of state, he might ask where the customer is from and report--with surprise--that he (or his wife) was born there, too.

Now, Cialdini was talking about a car salesman trying to move merchandise. But in a hiring situation, the candidate’s future work is the merchandise. The more that the candidate seems like the interviewer, the more likely the interviewer will want to hire that candidate.

That’s not to say that candidates do or should manufacture their interests and backstories. But if the interviewer puts a lot of effort into blogging, and the candidate has an active blog…or the interviewer has a side project in Haskell, and the candidate mentions that Haskell is their favorite programming language…or they both like to tinker with Linux in their free time…you get the idea.

I am not immune from this bias. I’ve found myself warming up to interviewees when I discovered they used ReSharper (one of my favorite development tools), were interested in the same bleeding-edge JavaScript framework I was, or something as utterly irrelevant as we both loved indie music. None of those things are direct evidence that they would make good software if they were to join my team.

There can also be a bias toward people who took the same path that you did to get where you are. If I earned a Computer Science degree before starting my career, and you didn’t…or software is my first career, and you transitioned to it from a different career…or I’ve worked for tech companies, and you’ve worked in a technical role for non-tech companies…again, you get the idea.

I’m not trying to point fingers here—we all have our biases and blind spots. I just want to make the point that objectively vetting software developers is hard as hell and many interviewers are not very good at teasing out the stuff that matters: will this person deliver high-quality software if they were to join my team? It’s super easy to fall back on: are they like me?

“Cultural Fit”

There’s a general catch-all term for the non-objective criteria by which companies decide go or no-go on candidates: “cultural fit”.

There are explicit laws against rejecting a candidate because they're not the same race as you, or the same sex, or the same religion. But some people will freely reject you for reasons that don’t necessarily seem relevant to the daily work they do, like they have a degree from a name-brand college and you don't, or because they attend hackathons and you don't, or they've memorized the merge sort algorithm and you haven't. People will sometimes jump to conclusions about your ability as a developer based on lifestyle choices you've made, what you do in your free time, or your preference for one programming language over another.

It can be frustrating that some teams get very micro-focused on the smallest aspects of software development, while being far from getting the most basic things right. There are about a million and one ways to effectively deliver software. At the end of the day, does it really matter if one team writes specs and the other writes unit tests? One hand-writes their SQL queries and another uses an ORM? One uses Gulp and another uses Grunt?

It’s Not You, It’s Me

Again, my aim with this post is not to condemn the way that people make hiring decisions, but just to help explain what can be the somewhat baffling way that groups of people choose who will join them.

Just be aware that simply being good at what you'd assume are the objective aspects of your job as a software developer (delivering high-quality software on time) are not always enough to land a job with a specific group of people. Much like dating, you can't take "rejection" personally. Just because you didn't fit one person (or one organization's) image, doesn't mean anything about your general worth. Sometimes it takes just finding a group of people whose preferences align with your own.

When new companies appear on your radar (and you’re open to a career move), you can save a lot of time and shut down unproductive avenues by paying close attention to the “cultural” aspects. If a culture clash is coming, it’s better to find out sooner rather than later, as those opportunities won’t work out in the long term.