From the challenges screen of Modern Warfare 2:
An amateur practices until he can get it right, a professional practices until he can’t get it wrong.
Yup, that’s pretty much the truth. Take programming–amateurs improve step by step, learning new things about the language and tools, and just trying to get their program to work. Pros, on the other hand, have mastered that stuff, but they also include things like extensive error checking and use methods to get the compiler to flag their errors. They know they will make mistakes and therefore take steps to eliminate them ahead of time.