Read our newest book, Fundamentals of DevOps and Software Delivery, for free!

How We Hire at Gruntwork

Headshot of Josh Padnick

Josh Padnick

MAY 28, 2019 | 10 min read

A few members of the Gruntwork team from GruntCon San Francisco in October 2018

We’re actively recruiting our next senior engineer right now, and I’ve explained our hiring process to everyone I interview. I finally had the amazing insight that I could just write it down, and that’s what I’ll cover in this post.To read about how we work at Gruntwork, check out our related post on How we built a distributed, self-funded, family-friendly, profitable startup.

First, what exactly are we trying to achieve with our hiring process? Many companies say they’re looking to “hire the best.” But that’s not really the goal. The true goal that Gruntwork cares about and really that all companies care about is building a high-performing team.

Our first insight here was that everyone we hire is going to have strengths and weaknesses. In fact, sometimes the very qualities that enable a person’s strengths are the ones that cause challenges in others areas. Rather than pretend that everyone is strong at everything, we try to mix and match individuals’ strengths and weaknesses so that the team as a whole is strong across the board.Second, being a person you’d look forward to working with goes a surprisingly long way. Again, work — like life — is full of ups and downs, challenges, victories, failures, discoveries, mistakes and more. That journey is a whole lot more enjoyable if you like the companion walking right beside you. So how well prospective hires get along with their future teammates really does matter to us.Third, it’s important to calibrate the right level of experience. A team of all juniors is going to be the “blind leading the blind.” But a team of all seniors could risk endless religious debates on design. So we aim to have a strong technical leader, a solid core of senior engineers, and a handful of junior engineers. But of course, sometimes you just get a feeling about a candidate, and adjust along the way.But we don’t hire a whole team at once (that would be an acquihire!), so when we interview individuals we look first and foremost for effectiveness.

When we think about what makes our company actually function, we found that we value people who take ownership, get things done, communicate effectively, and care about doing the right thing. Grunts who do these things are, by our own internal definition, very effective at their job. In fact, these are the four core ways that we evaluate not only prospective Grunts but also the Grunts already on the team when we think about who deserves a promotion.It’s interesting to note here that technical skills are really just implementation details of effectiveness. Even a junior engineer with relatively little experience and knowledge can still take ownership of a project by learning whatever skills are necessary, speaking up if they hit challenges, and proactively communicating their status. And even the most skilled senior engineer adds little business value if they refuse to take ownership, communicate effectively, or get anything done.Of course, strong technical skills matter. But really they’re just an enabler for helping us build an effective team.

Gruntwork is 100% remote, and ideally we could hire from anywhere in the world. But in practice, we’ve discovered that having a large time zone gap between Grunts can make it hard to collaborate. So we require that Grunts live somewhere in the time zones in or between San Francisco, California, USA and Helsinki, Finland.Today we have two “timezone clusters” of Grunts: USA and Europe/Africa. About half the team lives in each timezone cluster, and we try to keep them balanced as we grow. This means that Grunts will occasionally speak with someone from across the Atlantic, but increasingly we try to setup core collaborators in the same cluster.When people aren’t pressured to work late into the night or get up early in the morning, we can build a well-rested team. The late nights or early mornings still happen on occasion, but increasingly we try to structure our working relationships so that it’s not the norm.

We are strongly committed to building a team that is diverse in gender, sexual orientation, cultural background, geography, age, and life experience. But how do we find candidates from all backgrounds? And should we ever prefer a minority simply because they’re a minority?After much discussion, we realized that creating a diverse team sounds like a worthy goal from the perspective of the business, but from the perspective of the candidate, you want to be hired for your skills and accomplishments, not your demographic status.So we focus on filling our hiring pipeline with people from underrepresented demographics. In fact, we have a commitment that every new position must have an underrepresented demographic in the final running before we can make a final decision on who to hire. Among the candidates in the final running, we ignore demographic traits and choose the most qualified candidate.We think diversity is a good in itself. It helps us build a team with more perspective, openness, and empathy. People who live in different countries and come from different backgrounds bring to the table different life experiences that can often challenge some of our hidden assumptions. Indeed, one of the most rewarding aspects of Gruntwork for me has been how much I’ve learned about other people in other parts of the world.

Now let’s talk about how we find candidates in the first place.We discover prospective Grunts when people email us to apply for a position (inbound), and when we reach out to people we’ve encountered who seem impressive (outbound).

If you’d like to work at Gruntwork, email us at with a note about yourself and include any information you consider relevant.When we receive a submission, a few of us “vote” on a candidate using Slack emoji reactions. If a candidate gets enough +1s, we reach out for an interview. We review 100% of the submissions we get, but because of the high volume, we only respond when we’re ready to schedule an interview.So what makes a candidate worthy of a +1? Let me start by saying that evaluating candidates is really hard. Some candidates have unambiguously amazing accomplishments and some candidates are clearly unqualified, but most candidates are in the middle ground where you’re just not sure how they’ll do.That being said, here’s what we look at today:
  • We love to see open source contributions. However, we understand that not everyone has the time and privilege to do that, so we especially like a well written and thoughtful intro email.
  • We love to read your blog posts on specific technologies you’ve used, or general commentary on industry trends.
  • We look carefully at your previous jobs to see what you accomplished while you were there.
  • We look at your educational background, both formal and otherwise.
  • And of course we always love contributions to any of our own open source repos such as terragrunt, terratest, cloud-nuke, kubergrunt, or fetch. (Hint: You can try out working with us for free just by opening a Pull Request on one of our projects!)
We use these signals to make quick judgements about who we think will be an effective Grunt. But it turns out that it’s precisely these quick judgements that gloss over the statistical biases hidden within. For example, we value open source contributions, but as of 2017, just 3% of all open source contributions are from women (source). Likewise, the reality is that contributing to open source requires either a job that promotes it, or the privilege of time to do it on the side.At the same time, we must rely on some kind of signaling to evaluate a candidate. How do we balance our need to evaluate with the reality that biases are all around us?Unfortunately, there’s no good answer. We recognize that not all candidates get the same head start in life, and yet each individual still has the burden of proving themselves to their prospective employer. Many candidates will confidently apply to us, and we look forward to reviewing you, but for those candidates who fear their signals are too weak despite their best efforts, we hope our awareness of these challenges gives you the courage to reach out.

When we encounter great written content, a compelling speaker, or a person whose interests seem to align uncannily well with our goals, we reach out to them proactively. We never send generic emails when we reach out. We take time to carefully consider each person’s background, and think about why the candidate impressed us. This is time-consuming, but we’ve met some of the best people this way.

If an inbound candidate earns enough +1s or an outbound candidate expresses interest in talking further, we setup interviews.We’ve all experienced the Dilbertesque dystopia of a pointless or undignified interview process. We think white board interviews in particular tend to select for candidates who interview well, not who do their job well. Other interview processes are subject to unconscious bias, or drive candidates to think they are better off lying than being truthful.At this stage, we’d like to form an opinion on how well a person will do at the position for which we’re hiring. But most interviewing is ineffective at assessing that, so we use our interviews to decide something simpler: do we think it’s worth working with this candidate for 1 day on a real project to see how we all like it? That’s called our trial project, and I’ll offer more detail on that shortly.Our interview process itself is meant to be more of a conversation, and here’s what we do to address the issues above:
  • 1.We have each candidate speak independently with at least three Grunts. We do not share our interview notes with each other until after all of us have completed the interview. That means one enthusiastic or disappointed interviewer can’t unfairly influence the others.
  • 2.We don’t do technical screenings. Instead, we just talk. What kind of work are you most interested in doing at this step in your career? What’s a project you worked on recently that you’d like to talk about? What questions do you have about Gruntwork? What do you think about technology X?
If all three of us plus the candidate themselves get a good feel from the conversation, we proceed to the trial project.

The best way to see if we all work well together…is to actually work together! That’s why we do a one-day trial project with all candidates. Here’s how it works:
  • We identify a handful of real-world tasks that we actually need done in the company and ask you to choose one. These projects tend to be self-contained in the sense that executing on the project does not require ramping up on other, dependent projects. They also tend to be possibly doable in about a day. How you handle the “possibly” is part of the experience. :)
  • We agree on a day to work together.
  • On the trial project day, we grant you access to a single channel in our Slack workspace and do whatever we can to help you execute on your project.
Identifying a project, assigning it to you, and working with you to get it done is pretty much how we actually work together every day. The trial project process isn’t perfect, but it’s the best we’ve found so far.

If we all agree the candidate performed well on the trial project and the candidate enjoyed the experience as well, the next step is to make an offer!Again, we’re weary of repeating standard yet broken industry practices here. Our industry continues to suffer from a gender pay gap, often bases your new salary on the previous salary you had, and rewards being a good negotiator more than being a good candidate.The solution to all of these problems to make compensation formulaic. We compute your salary as follows:[Average salary for your position in New York City] x [Gruntwork multiplier]= Gruntwork SalaryFor example, we look up the average salary for a “senior software engineer” (or whatever position we think is appropriate) for New York City using a number of sources, and then multiply by our multiplier (currently 1.5 with aspirations to increase it more). This ensures that we’re always paying above market and that you’re usually earning a fair salary for where you live.We have other formulas for computing your bi-annual bonus, your stock grants, and every member of the company gets access to the same level of benefits.Using compensation formulas has led to some interesting surprises for us. We once changed our formula after a candidate already accepted their offer but before they started, meaning we gave them a raise before their first day of work! Or when one employee has a situation that makes us want to increase their salary, we realize we can’t do so without bumping everyone’s salaries.It also feeds into one of our core values of transparency. Everyone knows what everyone else earns. Everyone knows how big the bonus pool is and how much of it each person in the company received. It’s a subtle effect, but we’ve found that formulas and total transparency in compensation fosters a deeper sense of team. We all get a big bonus, or potentially none at all.

Now that you know all about our hiring process, we hope you’ll reach out to us! There is no “company,” there are only people who work in that company. Our colleagues are the community we have at work. They’re the originators and executors of the ideas that make up our products. They are Gruntwork itself. If you feel inspired by some part of Gruntwork, we hope you’ll give us the pleasure to meet you and possibly begin a conversation.

Explore our latest blog

Get the most up-to-date information and trends from our DevOps community.
TerraformResouces Image

Promotion Workflows with Terraform

How to configure GitOps-driven, immutable infrastructure workflows for Terraform using Gruntwork Patcher.

Jason Griffin

October 3, 2023 7 min read
TerraformResouces Image

The Impact of the HashiCorp License Change on Gruntwork Customers

How to configure GitOps-driven, immutable infrastructure workflows for Terraform using Gruntwork Patcher.

Josh Padnick

October 3, 2023 7 min read