Take Home Assignments and the Interview Process
Tags: interview
Published: 2019-03-05 22:54:08

---
title: Take Home Assignments and the Interview Process
published: true
description: Advice for both the interviewer and the interviewee.
tags: interviews
---

Last week I went for a job interview at a company in the city. The interview itself went well I thought. We talked about my past experience, I gave my opinion on various trends in the mobile space and then I completed a coding problem in the interview and was able to talk through it with the interviewers. I was able to make everyone laugh a couple times and spoke with confidence, the public speaking courses I've been taking to improve myself seemed to have been paying off!

At the end of the interview we all shook hands and then I was presented with a take home assignment. Take home assignments seem to be becoming a trend more and more these days. I like the challenge of getting them and having something to work on but on the other hand, I feel these assignments are becoming problematic in our industry. Here are some things to think about as both an interviewee and a potential employer if you are going down this path.

# **As the Interviewee**

## At the time you are given the assignment, try to evaluate whether it is going to be worth your time. 
The first thing that jumped out at me was how large this assignment seemed to be. It asked for a backend, API and mobile frontend all unit tested. Holy moly! On showing the requirements to one of my friends, his first impression was that it was a lot of work. My first thought was to not do it, on the other hand, there aren't a lot of mobile developers in the city let alone a mobile developer that could pull this off. Part of me wanted to prove to them that I was a rockstar!

## Realize that you own the copyright to the code.
I'm no lawyer but if there wasn't an NDA signed and they aren't paying you to write the assignment, then you own the code. If it is blatantly obvious that the code is directly related to their problem domain, they may have to compensate you for using it! This developer owns this code and is entitled to potential royalties! https://softwareengineering.stackexchange.com/questions/98619/submit-code-during-interview 

## Ask for feedback
If they don't hire you, ask for feedback on what was wrong with your code and use it as a learning experience. This will only make you stronger. They owe it to you.

## Open source it after!
If you don't get the job and haven't signed an agreement, open source your work somewhere and showcase it in your portfolio. This will help you with future job searches. I had a bad experience in the past where I went through two phone interviews, solved the first take home assignment (making tests pass of the Game of Life) and then wrote the frontend in Ruby on Rails. The only feedback I got for not being hired was "there is a bug in your code". This was 5 years ago and the code still lives on somewhere on my github profile. My project used to come up when you would search for the employer. If you spend your own time working on something save it somewhere so you can use it in the future.

# **As the Employer**

## Be Respectful of the Candidate's Time
Be realistic in what you think someone can achieve in their spare time. Don't make the take home assignment large. If someone is currently employed, be aware that you are asking them to potentially give up time with their family, exercise or just their downtime for you. We just got a new puppy this past weekend and it was hard for me to choose to write code over spending time with him. Get one of your current employees to do the assignment, it'll give you an idea of how long you can expect it to take and your current employee will get the chance to learn something new!

## Pay the Candidate and Get them to Sign an Agreement
You could potentially give them an assignment that has nothing to do with your problem space but why risk it? You may be in a world of hurt if the candidate sends along their code with a GPL license. Pay the candidate for their time and keep the code. You'll have a happy candidate and potentially benefit even if they aren't the right fit.  

## Be cognizant of the fact the take home assignment might not make you a desirable place to work anymore.
In my case, I had a great interview experience and the people all seemed nice. I'm a little wary of the company and potential internal timelines because I was given such a big assignment and given a week to do it. Try to put yourself in the candidate's shoes and reflect on if you are giving the wrong impression. Most developer's tend to look at companies in an unfavourable light after they've been given a take home assignment. 

## Realize People Aren't Perfect
Is there a bug in the code that was submitted by the candidate? Ask yourself whether or not you as the employer could live with it and turn it into a teachable moment. The best potential employees in this industry are going to be the ones that crave learning. 

## Don't Give Take Home Assignments
To be honest, I think it makes you look bad as an employer. There aren't many other industries that make employees do take home assignments. In fact, I can't think of any other industries that make potential employees work for free in their spare time before offering them a job. If you don't really trust people after an interview, re-evaluate your interview process or hire on people after bringing them on as a freelancer. 

# Parting Thoughts
My experience with this take home assignment was mixed. I had a lot of fun solving the challenges that were given to me even though it stressed me out at times. I built an iOS app that has a backend API with updates reflected in realtime, shows remote notifications and works offline all in a weekend! 

There are still many personal takeaways for me if I don't get offered a position. At least I got to learn how to use Firebase's realtime database, write cloud functions, and use Google Cloud Messaging. I got some experience with a Swift charting library. I got this blog post for dev.to out of my experience (potentially more on how to build this project). I will also be presenting this blog post as a presentation tonight as part of my public speaking course!

Once I submit the project I figure I'll have a lot of leverage in the negotiation process. I believe that there will be very few people in the city that can pull off a project in the timeline I was given. On the other hand I'm torn over whether or not I want to work at this company. If I don't get the job and you're looking for a mobile developer, let me know!

**Let me know what you think in the comments! Do you have any tips for employers or job searchers regarding take home assignments that I might've missed?**