I went through Finals, for a Backend position so I will just stick to details about my technical interviews. As I was not in Spain, so all Final interviews conducted through Zoom.
Live Coding interview: Perhaps was a better interaction out of all technical interviews. Guys were technically good. They put questions related to Data Structures, Algorithms, Complexity, Java Collections, etc. Overall, I have a good experience with the coding interview.
Software Design interview: I was asked to design backend of a Chat Application. Keep in mind that senior professionals have broad vision. According to me, it has a huge backend. Its design and discussion in an hour, is impossible. According to my vision, I can’t even designed and explained 50% of it in this time, especially due to their frequent interruptions. Rather than listening my ideas, interviewers were focused to listening what they want.
Software Architecture interview: Gave the worst experience. Gave me a feeling what I architected in this interview, interviewers were not competent to grasp the benefits of this architecture. Their incompetency in system architecture is shown from these. First that their every 2nd question was related to implementation details e.g. validations and constraints that we enforce during the implementation, building an aggregated response, etc. Second incompetency that they showed, perhaps first time in my 15 years career, that I get from some interviewer is that, when I was trying to explain the benefits of a core component in architecture that why I have placed it there? How it will handle huge scalability requirements for the system? Etc. One person stopped me to explain, saying he don’t have time for these details. Shocking behavior for me!
I would like to share some suggestions to improve hiring process, as below:
1- For design related interviews in which you have to draw design or architecture, which last for an hour. Interviewers should at least give 15 minutes to the interviewee so that he can draw, whatever he/she is thinking. They should not interrupt interviewee during this time.
2- To really check the Design & Architecture level of a candidate, rather than asking candidate to design something. Interviewers should give a comprehensive design to the candidate to evaluate. This given design could be a combination of different flaws, bottlenecks in addition to some ideal approaches. Then they can throw a number of questions to check the level of candidate, whether the candidate can name, identify patterns, rearrange the artifacts, discuss limitations, artifacts placed in design, either design is overdesigned or missing artifacts, etc. and can discuss better alternate approaches, etc.
3- If at any stage, interviewers feel that candidate is not good according to position requirements so they should stop the process, rather than wasting further time.
Overall I would say, please don’t waste your time to be evaluated by incompetent people.