In part 1 of this series about hiring, I described the key principles that drive our hiring process, as well as the competencies we evaluate and challenge. In a nutshell, our principles are:
We hunt for and hire T-shaped engineers
Our hiring process is short
We avoid biases
We prioritize system and software design over coding
We prioritize collaboration and self-organization over charisma and storytelling skills
We prioritize hiring engineers with the right mindset for the team: either tech-minded or product-minded people
We hire to minimize turnover
Whenever there is any doubt, there is no doubt
In this part, we'll take a deep dive into the hiring process. The goal is to give a concrete example of how we apply those principles. There are likely many ways to design an interview process that fits both our values and the needs of the company or organization. However, starting from something is often a good approach. The aim of this post is to inspire other tech leaders who may need to structure their approach to hiring and to help future Meetic applicants prepare for the interviews.
Overall, our hiring process consists of three interviews:
The first screening call
A technical and collaboration skills interview
A delivery management interview
Each step helps us gain a better understanding of how the applicant thinks, their previous experience, and their potential for growth at Meetic.
In my previous post about Meetic's engineering organization, I explained how our matrix organizational structure relies on both the hard and soft skills of our software engineers. We need both to maintain high-quality standards in our tech systems and keep pace with product innovations. This requires engineers to be proficient in writing software and collaborating with product teams.
However, it is one thing to write about the importance of working with skilled professionals, and another to actually find and hire them. Google, Apple, and Facebook all claim to hire the best, and Valve was already doing so in 1996. Similarly, Reed Hastings begins his book about Netflix culture by stating that the content only applies when working with the best.
But what if you're not a Big Tech company? What if you cannot afford to pay everyone in the 90th percentile of San Francisco market rates, regardless of their role or location? In the last decade, there has been inflation in engineers’ salaries in France and elsewhere, making it difficult to attract the best talent even if things stabilize.
Although Meetic does not face the same engineering challenges as Google, Netflix, or Apple, we are still a social network with millions of active users in Europe. Running and improving the platform requires a certain level of skill. In addition, our organization values the soft skills of our engineers.
In the past few years, I have spent time working on the topic of hiring, first as a backend tech lead, then as an engineering manager, and now as an engineering director. Despite not being Google and not likely to hire the best among the best, I've wondered about what constitutes a good hiring process. How can hard skills be evaluated consistently with the job to be done? How can engineers be attracted and evaluated in the same hiring process?
Meetic, like most tech-first companies, needs to keep its code base clean and scalable. It is our biggest asset, and we need to take care of it. Most companies are either good at shipping fast or maintaining high code quality. Doing both is hard and we've been working on this topic for a while.
While there is still room for improvement, I considered we have found the right balance between long-term tech projects and product development. I'd like to share the receipt. Of course, there is no one-size-fits-all when it comes to organizations, roles, and processes. However, the organization I describe below and the design principles on which it relies are pretty common. Especially for companies that work with both web apps and native apps.
In this post, I'll deep dive into 3 key factors that have helped us achieve great product development success and high-quality standards :
The way we run our teams and our tech communities
The hard skills we expect from the Engineering Managers and the role the Tech Leads play in the tech communities
The hard and soft skills we expect from the Software Engineers
Let's face it, your company is not a Big Tech company. You, the reader, are probably not working for Google, Microsoft or Facebook and it's ok. A lot of companies not so big have a huge impact and very high tech challenges.
But not being a big tech company also means you probably won't be good at what you're doing if you act the same way Facebook or Amazon does. This is true for tech choices and system architecture. This is also true for recruiting software engineers.
In my journey looking for the best way to manage my to-do list, I recently tried to create a Trello board where to put all the new tasks added to my personal backlog. My choice of using Trello was based on several needs:
Being able to follow up all the in progress tasks
Being able to order tasks by priorities
Since Trello is very flexible, I thought that I could create one card by item and three columns: to-do, work in progress, and done. But then, I started to have lots of cards in my to-do column and thought I needed to re-order all the cards to be able to quickly see which have a high priority and which can wait.
I first tried to create an intermediate to-do column called “today” where to put the item I needed to be done by the end of the day. I quickly found out I still had to deal with all the other cards in the “to-do” column which needed review each morning. Thus, I moved once again and created three to-do column :
Backlog
Priority #3
Priority #2
Priority #1
For a while, this system seems perfect. Each time I had completed a task, I was able to see which one will be the next to focus on by looking at the priority #1 column. I had a clear view of what I really needed to do at any time. Every week or so, I reviewed my to-do lists in order to move cards from lower priority to higher. Or, at the contrary, I lowered the priority of some tasks considering they were supposed to be priority #1 but I hadn't time to work on it and the world didn't stop.