Hiring is a human process. You find, evaluate, hire, or pass on folks just like yourself. This critical idea boils down to a simple prescription: treat candidates as human beings [1]
Recently, I have been involved in a process for hiring software engineers and I have to confess it has not been an easy feat — particularly because I have had to help to hire backend, fronted, mobile, automation and systems engineers and almost all my life I have been a backend software engineer. I just got a position in which one of my responsibilities is helping to identify and recruit technical talent, with particular depth in specific software development areas.
The written mission on the page: find the best technical talent. The mission in my mind: find the person who you are going to lead and with whom you are going to share 9 hours a day.
Today, Software Engineers and Developers are in high demand and finding technical talent can be as frustrating as to have to improve the performance of a software application. One of my leaders in the past, once said: I prefer missing out on five right persons than hiring one wrong employee. So, considering the importance of my task, I would like to document my story and share the record of my issues, challenges, and successes in this journey.
These books were a great inspiration: Building Great Software Engineering Teams and How to Recruit and Hire Great Software Engineers.


In the next 3 entries, I am going to address: How did I begin this mission? How to identify the seniority in the interview? The Technical Test, The On-site Interview, Who should participate in the interview? How to Identify Soft Skills and finally My Learnings. For now, How did I begin this mission? and How to identify the seniority in the interview?
How did I begin this mission?
Hire people who have a growth mindset characterized by a love of learning, resilience, and a belief that work and practice will grow the necessary abilities.
The first approach when I am learning to do something is looking at how others do it. I took as a starting point: the documentation included in the HR wiki, some ideas of my previous jobs and Google. Here, I am going to discuss two curious recommendations available on Internet.
Recommendation 1: Look for Someone Smarter Than Yourself
As soon as I read this, I thought: what should I ask for identifying someone smarter than me? Should I use Hackerrank problems which I was not able to solve? If I wanted that the interviewee demonstrates his skills, what does it make sense of asking for a problem without a solution? My strategy, start the interview asking the candidates to tell me about the problems they worked on and how they solved them. After that, I included questions such as:
- How do you simplify and deep dive a problem?
- How much time do you spend reading and writing?
- How do you achieve the focus?
- How do you prioritize your tasks and finally
- How do you manage the failure?
Recommendation 2: Be Flexible With Programming Languages and Tools
What was the meaning of this? Should I remove questions such as: Can you overload or override static methods in Java ? … or What is an Optional in Java? In my case, I was looking for engineers with experience in Java, Spring, Maven, Angular, … so I must ask them this. My strategy, send a technical test for home and schedule an on-site test. In the on-site interview, I included technical questions, some of them focused on the programming languages but with a particular interest in algorithms and complexity. For instance, asking about the sorting methods available in the Java collections, I asked How could they improve the time taken for adding or removing an element in a Java ArrayList.
How to identify the seniority in the interview?
If you find yourself rejecting candidates primarily because they need more experience, consider making an investment in providing that experience yourself [2]

Software Engineers are usually classified as an intern, junior, middle, senior and principal. The differences between these classifications involve their years of work experience, level of expertise, and scope of responsibilities. So, How could I know that the candidate was a junior or senior engineer? Considering that it is not the same to be a Junior Engineer in a Startup than in Big Company, one strategy that worked for me was including between the first questions: What is your seniority level? and How do you plan to reach a principal position? According to [1] a junior engineer may not be able to tell the difference between a senior and a principal engineer and may even make the mistake of not recognizing competence at all.
In this part, it was important to consider that junior engineers will likely require more mentorship than senior ones, but in both cases, some will be required. Skilled programmers will need to learn your engineering process, codebase, and conventions [2]. So I follow this guide:

In my next article, I am going to record my story designing the technical and on-site test.
References
[1] McCuller Patrick. How To Recruit And Hire Great Software Engineers. Building A Crack Development Team.
[2] Tyler Josh. Building Great Software Engineering Teams. Recruiting, Hiring, and Managing Your Team from Startup to Success.
[4] https://www.dataart.com.ar/news/junior-middle-senior-lead-what-s-the-difference/