General

How to Avoid Common Pitfalls and Ace Your Take Home Assignment

Jessica Wilkins
6 min read
How to Avoid Common Pitfalls and Ace Your Take Home Assignment
This article was written over 18 months ago and may contain information that is out of date. Some content may still be relevant, but please refer to official documentation for the latest information.

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.

Conclusion

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

About the author

Jessica Wilkins

Jessica Wilkins

Software Engineer

Jessica Wilkins is a classical musician turned Software Engineer. Prior to joining the tech industry, she spent her time running her own sheet music company (JDW Sheet Music) as well as performing and teaching in Los Angeles, CA. She enjoys working with React and TypeScript. She is also a prolific technical writer for freeCodeCamp.

Keep reading

View all posts →

How to Write a Strong Resume That Will Be Read by Hiring Managers and Recruiters

Applying for software jobs can be stressful and time consuming. One of most stressful components is writing a resume. A lot of people struggle to write strong resumes and end up paying the price by getting passed over for tech interviews....

Jessica Wilkins7 mins
Career

How to Optimize Your Profile and Build a Developer Network on LinkedIn

LinkedIn is a platform designed for professionals to connect with recruiters and potential employers. If you invest the time to build a strong developer profile it can lead to potential job opportunities....

Jessica Wilkins8 mins
Career

How to Build and Grow Your Career Through Networking

What does it really mean to network, and does it actually work? How can you build out a network, and how does it help to grow your career? ...

Jessica Wilkins5 mins
Career developmentCareer

My Career Roadmap

Every developer has their own unique roadmap. I love hearing these stories as they’re constant reminders that there is no right way. Anyone can become a successful developer as long as they have the passion for it. I’ll be sharing my roadmap in hopes that someone also realizes that there are multiple ways to be part of the programming world. My journey started when I attended a junior college in an effort to complete the prerequisites for a Biochemistry degree. I actually got far enough to start taking Organic Chemistry courses. However, my heart wasn’t in it. I found it boring and dreaded anything related to those science classes. I did find it cool that I could recognize some of the fancy ingredients in a shampoo. It just wasn’t what I connected with. I knew that something had to change. I was on track to transfer to a four year university in less than two years. I was always interested in computers and thought about programming. I still don’t know why I was drawn to that: maybe social media made it look cool? The dilemma was to either continue or take a risk by starting a whole new career. I didn’t want to spend more time at junior college, so I needed to make a hard decision: either continue with Biochemistry or drop it completely to pursue programming, but still transfer within the estimated year. I probably would have chosen to experiment with both at the same time if I had realized this a couple of years prior. However, I ended up changing majors within a week. It was one of the best decisions I have ever made. My first programming class felt a bit scary. The building was run down and cold. The room was cramped. There were only two females (including myself). The course wasn’t hard or discriminating against genders but it probably felt that way due to being completely new to the field and not knowing anyone. It didn’t discourage me from programming. In fact, I still remember typing up my first Hello World program. It was the feeling of writing code that made me realize that I was on the right track. Luckily, the junior college had opened up the new STEM building a year later. This really made the place more welcoming. It was actually pretty cool. There were outlets everywhere! A dream for programmers that we take for granted. One of the courses that I took was Internet Programming. This was a turning point for me. My professor recommended that I participate in the local hackathon that was coming up soon. He suggested forming a team with the two other females in class. I never once thought he was discriminating. I honestly believe that he saw potential in all of us but we were lacking confidence in a male dominated world. We participated in the hackathon as a female group. It was my first time working with a team and presenting our project to the public. We didn’t win any awards, but it provided some of the confidence that I was lacking. I finally understood that it didn’t matter what gender you are. I found a love of programming and wanted to be one of the best. I ended up getting recruited for a local internship through the hackathon. I was able to learn about realistic expectations when building a project for a client. The lead developer was also very open to teaching a complete newbie. This is where I learned the basics for web development. It was this type of support that helped shape my career. I graduated from junior college with an associates degree in Chemistry and transferred the next semester. The one regret that I do have in my career is the university that I chose. It didn’t have the best resources for the Computer Science students. The classes were boring and most of the professors didn't seem to care. If you weren’t on the game research cohort, you were just another student passing through. During this time, I got a chance to be part of a research team. However, I decided to accept an internship instead. It was another difficult decision as both had great opportunities. I still think that the internship was the best route as it helped me later on. The internship only lasted for the summer. I learned Polymer during this time. The project was my first deployment and it was used by the city. It was also another great confidence booster. I returned to school with the goal to find my first job before graduation. Truthfully, it was very discouraging, even with my internship experiences. Most companies wanted developers with years in programming. They really don’t make it easy for junior developers. I’m almost positive that I placed over 100 applications. When I did get a response, it was a decline. I also attended the career fair that the university organized. That’s where I found the company that gave me a job offer. I started working for them after graduation. This led to web development in the Drupal world for a little over 2 years. It was a small company but provided development growth. I learned the importance of quality assurance and time management. I also acquired the skill to advocate for higher priority tickets. The most important lesson was that a project can only thrive with a unified team and proper documentation. However, the company had a tremendous downsize due to the pandemic. I was once again on the job hunt. Fortunately, the connections I made during the summer internship helped me find a job at This Dot. There was still an interview process, which I passed due to all the career choices that were made. I’m very excited to be here. I’m working with LitElement projects and more structured work environments. It really is a big difference from a very small company. I’m now pursuing the path of being a mentor, a dream that I had since my first internship. I’m working on improving a mentorship program and making sure my mentee has all the support she needs. I barely have a bit over 3 years of work experience. The time went by very quickly and I’m still excited to be programming. I can’t wait to see where my roadmap will be in the next upcoming years. Tweet me your favorite moment in your roadmap!...

Maria Loza4 mins
CareerMentorship