Tips for passing a technical test: Part 1 - Overall Approach

Being involved with technical recruitment, I often send out technical tests for applicatants to submit with their CV.

I'm always surprised at the number of candiates who have not adopted the right mindset when attempting the technical test.

The technical test will always ask the candidate to write some code to achieve a particular outcome. For example:

  • Normalise the provided data into a SQL database with tables of an appropriate schema
  • Display the data, retrieved from the SQL database, in webpage
  • Provide the functionality and new data and edit exisiting data in a webpage. The new/updated values must be saved back to the SQL database.
  • Submitted projects should be provided in a suitable source control system (TFS/BitBucket/Github)

Most candidates approach this as an exam, attributing one mark to each of the requirements. So as far as they're concerned, meeting the requirements gains them four points and a pass.

However there is a lot more to this than simply the questions that have been asked. Point four asks for the solutuion to be submitted via a source control system. Why? I want to see that the candidate has experience using at least one source control system so at least the concept is not new. Additionally in asking for the project to be submitted via a source control system, I'm expecting to see your code.

If as a candidate you can realise the above, you should approach the test very differently. There should be a realisation that the majority of the assessment will happen before the project is even executed. For the above example, these are some of the things I will be looking for:

  1. Architecture - is there a clear separation between data access, logic, business objects and presentation? To help, make this objvious by separating these into separate projects within the solution.
  2. Data access - by all mean use Entity Framework here. However you'll gain extra credit by creating at least one stored procedure and calling it from Entity Framework. This should demonstrate knowledge of t-sql (a must if you're presenting yourself as a full stack developer).
  3. Logic tier - does the logic tier implement contracts and implementations of those contracts?
  4. Logic tier - Does the logic tier return business objects rather than data objects?
  5. Logic tier - Are there tests written for the logic tier?
  6. Logic tier - Are errors handled gracefully?
  7. Presentation tier - In the example this would be the website providing the interface to display and amend the data. Does this tier only consume the logic tier? There should be no direct connection to the data tier.
  8. Source control - have there been incremental code submissions? This demonstrates an understanding of the purpose of source control.

Now it should be obvious to see that there is so much more assessed than just the initial requirements. Use as a technical test as an opportunity to show off and demonstrate your knowledge.