Imagine yourself sitting in front of a computer, working away at your final coding project for class. Its 3 AM in morning, you have an exam in a few hours, and have a program due that just will not compile. You have tried everything you can think of; check for syntax errors, check for spelling errors, even check your code against others. You find nothing wrong with it and without it compiling, all your work is about as useful as throwing a fish against a brick wall. What I do when wrestling with a problem I can’t quite solve is to talk it over with another person to help gain a new perspective, it won’t require much from them and you will be surprised by all the little mistakes that will come to light. Too bad as any friend your likely to find that early in the morning is not going to be very eager to help, to say the least. That’s why I'd rather use a rubber duck, they tend to be less hostile then their human counterparts and are always willing to help. Your problem is solved, until the duck stars to talk back; then you have a completely different set of problems to worry about.