A Handbook for acing take home Coding Assignments
Coding assignments resemble a lot like take-home examinations. You have a reasonable time to submit the assignment and you are judged based on your submissions. One of the things that I remember from my undergraduate days that take-home examinations were not simple questions. You were supposed to dig deeper into your understanding of the subject matter and give out a rigorous & creative submission. The assignments didn’t look like textbook questions to test your knowledge of the subject matter but were deeper to test your problem-solving capabilities. A coding assignment is as much a display of one’s discipline and diligence as much as it is about one’s skill.
At the outset, a coding assignment seems like an always winnable game. No matter what is your experience level, given enough time with a solvable problem everyone should be able to solve that problem, right? This isn’t always true. A coding assignment contributes to the immense narrowing of the hiring funnel. Developers invest their productive hours into solving a coding assignment yet cluelessly fail with their submissions.
We at upskillie have always felt only if candidates had a handbook on acing coding assignments they would have a better shot at clearing that interview round. Since we needed it we went ahead to create a handbook on our own. In this handbook, we have curated feedback from over 10 companies on submissions made by our community members. Candidates can these guidelines as a checklist to plan and submit their assignments & achieve impeccable impressions with their future employers.
This handbook is written down into the following parts based on the various stages of an assignment.
- Coding Style
- Read the problem statement multiple times enough to assimilate the problem clearly.
- If you have any doubts don’t hesitate to reach back to the hiring manager to clarify them. Asking for further information won’t impact your chances of selection.
- Be precise about the scope of the assignment. You don’t want to go into directions that are not required while missing out on the key requirements.
- Plan comprehensively ahead before starting out such that you can be sure that you have covered every aspect of the problem statement.
- Identify the technical decisions you need to make. Research your decisions and prepare a pro-con explanation to your decisions which might be asked during the follow-up round.
- Exhaustively list the assignment requirement in form of atomized actionable items. You can even create a todo on your Readme.md for that
- Never put off the assignment submission for the last date of the deadline. We are all familiar with that one bug which doubles the estimated time.
- You must always dedicate at least 20% of the total time allocated to the assignment to polishing your submission.
- It’s okay to ask for an extension. You should always plan for 2x to 3x of the time recommended for the project.
- Setup a standard boilerplate for the assignments, preferably the one you use in your projects. It might be overkill for the task, but the idea behind the task is not to see if you could do but also how well you would do it. Having a good boilerplate code will include the rest of the recommendations on its own while forcing discipline.
- Always approach your assignment with a test-driven development. Doing a test-driven development will force you to think of the edge case that you might have missed out on. Covering these edge cases will exhibit forward-thinking and competency.
- Build with production scalability in mind. It might not be asked in the problem statement but for sure will be judged on the basis of it.
- Maintain consistency of coding pattern & style throughout the project. . For eg: If you are using a particular folder structure maintain it.
- You must follow consistency and clarity in meaningfully naming variables, methods, and modules.
- Keep it simple stupid (KISS), if you can use simpler and elegant ways to solve a problem use that. Overcomplicating simple problems can be a red flag.
- Error handling in your project should reflect a production build approach rather than patch and fix.
- Many companies take testing very seriously. They might not tell you that they expect tests for your coding challenge, but will automatically reject you if you leave them out.
- Handle Edge cases: No matter how tempting it might feel “It’s only an assignment“ and you would like to let go of the unasked for edge cases, Don’t ignore it. Even if you fulfill all the scope requirements but you forgot to cover the unsaid edge cases in your submission that can itself become a reason for getting your submission rejected.
- Your code should be well commented on for the reader. It will exhibit your effective communication skills and will make it easier for the evaluator.
- Refactor your code before submission to remove any redundancies. Remove any duplicate code or any commented out junk code.
- Your submission should not just work as required but must also look premium where any UI is involved even if it is not asked. A polished submission exhibits diligence and will definitely score you brownie points.
- Your assignment submission should look like it is built for production not for a hackathon patch up. Your submission is a representation of how well you will do your job not just that if you could get it done.
- If you are required to create a UI based on the designs, make sure it is pixel perfect. If it is even slightly off and you might think it is fine, it will be noticed and will reflect on your review. Even if not asked make sure your submission is responsive to every screen size. Special attention to mobile.
- Wherever possible brand your submission to the company even if not asked in the assignment.
We must create a Readme.md file to communicate the documentation about the project. I am attaching a sample Readme.md that you could use as a template.
- Write down all the instructions to run your project locally and test it, anyone.
- Write a short note on the project, the challenges faced, how you approached the problem or any of your insights into the problem. It could even be the writeup you would send in the mail along with your submission. It doesn’t have to be 1000 words long. Just concise and elaborate enough to present your solution.
- You must include a brief discussion on any conspicuous technologies/libraries used
- Include a checklist to demonstrate the checklist demonstrating that you have met all the requirements. It could be the checked todo list in markdown you had created while planning the project
- If there are bonus contribution that you might have done you can include a section mentioning that as well
- You can have a section for areas of improvement. This is where you can add all of your ambitious ideas about the project.
- Write a complexity analysis for any algorithms and data structures if the assignment requires.
- Before submission make sure your submission works well. Try it out in all the browsers (read: testing environments) such that it doesn’t fail at the time of review.
- If possible ask a friend to test out your assignment for you. You might have missed out on some key things out of your personal blindspots which could ruin your submission.
- You can deploy your project at Netlify/GHPages, Heroku, AWS Lambda, or the free EC2 instance for a live demo/preview. A live demo always gives the best
- Start an email draft and copy your README into it for convenience
We hope you will find this guide useful for succeeding in your next take-home assignment project. Good luck with your next coding assignment.
We at upskillie are a career accelerator and a developer community. We connect companies with the top 1% pre-vetted talent. If you are a developer and are interested in joining our developer community. You can sign up with us.