Hacker Career Advice
Take-home Assignments
Ever left an interview with homework? You know, a take-home assignment designed to show your interviewers that you’ve got the tech skills required to do the job?
It’s an increasingly common substitute for whiteboard interviews, because it reflects the reality of work: you have access to Stack, Google, your own dev environment, and there isn’t someone looking over your shoulder.
Assignments can cover anything, but here are the most common ones:
Basic design exercise
You’ll be given a short user story which describes a potential application, what it does, the user experience, what kind of data is involved. Your task is to design the data model or explain how you’d implement the business logic as code. The goal here is to see how you’d solve a problem, from an architectural point of view.
Technical assignment
Provide a working code sample (100-200 loc), in any language, that achieves function X and includes a full test suite. This is really about how you approach TDD and less about how well your code works.
Hands on with company code
Build feature X using tools in the company’s stack. This code might duplicate an existing live feature, extend it, or simulate a bug fix. The goal here is to see if you can hit the ground running and deliver useful code on day 1.
Depending on the complexity of the assignment, you’ll be given a few hours or a few days to complete it. And in most cases, you’ll be able to ask questions, make assumptions, use the tools you’re comfortable with, and discuss your decisions after your work has been reviewed.
For design exercises and technical assignments, you’re probably not going to produce something that the company can monetize. You’re giving up your time, like a regular interview, but there’s no risk of IP theft / stolen ideas. As a result, you probably won’t be compensated for your time.
That said, if you’re asked to build a new feature, work with client code, or deliver something that could be monetized, it’s ok to ask for monetary compensation.
It’ll probably be a token amount (not a true freelance rate), but it’ll make your code a work for hire, eliminating any nasty legal issues down the road.