How do you get a useful idea of the skill level of a Java developer? There are of course many options to test basic knowledge of Java. More advanced tests might get into specific technologies. This test is different. It is designed not simply to test recall of facts, but rather test problem solving ability. It is not a speed test, the task outline is reasonably simple and a period of one day is specified. Any Java capable developer will be able to complete the test in much less than this. This is also not a 'trick' test, in that there are no obscure bugs trying to trick developers. Neither is any technology outside Java and some basic Spring used.
This week I am posting the test itself for those who want to take a look and perhaps try it out themselves. Next week I will be posting an example solution and the text notes that will allow you to evaluate applicant solutions.
The reason I am posting it here is because I am interested in whether this style of test will be generally useful, both for testing applicants for Java positions and for teaching new developers through example. It will be a jumping off point for a larger discussion of what we value in developer skills. And perhaps I'm simply barking up the wrong tree :-)
Instructions to Applicant
Vladimir Antanov has fled the country with his girlfriend Sonya. My company employed Antanov to maintain our critical communication systems. We urgently need to add a new feature the the existing software, and knowing you are a Master Java Developer we have chosen you to modify the software to communicate with our new clients.
Please find attached the project and source code. Currently the system processes notifications and sends them to email, database or a web service. We need to add another endpoint - JMS.
The JMS connection requires configuration details:
You have one day to create a new fork of the project and apply your changes. Once complete please post the URL for your fork in the comments below. You can find the repository here:
Note: We don't expect an actual JMS connector - follow the same pattern as the existing senders which simply output to the console.