The engineering manager’s chronicles: Hiring

Gabriel Amram
Management Matters
Published in
7 min readFeb 28, 2024
Photo by Christina @ wocintechchat.com on Unsplash

Let’s face it, hiring is tough. Finding the perfect candidate who aligns with your company’s culture, possesses the right skills, and brings a unique spark to the team can feel like searching for a needle in a haystack.

But what if you could streamline the process, identify top talent faster, and ensure a positive experience for everyone involved? This post outlines a practical hiring methodology I’ve developed based on real-world experience, offering a step-by-step guide and actionable tips to help you find your perfect match.

The first thing, is to sit down and write a document detailing the what and the how of the process for the roles you are trying to fill. These are excerpts from the document we composed in my previous position.

Goal

The hiring process should be as short and as clear as possible.
We want to get to the right individuals, with the right expertise, the mind-set we value and which their goals align with ours.

The goal of this document is to lay out the methodology we are trying to build for the interview process so we can learn as much as possible on the candidate before deciding whether they are a good fit or not.

What we are trying to achieve

Every hire shapes our team and culture. That’s why we focus on finding candidates who resonate with our values and bring something special to the table. Here’s what drives our search:

PRO tip: These should reflect your company’s values, and your own. The interview process should be mirroring the validation of these values.

  1. Passion — A deep love for software engineering fuels everything — learning, growth, problem-solving, and the relentless pursuit of improvement
  2. Pro-active problem solver — They spot issues and tackle them head-on, always seeking ways to do things better, even if it means challenging the status quo (respectfully, of course). Just dragging Jira tickets from left to right — less our thing.
  3. Agility — Open to diverse solutions and adaptable to changing circumstances. They’ve moved beyond the “one right way” mindset
  4. Service-oriented — They understand the bigger picture, serving customers, colleagues, and business goals effectively. Serviceability also means that they understand they have a duty to other engineers — in terms of readability, code-style, monitoring, maintainability and observability.
  5. Team-player — Collaboration is essential. They’re eager to learn, teach, and build a strong, supportive team environment
  6. Leveling up the current team — no matter the position, the candidate should elevate the current average level of engineers in the same position and experience level. Constantly pushing everyone to grow.

The interview process should:

Lay out the somewhat more subtle things you would like to achieve during the interview process. Both for the team and the candidate

  1. Assess Core Qualities - Evaluate each candidate’s strengths and areas for development across our core values.
  2. Position-Specific Criteria - Tailor the interview to delve deeper into skills and experience relevant to the specific role and seniority level.
  3. Growth Potential - We want to see if the candidate can advance their career with us and contribute meaningfully to the team’s development.
  4. Learning Experience - Offer valuable feedback and insights, so the interview itself becomes a learning opportunity for the candidate. The questions themselves should potentially also teach something new about a technology, a technique and so on…
  5. Positive Impression - Every interaction reflects on our company culture. We strive for a welcoming and informative experience, building positive relationships for the future.
    While a candidate might be irrelevant now for a multitude of reasons, they may act as our ambassadors for future candidates and later stages in their career.

The Matrix

For each role and seniority level we want to identify what is desirable (seek), what should serve as good optional yet valued attribute (value), and what is unreasonable to expect (Don’t expect). This forms a table with the columns being “seek, value, don’t expect” and the rows being each role and seniority level.

We built a matrix of what we think each seniority level in each role requires. As there are no tables on Medium, here it is as a list. I only put the Back-End engineer row as an example.

Junior Back-end engineer

  • Seek: Potential. Imagine their future as a top senior engineer with good mentorship. If you can’t see that growth happening (either because of the candidate, or your ability to help them achieve that point) — it may cause frustrations to both parties quickly.
  • Value: Sponge-like learning, eagerness to develop, passion for learning, problem-solving skills, ability to ask questions effectively, grasp of algorithms and data structures.
    They are starting their career. They should try and acquire as much knowledge and mentorship as possible.
  • Don’t Expect: Clean code, system design skills, or mastery of methodologies.

Mid-level Back-end engineer

  • Seek: Sustained passion (they are still in it because they love what they do, not because of inertia), ability to solve problems with minimal guidance, explain and defend decisions, solid grasp of used tools and technologies, good practices (methodology, planning, testing, code review), and basic system design understanding. No over-engineering!
    (while over-engineering is an unfortunate trait of junior and mid-level engineers sometimes, seek for those that surpassed it)
  • Value: They are starting to look at their career and where it is headed, they are open to learn and evolve.
  • Don’t Expect: Encyclopedic knowledge, ownership of past system architecture decisions, expertise in DevOps, CI/CD, or advanced methodologies.

Senior Back-end engineer

  • Seek: Unwavering passion, continuous self-improvement, adherence to good practices (including clean code, maintainability, readability, design), mentorship capabilities, advanced system design knowledge, understanding of advanced architectures and scaling considerations, deep tool and language understanding.
  • Value: A defined career path, adaptability to changing priorities
  • Don’t Expect (or settle on): Fear of code or hard work.

The process

Write down the process. Find what works best for you, both in terms of what candidates are used to, what your capabilities and resources are and what you are trying to achieve.
Avoid just copying someone else’s process if you don’t understand it.

We believe in finding the right candidate, not just the fastest one. That’s why our process balances efficiency with in-depth evaluation, giving you a clear picture of each candidate’s potential.

PRO tip: Try to keep the process as short and to the point as possible, so both the interviewers, assessors and candidates don’t get frustrated from it. Once again, this is ours, fitting the local ecosystem (i.e. a take-home task which is somewhat common) and our resources (one long technical interview instead of breaking it down to multiple ones).

Phone Screening (15 min):

Briefly discuss the position, product, and expectations. Learn about their past projects and experience.

Technical Interview (2.5 hours):

  • Introduction (20 min): Dive into our solution, tech stack, and team culture through a presentation.
  • Non-Technical Q&A (15 min): Explore their passions, learning styles, career goals, and past methodologies.
  • Project Deep Dive (15 min): Uncover their technical skills through project architecture, decision-making process, and contribution details.
  • Technical Challenge (75 min): Engage them in a practical, relevant problem requiring system design, scalability, algorithms, and data structures. PRO tip: We used a challenge that requires very basic data-structures at first, then gets trickier with an algorithm and then evolves to a full blown scale-aware problem. This rolling problem helps uncover more and more aspects. This method is also helpful as it allows you to use the same challenge for all seniority levels, but expect different answers (or different stopping points) as you progress with it.
  • Wrap-Up (10–15 min): Address questions, discuss next steps, and provide feedback.

(Optional) Take-Home Assignment:

In specific cases, assess deeper coding and planning abilities. If you can asses it otherwise (during the technical interview, by viewing a GitHub repo and so on) — it’s best to skip this one. Only use this if you feel that could help your decision.
Make sure the assignment itself actually checks what you need to assess (this means that if the assignment you have doesn’t assess what you want to check — come up with a new specific one). Don’t waste the candidate’s time, make it no more than a couple of hours long (up to 3.. Certainly not days!).
If they’ve done this assignment and failed — it’s imperative to provide feedback and guidance!

HR Interview:

Ensure cultural fit, values alignment, and overall suitability for the team and company.

Remember: A strong HR interview seals the deal. A candidate’s cultural fit and alignment with your values are crucial for long-term success. If HR’s response is not a strong YES — it might be best to let go, no matter how professional the candidate might seem.

Pro Tips for Attracting Diverse Talent:

  1. Dual Job Descriptions: Provide an “achievable” and an “aspirational” version to cater to different comfort levels. Minorities in tech tend to apply only to jobs they tick all the requirements for. Because the “achievable” version is what you actually need, have this description ready to attract these individuals, while also attracting over-achievers with the more “over-reaching” version.
  2. Inclusive Language: Avoid gendered or stereotypical terms in your descriptions. Terms like “ninja”, “commando”, “knife between their teeth” tend to deter some minorities
  3. Diverse Interview Panel: Include representatives from various backgrounds to foster a welcoming environment. It feels much better to say “yes” to a place where someone like you is appreciated.
  4. The “About-us” section: Just like with the interview panel, showcasing the diverse team in the “About us” section of the company’s website goes a long way at attracting diverse talent. If possible, make sure it appears over-the-fold.
  5. Top of the funnel: Partner with recruitment agencies that prioritize diversity and inclusion in their practices. Emphasize your commitment to building a diverse team in your communication with them. Focus on building a diverse candidate pool through broader sourcing strategies and inclusive practices. If the top-of-the-funnel isn’t diverse, no wonder there’s none in the bottom of it either.
  6. Don’t wait too long for your first diverse hire: It’s tempting at the beginning to fill positions with family-and-friends of current employees. It’s harder to get the first diverse hire once you reach a critical mass of homogenic staff. Break that barrier early and it becomes easier down the line.

This document serves as a guideline for our own hiring process, not a rigid template. Every team and company has its unique needs and culture. The key to success lies in defining your core goals, understanding what goes beyond the job title to identify the best fit, and consistently refining your approach to find the perfect talent for your team.

--

--

Gabriel Amram
Management Matters

Experienced builder, curious explorer | Turning ideas into reality | CTO | Engineering leadership