Agreed, in my experience this is the real difference between mediocre/OK/excellent programmers; the ability to choose the "right" level of encapsulation and abstraction at design time. It's definitely not always correlated with experience, although finding someone relatively junior on the good+ side of the scale is a real find because as you said the school of hard knocks tends to be the best teacher in this realm. IMHO Most anyone can learn to program at a reasonable level, but not everyone can do design well; see bootcamp graduates(and also "ten years of the same 1year of experience)…