Why I refuse to do take-home programming assignments for interviews[
Take-home problems, in which a company asks a prospective engineer to complete at the engineer’s leisure, has aggravated me on several accounts. These are the arguments against it.
Assumptions of the interviewer who assigns a take-home assignment
a) the interviewee has time to implement the solution, AND
b) the interviewee is interviewing few companies at a time.
If both assumptions are true, AND the take-home is something the interviewee can feature in their portfolio, AND the company decides to go forward after reviewing the take-home, THEN the take-home can enhance the interview experience.
As for me, both assumptions were false when I actively interviewed. I was working full time, so implementing all the take-home assignments was infeasible. Plus I was getting more interview requests than I can handle without implementing any of the take-homes.
The market in software engineers in the Bay Area (especially where I live, in San Francisco) is red-hot.
A sample of take-home assignments I encountered
You might be curious: what were the take-home assignments? I was asked to code in HackerRank, implement a note-taking app, and implement Scrabble in whichever web technology I saw fit.
The HackerRank problems were short. Other than learning to use the online interface (which excluded many of the built-in features of my text editor), was fairly efficient. I almost felt good with the rapid validation of the provided test cases.
As for the Scrabble game, I never played the game before. It would have been a great project for an engineer who loved the game and who can feature it as a portfolio piece. For me, the cost of implementing a new game dwarfed the potential upside of netting another interview, since another half a dozen companies were vying for my attention.
I passed on the take-home, and the company passed on me.
The most egregious assigment was the note-taking app. The company-provided guidelines suggested it would “take 4 hourst to implement”. The guidelines also included UI mockups. To make an app that is functional, looks good, and with tests, took around 8 hours. I spent a Saturday colocated with my boyfriend but staring at the screen, working on the app from 11am, taking breaks for food, and submitting it red-eyed at 11pm. My boyfriend and I manually tested the app, and I fixed the found bugs by writing automated unit tests.
What was the reward of my good work?
The reward of clean and tested code, after a day of review, was: “we are not moving forward because there are bugs in the app”. Which bugs, I asked? The recruiter was kind enough to relay the bugs from the lead front end engineer. None of the bugs were reproducible on my setup. It renewed my appreciation for support workers, who have to ask many questions to reproduce the problem ie. which version of operating system, which version of which browser, etc.
Both my time and the potential upside of this interaction was limited, so I let it drop. Besides, I was not moving forward in the interview process after sinking an entire Saturday into an app that was not meant to be re-usable.
I felt really bad for not wowing them, and for the sank cost of a Saturday.
My thoughts when the interviewer suggests a take-home assignment
- What is the assignment? I am curious
- The problem sounds remotely interesting; say yes to see what the details are
- Realize that implementing the solution takes TIME: sheepishly negotiate for another way to proceed
- Interviewer says the take-home is part of their hiring process
- Drop out of the hiring process from not completing the exercise
Alternatives to the take-home
Code with an interviewer who is an engineer.
The rapid feedback is valuable; even if the interviewee doesn’t proceed to the next round, he/she will know how they can improve by the end of the hour.
Ask how they would would implement a solution.
This way the interviewer can cover more ground.
Yes this is a costly for the interviewee and the interviewer. The upside is also big, since the on-site is a great place to showcase team culture.
If you are reading this and is a decision-maker on the interview process at your company, consider removing the take-home assignment to streamline the process. The cost of keeping the take-home is a smaller pool of candidates. It can be done right given the right candidate, but is not the best in the red-hot engineering market of the Bay Area.