Code Craft Driving Test

Event Information

Share this event

Date and Time



Event description


This is a trail run for the Codemanship Code Craft Driving Test.

Working in C#, you will be emailed details of the project you'll be undertaking before 9am BST on Saturday Sept 16th.

Before you begin, you will need:

  • A reliable Internet connection
  • Visual Studio 2013 or later (Community Edition or better)
  • A GitHub account

The project should take you between 4 and 8 hours, and you will have 24 hours to submit your finished solution with a link to its GitHub repository.

You should not require any third-party libraries beyond NUnit and Moq to complete the project.

Assuming your solution is submitted before 9am BST on Sunday Sept 17th, we will check that it passes the customer tests that will be included in the Visual Studio solution we give you.


To pass the driving test, your code will need to satisfy the following criteria.

1. It Works

* Your solution passes all of the customer tests we'll give you
* Your solution also survives a more exhaustive suite of tests to hunt for any lurking bugs

2. It's Readable

* The Conceptual Correlation between your code and the requirements is > 80%
* Non of your identifiers contain > 20 characters (except for test method names)
* No line of your code contains > 10 IL operators

3. It's Low in Duplication

* A check using Simian will reveal no more than 15% code duplication (We'll give you the precise Simian options so you can check for yourself)

4. It's Made of Simple Parts

* No method will contain > 10 LOC
* No method will have > 2 branches
* No method will have > 3 parameters
* No method will have Boolean parameters
* No class will have > 6 methods

5. It's Made of Swappable Parts

* Excluding in your tests, all dependencies on other classes in your solution will be swappable by dependency injection. Use of DI frameworks will also be forbidden. (Dependency Inversion)
* No non-test class will invoke any method on an instance of another class in the solution that can't be easily extended or swapped (e.g., in C#, only methods on interfaces or virtual methods can be invoked)

6. The Parts Are Loosely Coupled

* No class will depend on > 3 other classes in your solution
* No method will exhibit Feature Envy (when a method of one class uses more than one method of another) for other classes in your solution (Tell, Don't Ask)
* No class or interface will expose features to another class that it doesn't use (Interface Segregation)
* No class will invoke methods on solution classes which are not direct collaborators (i.e., fields or parameters) (Law of Demeter)

7. Test Code Quality

* No unit test will make more than one assertion (or mock object equivalent)
* There will be exactly one unit test method per requirements rule, the name of the test will clearly describe the rule
* All of the unit tests will pass without any external dependencies
* There will be a maximum of 10% integration test code, packaged separately
* The tests will run in < 10 seconds
* Tests will contain < 25% code duplication

(Precise quality criteria subject to change)

We will also require you to record a 20-30 minute screencast while you're working on the project, in which you will demonstrate going through at least 3 cycles of Test-Driven Development (red-green-refactor), explaining not just what you're doing, but why you're doing it.

You must submit a link to your screencast (uploaded to your YouTube or Vimeo account) with your finished solution, so we can assess your practices and habits as well as your insights into code craft and your ability to articulate its value. We recommend CamStudio as a good free screen recorder for Windows. The screencast must not be edited.

Date and Time


Save This Event

Event Saved