DEV Community

Steven Rockarts
Steven Rockarts

Posted on

Take Home Assignments and the Interview Process

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?

Top comments (4)

Collapse
 
alban profile image
Alban

I'd like to add to the "Ask for feedback" section: Ask BEFORE accepting the assignment if the company plans on giving you feedback no matter what their decision is.

There are (many) companies in the wild that will just have candidates spend 5, 6 hours, or even more, of their free time on those type of assignments and will refuse to give you feedback after.

It's not a good deal and a bad sign as a future employer anyway!

Collapse
 
turnerj profile image
James Turner

I posted an article a few weeks back to discuss this very thing. In the comments, various people give their thoughts about interview processes, what they like and don't like.

Sure employers want to be thorough but not being considerate of the candidates time is not a good look. The whole interview process needs to be a careful balance and there likely isn't a one-size-fits-all approach.

Collapse
 
rockarts profile image
Steven Rockarts

I agree, I've been wrong in the interview process before but most of the time my instincts are right. It's hard to tell from a take home test how people work and if they will fit. I think it's also hard to judge someone by the code they write in an interview as they may have super bad test anxiety but they are a productive person outside of an interview.

Collapse
 
gabebourke profile image
GabeBourke

Hey, I did a google search for "take-home assignment" and this came up as the first result. Well done!