http://avva.livejournal.com/2351761.html
You have a problem and decide to use recursion.
Now you have a problem.
You have a problem and decide to use Java.
Now you have a ProblemFactory.
You have a problem and decide to use Python.
Now you don't know what you have. Could be an int, a string, a list or a problem.
You have a problem and decide to use threads.
Two now problems have you.
You have a problem and decide to use Lisp.
Now you have a list of problems.
You have a problem and decide to use locks.
Now you have
You have a problem and decide to use delegation.
Now your problem is your problem's problem.
You have a problem and decide to use anagrams.
Now you have lamb rope.
You have a problem and decide to dissolve it in water.
Now you have a solution.