I’ve been hiring software engineers for the last 8 years. I’ve reviewed hundreds of home assignments as part of hiring process. In the recently introduced AI era, it is more and more believed that hiring assignments are useless because candidate can just feed the assignment specification to their favourite coding agent & send them back to us. I think we should still keep sending home assignments & change how we evaluate them.
I’ve never used a home assignment as a stateless hop between sequential interview steps. Being at the other end of the table, I’ve seen that interviewers did not know anything about my submission, most of the time they didn’t even know what the home assignment covers. Instead, we have been already using the home assignment as a starter for the deep-dive technical interview.
With AI-assisted coding era, I changed my interview questions. About 95% of the submissions cover what is asked in the assignment anyways. But now, there are many questions that can be asked when you remove the syntactic or language-specific questions. In the end, the new joiner will use coding agents, just as we are doing on a daily basis. So the assessment we do should also validate their coding agent usage as well.
We can talk more about choices - coding agent can solve the issue with the specification but the user should be aware of the trade-offs and design decisions if we’ll have a long lasting working relationship. I ended up asking a lot of questions & discussing them with the candidates. Frankly, I don’t expect exact answers; instead, I’m trying to figure out if they are aware of them and they can reason about them. I listen to their follow-up questions more than their exact answers to my questions.
Dependencies
Why did you use this library? What alternatives did you check before deciding in this one?
Why did you use Postgres but not Mysql? How should we choose between them and what would change your decision?
Domain design
I saw that you used two modules to implement the solution, can you tell me where the boundary is between them? What drove you to draw the line here?
If we needed to separate this application into two different services, how would you do it?
Scalability
Where is the bottleneck of this application in your opinion? If we need to replace sync processing with async processing, how should we approach it?
Is your solution stateless? Where do you keep the stateful data? Does it survive restarts & can it run with multiple replicas?
These are some sample questions that I can summarize for now. They try to evaluate candidate’s expertise in these subjects, also they dig into if the candidate is concerned about the important points while instructing their agents. Depending on the context, field, specific position, experience there will be many different questions. The important point is, just because a candidate can generate home assignment answers with coding agents, it doesn’t mean home assignments are useless; it just opens a thousand new doors.