Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm looking for simple models with concise, concrete problem descriptions and greater than 50% chance that a particular answer provides a particular insight into one of a number of skills, to be given to prospective candidates for hire for a software engineering position. The coffee maker problem, for example, does not lend itself to a quick, in-office test taking scenario. Variations of shape, appliance, vehicle, coin or Lego™ management systems would probably be good.

Desired skills are primarily understanding of:

  1. When to use inheritance vs. composition
  2. When to use members for state vs. parameters or locals
  3. Importance of utilizing business domain terminology
  4. When to abstract out patterns vs. reducing complexity
  5. How to model responsibility vs. convenience
  6. When to use control inversion
  7. When to use an association class

My focus is on static structure.

share|improve this question

migrated from stackoverflow.com May 27 '11 at 12:50

This question came from our site for professional and enthusiast programmers.

2 Answers 2

The book "Head First Design Patterns" by Freeman, Robson, Bates, Sierra published by O'Reilly contains a number of code examples (in java), using a simplified UML notation for class diagrams. There are a lot of before-and-after diagrams in the book, some of them match a subset of your criteria.

Alternatively you could use some of your own models, introduce some errors yourself and ask "Here's one of our models. Do you see some problems with it?" But I think you'll get biased results this way.

share|improve this answer
I have just now (as in minutes ago) finished reading the book, and it is actually not such a bad idea. the problem is that most of these examples will use only one design pattern as a solution and they aren't very real world tests (ie: their solution is quite obvious even w/o knowing design patterns explicitly) –  Ziv May 27 '11 at 21:47

I can't come up with an non-trivial example on the top of my head but something along the lines of extending a third-party library to be used in your own domain logic concurrently should hit most of those points.

share|improve this answer
Yes, I believe they would. The problem though, lies in: a) using domains that anyone could understand cold, and b) trimming them down to problems that have more crisply wrong/right possible answers –  Dynrepsys May 31 '11 at 19:51

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.