Key Strategies to Keep in Mind for Your Next Take-Home Coding Challenge

You’ve nailed the phone interview with the recruiter and the hiring manager is impressed with your recent projects. The next step? A take-home coding challenge.

This is an excellent way to show off your skills and prove to the team that your code will positively impact their code base and business. No memorizing algorithms or data structures that you never use on the job. Instead, you get to build a cool app or solve a problem similar to one the company may be facing.

This is also a chance to for those who have trouble with live interviews to do what we do best as engineers: build things. If this is a job you’re interested in, you have an opportunity to outshine your competition by going the extra mile.

Take-home assignments are challenging by design, but taking a strategic approach can drastically improve your odds of making it to that next step!

Understand the Challenge

The first step may seem obvious, but in the heat of things, you might find yourself getting caught in the weeds before you even start. Every coding challenge is rooted in some fundamental principles they want you to demonstrate, so take some time up front to truly understand what will be required for the project. A couple of common categories of coding challenges include:

Full-stack: Create a RESTful API and display the data on a front-end client after being given a CSV, JSON, or ZIP file.

Know Your Limits

It’s important to understand your strengths and be realistic. When I was first breaking into the industry, I received a coding challenge that involved writing a python web crawler to scrape data and database administration work. I’d mostly been working on front-end stacks, so when I read through the challenge, I emailed the company to let them know that this role may not be the best fit.

Don’t be afraid to stretch yourself, but it’s better to be upfront about your limits with yourself and the interviewer. Often times this may lead to adjacent opportunities that are better for your skillset

Ask for Clarification

In the many take-home challenges I’ve received, it’s common for a given task or feature to have a very limited set of instructions and requirements. A previous manager once told me that the best engineers will ask insightful questions and use what that information to write high-quality code.

Don’t be afraid to ask questions or reach out to your point of contact. Whether it be clarification on a feature or a design decision, this signals to them that you’re engaged and will be one to speak up when issues arise at the company.

Manage Time with a Technical Plan

Time estimation is one of the most difficult parts of software development. Even experienced engineers struggle with it. The most common challenge is summed up well by Hofstadter’s Law:

It always takes longer than you expect, even when you take into account Hofstadter’s Law” -Douglas Hofstadter

Projects always take longer than expected, which is why I like to make a technical plan up front and schedule my time for each step. Once I have estimates, I usually multiply them by 1.5x or 2x (if it is a technology I haven’t worked with) and bake in extra time for debugging, refactoring, and code review.

Keep your plan up-to-date as you hit major milestones and consider sharing this with the company. Speak up about trade-offs and blockers that may have come during development.

After the Challenge

After you submit your assignment, be sure to send a follow-up, letting them know you thoroughly enjoyed working on the project. Include your technical plan, design doc, tests, comments, documentation, or anything that shows you went the extra mile. It will also give them a better feel for what it is like working with you.

You could also consider getting together with a friend to practice talking about your project. Common questions that may come up during the next round:

What were the biggest challenges during this project?

Why did you choose X technology over Y technology?

How would you make this scale?

If you had time, what more would you do?

Coding challenges can be a stressful step in the interview process, but following some general best practice guidelines will increase your odds of landing that on-site visit.