Computer science is all about metaphore, and how it enables us to visualise what we are doing, and discuss it with others. A lot of programming experience is about applying metaphore and recognising progamming idioms.
One that we were discussing at work this week was trees. Computer scientists and programmers talk about trees quite often. Trees are the metaphore used for some of the most often used data structures. However we noticed that these are some very confusing trees. We start at the root of the tree, then descend it (depth first) to reach the leaves. Maybe computer scientists spend too much time locked in darkened rooms programming, and never seeing the outside world, but if I were at the root of a tree, and wanted to find leaves I would head upwards, definitely not downwards.