During the interview process, you might be asked to complete a short take home assignment. This usually consists of building out a small project with required tasks to be completed in a set time frame. This is a popular way to test an applicant's skills and assess how they can tackle problems. But what is the best way to approach a take home assignment and what are some common pitfalls people run into?
In this article, I will provide tips on how to ace your take home assignment and move to the next round of interviews. I will also provide tips on how to avoid common mistakes with the take home projects.
🔗What does the take home project entail?
The take home project offers a chance for the prospective employer to see how you approach building out real world applications. For the frontend, you might be asked to work with an API and display some results in a table or card layout. You might also be asked duplicate a web page from a Figma design and add some functionality like search or pagination. For the backend, you will be tested on your knowledge of server side logic, and be asked to design some APIs.
There will be a list of criteria that you have to meet by a set deadline. There will also be notes on hosting your app and which libraries and frameworks you are allowed to use, if any.
If you want to see examples of take home projects, then please take a look at the following links:
🔗Make sure you understand the project requirements
Before you start building out the project, it is important that you understand all of the project requirements. If you need any clarifications, please ask and do not make assumptions. You don't want to fail a project because you misunderstand the directions.
This is also a good chance to see how well the company communicates project details to you. If they are able to offer up clear directions and answer any clarifying questions, that is a good indicator of what it will be like to work for them. If they are not able to provide clear directions and have poor communication skills, then that can also be a sign of what it would be like to work there.
🔗Plan out your time efficiently
Time management is crucial when it comes to take home projects. Since you only have a short amount of time to build the project, it is important that you first plan out how to build the basic structure. You will need to identify which parts of the project will require the most attention and how long it will realistically take do each component of the project. It is important to account for the time it will take to fix bugs and other unexpected issues during the development phase.
Once you have mapped out how long it will take to build a basic prototype, you will need to look into adding extra features to help you stand out in the applicant pool. You will need to decide on which features to add and how long it will take to successfully build it out. Try not to fall into the trap of underestimating how long a feature will take to build. If it doesn't look feasible in your alloted time frame then it is best to rethink it or leave it out completely.
🔗Make sure to adhere to best practices and focus on clean code
The goal of these projects, is to get a sense of your coding style and technical skill level. This is your chance to ensure that your work adheres to best practices and is clean and readable by other developers. You want to make sure that you are doing things like using clear concise variable and function names, adhering to the KISS and DRY principles, and optimizing your code so it runs efficiency.
Your potential employer is not looking for perfect code and understands that you are working under a time constraint. But they do want to get a sense of your code quality and the type of work you might contribute to a project. Do the best you can to write clean readable code while still making sure the basic functionality is in tact.
🔗Avoid over engineering your project
Take home projects can offer a great opportunity to develop your skills and demonstrate what you can do. But it is important that you do not over engineer your application because it sends the wrong message to potential employers. There is no reason to over complicate your code and stuff you application with tons of extra unnecessary libraries and frameworks. Remember that employers will ask you about your code and technology decisions and if there doesn't seem to be a clear reason behind your decisions, then it can be seen as a negative.
🔗Make sure to document your work
Documentation is an important part of any software project and you need to be able to demonstrate that in your take home assignment. Make sure to have a detailed readme including your architectural and design decisions, features of the application, testing, how to run the app locally, and a list of the technologies used. You can also include a section on features you would have liked to build if you had more time. By providing a documented project, employers will learn about your thought process and get a sense of how you approach problem solving.
🔗Should you include testing in your take home project?
I think you should definitely include some testing in your take home assignment. During your planning stage, you will need to set aside some time for coming up with test cases and deciding on which testing tool you will use. If you are new to testing, try to include some small tests to communicate to your potential employer that you understand testing is part of the job. If you are a more experienced developer, your employers will expect you to include testing.
🔗How should you approach styling?
Even if you are not a natural born designer, it is still important to create a clean professional looking design. It is fine if your design is simple because they are not testing you on your original design abilities. Just make sure that your project is responsive and has good UI/UX. If you are allowed to use CSS frameworks like Tailwind CSS or Bootstrap, then it will make designing your app a little bit easier.
🔗How long should a take home project take?
Most companies will give you a timeline to complete the project and submit it. In my opinion, 3-5 days is a good range to complete the assignment. If the employer is expecting you to take a couple of weeks or more to do the assignment, then that is a sign they are not respecting your time. There have been a lot of stories of people spending 40-60+ hours on a take assignment and still not getting the job. If you receive an assignment where it is obvious it will take an excess amount of time to complete, then you might consider reassessing the situation and possibly not moving forward with the interview.
Take home projects can be a great alternative to the typical Leetcode style interviews. This is a chance for you to show off your technical skills amd build an app in the process. It is important that you meet all of the requirements and add some extra functionality to stand out in the applicant pool. Also make sure to document your solution and test out your project before submitting it.
I hope you enjoyed this article and best of luck on your future interviews