Recently, I had the opportunity to participate and provide feedback on a selection process for a senior full-stack software engineer position at a company dedicated to the education sector (for privacy reasons, I will omit the company name). But before I share my experience at the company´s selection process, I’d like to provide some context about my situation before and during the selection process.

I have been working in software development for approximately 10 years. It is a job that I enjoy and love, as it is not only my livelihood but also my main hobby. Over the past 4 years, I have worked for a company where I have grown significantly both professionally and personally, acquiring and developing skills that I wasn’t even aware of in my previous career.

With a focus on good practices in domain-driven design and microservices, starting from a distributed monolith, transitioning to micro-liths, reaching the over-engineering stage of microservices, and going back to a more monolithic approach, I believe I have been able to experience and validate many facets and variations in an attempt to adapt to the constant growth and downsizing of available resources within a startup undergoing significant structural changes. I have learned from numerous challenges along the way.

This wealth of experience in solution design, observability, service metrics, team efficiency, project leadership, experimentation, continuous discovery, development of asynchronous processes and workflows are some of the areas of growth within a long and difficult journey filled with ups and downs and thousands of small nuances that shape the character of a good engineer and a good teammate.

The reasons for applying to a new company were twofold. The field of education is familiar to me and holds a special place in my heart. I wanted to learn how others solve similar problems and gain insights from contrasting similar problem-solution spaces. These main reasons were accompanied by several minor factors on a lower personal value scale, such as a slight salary increase and the opportunity to validate my skills after more than 4 years without any contact with other job selection processes.

So, this is the context, and I would like to share my experience, both the positive aspects and the negative ones. It was a lengthy process consisting of a total of 5 interviews.

The process began with an initial telephone interview, where I was asked about my previous professional experience, my reasons for applying to the position, and my salary expectations. A few days later, the second interview followed, where I was asked the exact same questions, but this time by someone from the internal engineering team instead of the HR representative.

The total interview time between these two interviews was approximately 2 hours, which could have easily been reduced to one hour or even less. It is possible to learn about my previous experience by simply browsing my LinkedIn profile and other networks, allowing the discussion to focus on more productive matters for both parties, such as finding mutual points of interest in cultural values or leaving more time for questions.

Advice 1: Try to minimize unproductive time during the selection process. You can even approach the initial phases asynchronously. For example, you could gather information about the candidate on social networks, send a video explaining the most relevant points about your company, what you do, the job specifications, and specific questions you want to know more about the candidate’s expertise. Then, you can address these questions in an interview with a clear and specific agenda.

In the next phase of the process, I had to complete a technical test, which involved developing a clone of their main product within a more limited context and with certain technology restrictions that aligned with what they already use in their product. We had one week to complete the task. During this week, I was included in a private Slack channel where I was told that two team members would be assigned to assist me. The idea was great, and I really liked how it was presented, but there were areas that could be improved.

First, that two team members assigned to me were the same guys I had the previous interviews at with, the recruiter, and the engineering manager.

Advice 2: This type of test is an excellent opportunity to interact with the candidate. It is not necessary to set a fixed deadline (e.g., one week). This can create unnecessary stress and an unfavorable situation among candidates, which is detrimental to both candidates and the company. Some candidates may be working full-time, while others may not. Some may have family responsibilities, while others may not. Instead, ask the candidate to approach the test as if they were working at a open source project, asking for some small pull requests to initiate more productive conversations and interactions with the team and their way of working. After several pull requests, you can already have a very good approximate idea of the candidate skills and conclude the test, no matter if this is 4 days afert, a week after or one and half week after.

In my case, in order to initiate these interactions, I shared two videos during that week. One for initial impressions and solution proposal, and another showcasing partial implementation and requesting feedback. Unfortunately, I did not receive any response, which I understand was due to time constraints and due to the fact that the two members of the team assigned to me during that week were the same guys I had the first two interviews with, the recruiter and the engineering manager. This leads me to the next piece of advice.

Advice 3: Dedicate quality time to your candidates. Put together the candidate and the team members with whom this candidate will be working most of his or her day-to-day work. The selection process is critical for a company as it will determine its future. Allocate part of your employees’ time to this process actively, without overtime, as part of their regular workday, and aim to maximize real and productive interaction time with candidates. This way, you can evaluate their technical, communication, and collaborative skills much more effectively.

After completing the technical test, which turned out to be a negative experience due to time constraints combined with the scale of the project, we moved on to the fourth phase: an interview with the CTO and the tech lead of the company. It was a relatively pleasant and informal conversation where I was asked to explain the solution, and they followed up with questions related to my explanations. The interview lasted for one hour.

Advice 4: Avoid conducting interviews without a specific or vaguely defined agenda. It would be much more interesting to discuss technical matters during the technical test phase and use this interview to ask specific questions that arise from the test, as a retrospective, delving deeper into the candidate’s experience. For example, asking how they would address a 10x increase in the number of users for the previous tasks done. This allows exploring more advanced concepts of observability, defensive programming, horizontal-vertical scalability, complexity reduction, experimentation, and more.

Finally, in the fifth and last phase, I had another one-hour interview where I was asked similar questions to the first two interviews, but this time with a slightly stronger focus on product and culture, such as defining an ideal developer in three words, talking about myself and my previous experience, and reasons for wanting to work with the company, once again, among others with small time for questions. This was the final step of the process, and approximately one week later, I received an email with the final result, stating the reason for rejection along with a brief justification for the decision made.

Advice 5: Providing feedback demonstrates respect and professionalism. However, it is equally unproductive to provide no feedback as it is to offer generic, too vague feedback. When evaluating a candidate, especially regarding the negative aspects that led to their rejection, please be as specific as possible. Provide concrete examples.

In my case, the negative feedback I received was as follows: “We found it challenging to maintain a balanced dialogue, which made it difficult for us to interject or guide the discussion…” A more appropriate and specific feedback could be as follows: “During the 1st/2nd/3rd/N-th interview, when we asked you about “X”, your answer given “Y” was in line with another topic, and we could not reach a specific conclusion in reasonable time. Because of that, we found it challenging to maintain a balanced dialogue, which made it difficult for us to interject or guide the discussion…”. I never had before a negative feedback related to communication skills so it would have been great for me to know specific examples about it so I could have evaluated and reason it better in order to focus on the specific skills I could get better at

Lastly, I would like to provide one last piece of advice regarding professional references. During the third phase, after confirming that I would proceed to the fourth phase, I was asked for the private contact information of my former engineering manager. Sharing the private phone number or email of a professional reference is not always easy and can sometimes require extra effort for the candidate.

The professinal reference in my case was also a closer colleage, so I faced a negative experience as the company contacted my professional reference after all the interviews were done and I was waiting for the final email notice.

I think it was possible a lack of coordination between the members of the team before taking a final choice but it leaves candidates with a negative experience when the company contacts the professional reference and they are already set about not offering the position to the candidate.

Advice 6: Please avoid this, as it demonstrates a lack of emotional sensitivity towards the candidates. Coordinate well with your team when performing a 360 interview model. Company should not contact the professional reference if the choice is already set to not offer the candidate the position. Be empathetic to the candidates. It says a lot about the company sensitivity with the candidates

I hope these pieces of advice can help you manage a more professional and efficient selection process.