Among other criteria, we would be assessing functionality, code quality, architecture, documentation, and testing. Please follow the following guidelines:
Regardless of whether it's your own code or our coding challenge, write your README as if it was for a production service and the only document available for other developers. Include the following items:
The easier it is to understand your code the better grade it would have.
Your application will be reviewed by at least one of our engineers.
We value quality over feature-completeness. It is fine to leave things aside provided you call them out in your project's README. The goal of this code sample is to help us identify what you consider quality code. You should consider this code ready for final review with your colleague, i.e. this would be the last step before deploying to production. Review common mistakes.
Terminal 1 grades essential skills in every assessment by categories, including architecture, code quality, documentation, testing and user experience.
We assign levels to each assessed skill (could be interpreted as a seniority level).
Level | Icon | Notes |
---|---|---|
0 | No knowledge of the skill, everyone who attempts the challenge gets this level. | |
1 | Basic knowledge of the skill, could be awarded via online course completion or certification. Would be the main skill for junior positions. | |
2 | Good knowledge of the skill. Approximately 200-800 hours dedicated directly to the skill mastering or 3-5 years of job experience. Only 10% of people get to this level. | |
3 | Senior/Lead level with typically 5-10 years of experience. This is a high mark achieved by 3% of people. |
Terminal 1 uses predefined criteria to qualify candidates for every skill level. A full list of grading criteria could be found in our library.
For example, to be awarded level 2 in "API and Service Design", a candidate needs to show the ability to 1) architect scalable solutions, including sync/async responses, web sockets, caching and 2) implement common API protocol in the assignment.
Category | Description |
---|---|
Architecture | How clean is the separation between the front-end and the back-end? Are choices of libraries, databases, tools etc. appropriate for the chosen application? |
Communication | Does the README clearly and concisely explain the problem, solution, and areas for review? Are choices, remaining TODOs, and technical tradeoffs explored and explained? Was there clear communication and expectation setting with us during the process? |
Code Quality | Is the code simple, easy to understand/extend, reuseable and maintainable? Would it pass a code review? Are there any code smells or other red flags? Is the coding style consistent with the language's guidelines? Is it consistent throughout the codebase? Is there good logging? Is it easy to debug? |
Functionality | Does the application do what was asked? If there is anything missing, does the README explain why it is missing? You will gain extra points if you go above and beyond in implementing additional helpful features. Think carefully about the intended user. |
Security | Are there any obvious vulnerability? |
Testing Skills | How thorough are the automated tests? Will they be difficult to change if the requirements of the application were to change? Are there some unit and some integration tests? We're not looking for full coverage (given time constraints) but trying to get a feel for your testing skills. |
UX | Is the web interface understandable and pleasing to use? Is the API intuitive? |
We will assign a grade to each category:
Grade | Description |
---|---|
F | Category is missing or a failure. |
D | Major/minor complaints about a category. |
C | Passing in a category; nothing major to complain about. |
B | We're impressed. Something clever happened. |
A | World-class solution. Exceptional. |
We also might award optional bonus points at our discretion. For example:
Weight | Aspect | Description |
---|---|---|
V. Low | Scalability | Will technical choices scale well? If not, is there a discussion of those choices in the README? |
V. Low | Production-readiness | Does the code include monitoring? Proper error handling? Is it deployable as is? |
We will average your scores together according to weight to derive a final submission score. Receiving a C on our assessments (which are quite difficult) is considered impressive.
Hit the deadline you assign yourself with all requirements met. Before submission, please read the grading criteria carefully and ensure your application is the best you can do in each category. With your submission, please submit a suggested grade for each category with justification notes. We will only use your rubric to ensure we didn't miss any parts of how you thought about the assignment.
Please show your best work when you submit. If there are problems with your submission, you will be allowed one minor edit.
Please send any questions to <2assessments@terminal1.co>. Almost all assessments test your communication skills, so please clear up any ambiguities with us.
.DS_Store
, .idea
, .vscode
) are in repository or result archive. Choose a good .gitignore.For seniors we naturally take into account their level of experience and expect more. We'll ask them to aim for a B but also understand if they're under more time constraints (e.g. family).
We strongly suggest they utilize their greater experience to score more points in the communication category (e.g. better understanding and documentation of architecture and tradeoffs, what they'd do with more time).
We would expect average for seniors should be C/B.
This is at our discretion, but a rule of thumb is no more than 10% of the code.
If you wish to do the same assessment, you may retry and resubmit 3 months after your previous submission. Alternatively, our engineers may recommend you to try another one of our assessments.
Some of these review guidelines are originally forked from Uber.
Copyright ยฉ 2016-2020 Terminal 1 Limited.