It's no secret that I've been interviewing recently. Non-programmers often ask me what I am looking for and what skills are needed and why I do or don't offer people the positions. Telling them that I'm looking for Java or C# programmers or a DBA is not only an inadequate description, but also doesn't mean very much to them.
Recently I've taken to using the metaphor of learning to drive to describe the people I'm looking for. Lot's of people know the syntax of a programming language. Learning the language syntax is like learning to control a car. Fewer people know how to apply the language well and safely using patterns, best practice idioms, exception safety, etc. Learning to apply a language is like learning to drive a car well, learning to anticipate, knowing the rules of the road and sticking to the speed limit without loosing control. It was surprising how quickly people suddenly understood what I was looking for.
If only learning to use a language well was as easy as learning to drive.