Video summary
Do's and Don'ts of Take Home Assignment
Main summary
Key takeaways
Main ideas / lessons from the video
-
Purpose of the video
- Help interview candidates improve how they approach and submit take-home assignments/coding challenges.
- Emphasizes that well-structured submissions can increase the chance of being shortlisted.
-
Use a real example
- The creator walks through a real take-home assignment they received from a company and explains how they solved it.
-
Make your submission impressive and easy to evaluate
- Focus on both code quality and presentation/operability so the reviewer can install and run it quickly.
Methodology / checklist for take-home assignment submission
1) Project packaging + documentation (GitHub + README)
- Create a dedicated GitHub repository for the assignment.
- Write a high-quality README that includes:
- What the submission is (what the codebase does, what the app is for).
- A demo to show functionality:
- Add a screen recording video in/linked from the README to save reviewer time.
- Tech stack / tooling:
- Mention frameworks and libraries used.
- Step-by-step setup instructions:
- How to clone the repo.
- How to install dependencies.
- How to compile/build the app (including multiple modules).
- How to run in different modes:
- Production run
- Dev mode run
- How to run tests (unit tests) if applicable.
- Provide instructions from the reviewer’s mindset:
- Assume the reviewer knows nothing and should still be able to run it.
2) Avoid installation/run blockers
- Installation failure on the reviewer’s machine is treated as a major blocker and harms first impressions.
- Two recommended strategies:
- Ensure submissions are cross-platform compatible using runnable scripts and consistent instructions.
- Preferably dockerize:
- Provide a Docker image + instructions to run it.
- Claimed benefit: the reviewer doesn’t worry about Windows/macOS/Linux differences.
3) Understand typical assignment ambiguity
- Take-home tasks are often high-level/vague:
- Usually no strict requirement for language/framework.
- The creator notes that sometimes helpful technical guidelines are provided.
- Example guidance mentioned:
- You can use any library for implementation.
- UI design is up to you.
- Focus on the create/update flows, not building an execution engine.
4) System design: separate frontend and backend
- Structure the codebase to be modular and responsibility-driven:
- Keep frontend and backend as separate packages/directories.
- Make them standalone projects.
- Example structure described:
- Backend: “KPI service” using TypeScript + Node.js
- Frontend: “KPI builder” using React (chosen because the company uses React)
5) Choose frameworks based on company context
- Research the company’s tech stack and match it when possible:
- If the company uses React, use React for the frontend.
6) Configuration and dependency hygiene
- Pay attention to build/compiler configuration:
- Example emphasized: TypeScript
tsconfigsettings (composite, target, build file, etc.).
- Example emphasized: TypeScript
- Add dependencies thoughtfully:
- Don’t blindly install libraries.
- Consider whether a lighter solution exists for the use case.
7) Linting and testing
- Use linting to keep code clean and catch issues:
- Example issue: “imported but never used.”
- Add tests to improve confidence and reviewer impression:
- Unit tests are not mandatory in all submissions,
- but writing tests/test cases improves perceived quality and reduces bug risk.
8) State management and frontend organization
- Use a state management approach/library as appropriate (creator mentions React + an “X” store approach).
- Organize frontend code into folders such as:
componentsstores(state management logic)test(tests)
9) Environment variables (no hardcoded credentials/config)
- Do not hardcode credentials or backend URLs
- Use environment variables (e.g.,
.env). - Benefit: can change endpoints/config without rebuilding.
- Use environment variables (e.g.,
10) Use a good package manager + monorepo/workspaces approach
- The creator emphasizes: “use your package manager wisely.”
- Example: use Yarn workspaces with multiple workspaces:
- frontend (kpi builder)
- backend (kpi service)
- shared library (kpi library)
- Claimed benefit:
- Share/symlink
node_modulesinstead of duplicating them in each workspace. - Keeps the project less bloated and saves space.
- Share/symlink
11) Backend API design + OpenAPI/Swagger
- Provide an OpenAPI (Swagger) specification for the API.
- Use Swagger UI to make endpoints clear:
- Define paths and HTTP methods (GET/POST/PUT/DELETE).
- Specify request/response formats.
- Include expected status codes and meanings, e.g.:
- 204 for deleted
- 404 for not found
- 200/500 as applicable
- Define schemas for objects (e.g., KPI object fields).
- Backend structure recommended:
- Routes → entry points
- Controllers → business logic
12) Type reuse via shared library
- Create a shared library for common types between frontend and backend.
- Example rationale:
- KPI-related types are common (same object/entity shape across FE/BE).
- Centralizing types makes changes easier and more “future proof.”
- Example distribution approach described:
- Compile shared library outputs into
dist(JS + type definition artifacts).
- Compile shared library outputs into
13) Local linking of custom libraries
- The creator links workspace libraries so they can import the shared library without publishing to npm:
- Mentions using npm linking to link the library into frontend/backend by name.
- Claimed advantage:
- Avoid hosting on npm registry or setting up a private registry.
14) Docker + scripting to simplify usage
- Dockerization is presented as a strong plus for reviewer convenience.
- Notes mentioned:
- Some port variables might be hardcoded in the Dockerfile, but reducing hardcoded values is encouraged.
- Create a small bash script to simplify complex
docker buildcommands (pass only needed arguments/flags).
15) Note about yarn link issue
- The creator reports a specific tooling outcome:
- They tried
yarn linkbut experienced issues. - They reverted to
npm linkdespite using Yarn overall.
- They tried
Assignment: what the app needed to do (as described)
- Build a KPI builder prototype with CRUD-style operations:
- List, create, and edit KPIs.
- KPI concept includes:
- KPI has a name
- Two distinct steps:
- Computation conditioning
- Computation aggregation
- Aggregation examples mentioned:
- median, average, integration, sum (as possible mathematical operations).
- Provided guidance:
- UI design is flexible.
- Don’t build an execution engine beyond the prototype requirements.
- Data persistence:
- The assignment states you don’t need a database.
- In-memory or file-based storage is acceptable.
- The creator contrasts this with a prior assignment where a database was required (and encourages databases when not prohibited, though not required here).
Speakers / sources featured
- Speaker/creator: the YouTube channel host (referenced indirectly through phrases like “hello guys…”, “I myself…”, “I’m happing/wro…”).
- Other named speakers/sources/organizations: none explicitly identified.
- Tools/technologies mentioned: Docker, React, Node.js, TypeScript, Swagger/OpenAPI.