Hot take: I love doing take home assignments when applying for a job.
Before you bite my head off let me start by saying that I understand people who don’t. This “challenges” usually take several hours to complete, which is not how anyone wants to spend their free time. They can also feel like unpaid labour if you are asked to, lets say, fix an issue on the company’s repo.
But as someone who has always worked on proprietary code and lacks a real portfolio, they provide me with the opportunity to show off my skills. I usually get to decide how much time and effort to spend based on how badly I want the job, and more often than not I end up learning some new technique or pattern I didn’t know about.
Pairing is a comparable interview method that I enjoy doing as well, but it has the added pressure of someone judging everything you say and do. When I first dive into an unfamiliar codebase I ask myself the dumbest questions and do a lot of poking around just to make sure I fully understand its behavior. I’m afraid this approach may be interpreted as a lack of basic knowledge on a short lived pairing session.
Take home assignments are not everyone’s cup of tea, but they are mine.