Expand the problem to expose solutions

Actually, this one was taught in my university course, but it is still very useful.

Make sure you apply this when talking to your customer about how to solve their problem.  Often the conversation will start out as “we need a widget to do X”, but actually you can solve their underlying problem much better in another way.  Make sure you fully understand what problem they are trying to solve rather than just blindly making the widget they requested.