After a bracing conversation with Alek Sharma, our developer advocate, I decided to write an equally bracing call-to-arms describing our hiring process.
So, you’re a software engineer. You’re adept at creating value from abstract concepts, weaving functions together in the loom of your mind. You know that Real Problems™ involve Real Work™ – a potent blend of success and failure, mixed thoroughly and served with a little umbrella.
You would like nothing more than to be able to work on these Real Problems™, doling out justice to scaling dæmons with grim impunity. But your aspirations are crushed beneath the armored heel of the interview process: instead of accepting your gauntlet, they put you through one. Caught in a stream of phone screens, you say your lines:
“Why yes, I’m very inquisitive.”
“Self-starter? I start myself every morning.”
“I am a refactoring factory.” (This one is on Alek’s LinkedIn profile, please don’t steal it.)
When you get on-site, you’re ushered into a room, where you sit for thirteen minutes, sipping a lukewarm can of Lime LaCroix. A solemn engineer wanders in, introduces themselves, and makes some Smalltalk. Eventually, though:
“Reverse a linked list, in place…,” your interrogator intones.
Then they point an index finger at a frosty whiteboard. It won’t even be white, either – you’ll see pastel streaks of EXPO markers, shameful remnants of your unfortunate predecessors.
Beads of sweat break forth on your brow. If only you’d cracked open Cracking the Coding Interview…
Awake From This Nightmare!
…because you’re at CircleCI, and we don’t do whiteboard interviews – hand-written code doesn’t compile or execute.
Whiteboarding interviews are for companies who don’t know what they want. They’ll have you write until your hands are cramped, but all they’ll learn is how well you pseudocode on a wall.
This is how we use our whiteboards here at CircleCI:
Brainstorming! Diagrams! Mind maps! All of these are Good Things to use a whiteboard for. Nowhere will you see the rotting remains of some poor soul’s interview.
We don’t care how well you solve arbitrary mind riddles because that’s not What We Do here.
We Believe in Pragmatic Engineers
What we do is write and ship software. We like to think we’re pragmatic about doing this, which means we favor “shipped” over “perfect”. That’s why we write in Clojure, a language designed to get things done. We don’t hire purists or professors – we don’t have time for that.
That doesn’t mean we’re sloppy, though: no, we move fast and avoid breaking things by writing tests and continuously integrating our code.
So we’ll want to hear about how you do those things. We’ll have you work on actual bugs in our actual code because we want you to know what you’re getting into.
We Also Believe in Human Engineers
Good engineers know how to communicate.
Complex systems lose their mystique, debate turns to compromise, and we’re all just generally happier. This is why our interview process involves so much talking: we want to like you, and we want you to like us. When we can’t get along, it’s a lot harder to write good software.
And communication is even more important because our team is spread across the world: yes, we have engineers in San Francisco, but we also have them in Boston, Toronto, Dublin, Berlin, Tokyo, Sydney, and beyond.
This is why you’ll pair with us on a real feature or bug. Because that’s what you’ll be doing on the job; not every day, of course – people need their personal space – but collaboration is a crucial part of working here.
So stop whiteboarding and apply now.