Jamie Talbot
Medium Engineering
Published in
4 min readJun 9, 2016

--

We recently undertook a project to improve Medium’s engineering interview process. As part of that, I wrote this document to describe the qualities we are seeking in engineering candidates. It was originally published to Hatch, our internal version of Medium, on February 26, 2016. For more information about Medium’s practice of making internal documents public, see Hatching Inside Medium.

This is the actual document used by Medium to define the criteria we look for in engineering candidates and has replaced the version on Hatch as the source of truth. If you apply for a job at Medium, these are the criteria on which you can expect to be judged.

Engineering interviews: what we screen for

Part one of a three part guide to conducting engineering interviews at Medium.

Preface: Refining our process
Part 1: What we screen for
Part 2: What we don’t screen for
Part 3: Grading rubric

This guide is up for continual improvement. Suggestions are welcome for improvements in clarity and precision. However, it is unlikely that the headline capabilities and categories will be changed, unless there are significant new learnings.

At a high level, we care about three things when considering whether to hire an engineering candidate. Can they build software? Can they learn and teach? Are they aligned with our values?

Each high-level heading is assessed in six categories. The rationale for each is discussed below.

Ability to build software

This is the engineer’s core responsibility to the organisation.

Problem solving

We prefer to give employees problems to solve, rather than solutions. It’s high leverage and allows us to move faster as an organisation. If we hire people who can’t solve problems, we will fail.

Code fluency

We have a healthy sense of urgency. We need the candidate to be able to translate their solutions into code without much friction and quickly grok other people’s code (when working in their language of choice). We want Code Reviews to be focused on the validity of the approach, not basic coding issues.

Autonomy

We want to give our employees ownership. Successful engineers need to be able to unblock themselves, search for answers before asking for help, and make reasonable decisions within their scope without seeking consensus. This doesn’t mean they need to work in isolation — seeking input to help solve hard problems is important — but they should be able to drive projects forward, and work independently as needed.

Basic computer science knowledge

Understanding how common data structures and algorithms work — and how to evaluate their trade-offs — are important fundamentals of being able to design good solutions, even if the ability to implement, say, a hash table, is unimportant for the vast majority of roles. Broadly speaking, for most positions we are looking for the appropriate usage of data structures to solve a problem, rather than intricacies or computer science trivia. A more in-depth understanding may be required for certain specialised roles.

System design

Coding in a team is hard, and relies on software being structured in a reasonable way, making use of reusable components, and sensible abstractions. We need engineers who, at a senior level, can design these abstractions and describe how they fit together, and who, at a junior level, understand why these abstractions are important and understand how complex systems are constructed.

Resoluteness

Much of a programmer’s job is being told, either by a compiler or during code review, that their code is incorrect or incomplete. It requires perseverance. Building a product to a deadline, where there aren’t always clear answers requires determination. Someone with a growth mindset will see obstacles as challenges, not barriers. Resoluteness is not about tolerating abusive work environments, but about working diligently in the face of hard problems.

Ability to learn and teach

Candidates who are eager to learn and capable of doing so will develop faster. Candidates who can teach us something about the world or ourselves will help us become more effective as an organisation.

Curiosity

Asking “why?” and seeking answers are crucial parts of building something new. We want employees who are curious about the world and seek to understand it. Intellectual and emotional curiosity drives creativity.

Awareness

Employees who are self-aware and aware of their surroundings ask more questions and make more connections. They have more tools at their disposal to solve problems, and can recognise underlying patterns in systems. They are capable of self-reflection, which enables them to grow. They recognise when others require help, support, or feedback, and when someone delivers critical feedback to them, they are capable of being receptive to it.

Empathy

An empathetic organisation makes it easier to employ the reasonable person principle. Empathy minimises the desire to blame, and helps an employee recognise when someone needs a hand, or deliver feedback in a way that it will be heard. Empathy for users of our product helps ensure we build a platform that solves real needs, and helps us work in such a way that respects the time and energy of our colleagues, by considering them when writing code or designing interfaces.

Communication

Communication is key to everything we do at Medium, whether through describing ideas, discussing approaches, presentations, status updates, or a myriad other avenues. The ability to communicate an idea, and to understand communicated ideas is of critical importance to ensure a well-aligned, agile team.

Collaboration

Although we favour individual action and do not seek consensus, the problems we are trying to solve and the vision we are trying to execute are too big for one person to do alone. Every project will involve multiple people, and employees have to be able to work with one another to be effective.

Perspective

We each have a particular view of the world, but when too many of us have the same perspective, we risk designing incomplete solutions that ignore those who are in our collective blind spot. Each new perspective we can add to the company helps us bridge the gaps between ourselves and the world, and can expose us to ideas that when combined with our own experience, enable us to create something new.

Alignment with our values

  • Build trust
  • Do hard things
  • Instigate change
  • Level up
  • Time is precious
  • Have fun

Ev has previously described these in depth.

--

--

Ex-gaijin, kangaroo-loving software simian from Merrie England, leading folks at @Axios. Formerly @Mailchimp, @Medium, and @StumbleUpon.