As part of our interview process, we ask candidates to complete a coding problem of moderate complexity. Some candidates seem to spend an awful long time on it and produce code that is not of high enough quality.
It can be difficult to document what "high enough quality" actually is and provide feedback that is as useful and objective as possible to unsuccessful candidates. It can be easy to spot code smells like poor separation of concerns, large methods, cut and paste coding, or basically completely ignoring the most basic OO principles. After examining the code a gut feeling is probably going to be enough for us to make a decision, but how to feed back in such a way for the candidate to have gained some positive insight from their investment of time?
Should we grade code on a 5 point scale for certain factors? What should the factors be since (eg) "maintainability" is highly important but highly difficult to measure or score...
Perhaps we should just provide a reading list that shows the principles that are important to us? (For example DDD, Patterns of EAA, or maybe a more accessible one like Foundations of Programming.) We don't want to spend too long on assembling a hugely detailed review, just enough to be fair to the candidate.
Any opinions?
Note: I have looked at the other code review quesitons on SO but no answers seem to fit our need... We are of course not looking for production ready code, just well designed.