Solving tricky problems is a technique you need to master if you plan on designing any sort of complicated system. Many times such problems require a healthy dose of intuition and ingenuity. But if you can only get this experience by solving the problems to begin with, isn't it a bit of a catch-22? Not quite. Here's some general strategies
on how to crack the tough cookies, with a classic example of a head-scratcher that tends to confound beginners.