Recently I went to the couple interviews for role of Senior Java developer and all of them had a pre-request of implementing of a technical assignment. The funny part is that different companies have almost the same technical assignment – implement CRUD REST API (using spring-boot) and front-end using any technology. I collected lots of feedback on my solutions. In this post I would like to share how to implement perfect technical assignment, where to pay attention and how to score some additional points comparing to other candidates.
Checklist for implementation of the perfect technical assignment
- Write documentation on how to build and run you application. Preferably in README.md in the root of the project.
- Document your code. All public methods should have java-docs.
- Add info and debug logs. Http request/response logging interceptors.
- Always add API documentation. Use OpenAPI Specification (formerly Swagger Specification) – one of the most common ways.
- Use database migration tools(flyway, liquibase) for creation and initial data population of the database.
- Write unit and integration tests
- Keep you code simple and don’t over engineer. Use power of frameworks(spring-boot, spring-data, spring-data-rest). The less code you write the easier to review it.
- Dockerize your applications
- Add something spicy that will make reviewer select you from other candidates. Something that is not directly required by assignment. In my case I dockerized front-end and added scripts to build and run everything in one command.
Before sending you technical assignment
Let one of your friends or colleagues review your technical assignment before sending it. Of course everyone is a superstar and does everything correctly from the first time. But in most cases you will miss something if you don’t have a good checklist and some feedback.
Need some feedback?
If you would like me to review you technical assignment – post a URL to your pull request in the comments.