Hiring the right developers is crucial for building great products, scaling your team, and maintaining a productive work environment. Having gone through both sides of the hiring process—as a candidate and as a hiring manager—I’ve learned valuable lessons that I’d like to share, along with my approach to technical assignments and interviews.
The Start of My Journey: Amazon’s Approach to Hiring in 2019
In 2019, the year I graduated, Amazon Spain held a hiring event in Egypt. I successfully passed their online interview and was invited to an onsite interview in Cairo. At that time, I was living in Alexandria, and to my surprise, Amazon booked me round trip flight tickets:
and a hotel for the trip:
Their professional and considerate approach to candidates left a lasting impression on me and has influenced how I think about the hiring process.
My First Job in 2021
I landed my first job in 2021 in Dubai. This role marked the beginning of my professional journey and taught me invaluable lessons about both being hired and hiring others.
The Start of My Journey: My First Dubai Job
When I applied for my first job in Dubai in JLT, I was given a challenging online assignment. I completed it with great effort and submitted it, but I made a bold move: I asked to be compensated for the time and effort I had invested in the task. To my surprise, the company was taken aback. Back then, it was rare for companies to consider paying candidates for interview tasks. This experience stuck with me and shaped how I approach hiring now that I’m a CTO.
Why I Pay Candidates for Interview Tasks
When I became responsible for hiring developers, I knew I wanted to change the experience for candidates. That’s why I decided to pay candidates for completing technical assignments during the interview process. I believe this shows respect for their time and effort and provides a fair assessment of their skills without exploiting them. It also sets the tone for a positive relationship with potential hires, even if they don’t end up joining the team.
The Assignments I Use for Mobile and Backend Developers
I designed two assignments to assess candidates’ skills:
- Backend Assignment: This focuses on core backend skills like building APIs, handling data, and demonstrating a good understanding of frameworks and database management. It allows me to see how candidates structure their code, adapt to old limit framework versions, and handle real-world challenges.
- Mobile Assignment: This assignment evaluates candidates’ ability to create a functional, user-friendly mobile application. It emphasizes clean code, responsiveness, and attention to detail.
These assignments are not only practical but also designed to mimic the type of work the candidate would do on the job. I’m looking for problem-solving skills, code quality, and how well they understand the requirements—not just whether they get everything perfect.
What I Focus on During Interviews
When evaluating developers, I prioritize the following qualities:
- Problem-Solving Ability: A developer’s ability to break down a complex problem and find a solution is often more important than their familiarity with specific tools or frameworks.
- Communication Skills: Can the candidate explain their thought process? Are they open to feedback and willing to discuss alternative solutions?
- Real-World Impact: How well can the candidate translate their technical skills into value for the company? I measure this by assigning small tasks related to our actual production projects.
- Culture Fit: Is the candidate aligned with the company’s values and work culture? Will they work well with the existing team?
Managing Multiple Onsite Interviews
At one point, I interviewed tens of candidates in just a few days, Here’s how I managed it:
- Standardized Assignments: Using the same assignments for similar roles helped me objectively compare candidates’ performance.
- Structured Interviews: I divided interviews into sections, focusing on technical skills, problem-solving, and cultural fit.
- Immediate Feedback: After each interview, I took detailed notes and scored candidates based on predefined metrics.
Measuring Suitability Through Paid Tasks
One of the most effective ways I’ve found to evaluate candidates is by assigning them small, real-world tasks directly from our production environment. I bring candidates onsite, provide them with a machine pre-configured for the task, and observe how they approach the work. This setup gives me a clear understanding of their potential job performance. To ensure fairness and respect their time and effort, I always compensate candidates for completing these tasks.
Final Thoughts
Hiring developers isn’t just about finding someone who can write good code; it’s about finding someone who can solve problems, collaborate effectively, and contribute to the team’s success. By focusing on real-world skills, compensating candidates for their time, and maintaining a structured process, I’ve been able to build strong teams that deliver results.
I hope my approach inspires other hiring managers to rethink their processes and prioritize fairness and transparency. After all, the way you treat candidates during the hiring process sets the tone for their entire experience with your company.