As previously published on our blog...

How to Ace a Software Decomp Interview

Coding. Algorithms. System Design. These interviews, to assess core skills necessary for a successful career at Palantir, remain at the heart of our hiring process. But as our company and products have evolved, so has the range of skills we need in candidates. We’ve recently added a decomposition interview to our slate, and, as we’ve done in the past, we’re going to go ahead and offer some tips for how to do well in this portion of your Palantir interview.

What is Decomp?

Short for ‘decomposition of problems,’ the decomp interview helps us get a sense of how well you’re able to break down a problem into its nitty-gritty components, before the actual nitty-gritty building begins.

The software engineering problems we encounter are often nebulous and complex, and require engineers who can break them down, develop a reasonable first-pass solution, and independently take steps to execute that solution. Decomp is a collaborative process – it might involve some coding or sketching out of what the code may look like. But most often, it involves whiteboarding and brainstorming with another dev to talk through the potential feature set.

This reflects what working at Palantir is actually like. Engineers have a tremendous amount of freedom here; our devs aren’t given features described to full specifications simply to implement. Rather, our customers typically give us an idea of what they think they need, but don’t know how to explain fully or build themselves. Since our work is constantly evolving, decomp is essential for all of our devs to be able to strategically assess the work that lies ahead.

We need people we can trust to do the right thing without a lot of supervision—people who can own large projects and take them consistently in the right direction. Invariably, this means being able to communicate well with the people around you. Decomp boils down to being able to see and do the right thing. We want to see if you can take nebulous requirements and translate them into something actionable. The result might be a complex, well-scoped system, or just a basic solution that solves a particular need.

Interviews

Decomp questions tend to be about designing a system or feature. We are looking for you to break down the problem, identify potential roadblocks, and develop a solution. From there, you’ll be having the same kind of conversation with your interviewer as you might have with a colleague in a planning meeting. This means that you’ll be shaping the discussion and the problem space. Some tips:

  • Ask clarifying questions
  • Make a sketch so that you understand the system
  • Write a list of pros and cons for a given approach

In imitation of the collaborative environment at Palantir, your interviewer might suggest alternatives to your solution or point out problematic areas, looking for you to adjust or defend your course of action. Since there are many tradeoffs in any system we design, your interviewer will prod at your approach – don’t be afraid to defend elements that you feel are better than the alternative! But you should also be prepared to accept and incorporate a different implementation than what you had initially envisioned; flexibility is key in good decomp.

Try This At Home!

The best way to prepare for a decomp interview is to try it out yourself. There is really no substitute for practice, here.

  • Pick an open source project that interests you and figure out how you would design it. Bonus points if you then look at the real-world implementation and see what tradeoffs the authors decided to make.
  • Grab a coworker or classmate and try to do a design session with them. They should be involved in the session as well – together, the two of you should come up with the best solution possible.
  • Pick a problem and think through all of ways a solution might fail. What if there are hundreds of users? Millions of files? Tons of data? Building the intuition around how to suss out scale constraints will help you approach decomp in a structured way.

Just In Case…

We hope this post has given you a good idea of what to expect and what to prepare for in your decomp interview. But just in case, here are a few pointers on what to avoid:

  • Indecisiveness: We know it’s tempting to spend a long time considering many different paths of problem solving, or to defer to someone else to bear the impact of making decisions. But being unable to decide on a plan of action, or being unable to support your decisions, is not particularly valuable, and can slow the entire project down.
  • Stubbornness: On the other hand, if you’re unwilling to be open to new design ideas, that can be a red flag. At Palantir, we believe the best idea wins. Decomp is often a healthy balance of supporting your own work while still listening to input from others.
  • Creating solutions in a vacuum: a perfect solution is very nice, but often impractical. If your solution doesn’t have a clear context, it’s not going to be useful.
  • Unconstrained problem solving: Your interviewer is going to present an extremely broad problem – way too broad to tackle in its entirety in a 30-minute interview. Focus on the aspects that are most interesting to you, and avoid getting lost in the weeds.

Good luck!