I was working with a programmer with a deep knowledge of a particular technology. However, after working with him for a couple of hours, I realized that he was not especially pragmatic.
One criterion that makes a good programmer is pragmatism. There is a great book by Andrew Hunt and David Thomas called The Pragmatic Programmer. In their book, pragmatism is “a (person’s) attitude, a style, a philosophy of approaching problems and their solutions. They think beyond the immediate problem, always trying to place it in its larger context, always trying to be aware of the bigger picture.” The characteristics of a pragmatic programmer are:
- Early Adopter/Fast Adapter: When given something new, they can quickly grasp and integrate it with rest of their knowledge.
- Inquisitive: Always striving to understand a problem or technology. They tend to ask a lot of questions.
- Critical Thinker: They always think critically of any given situation.
- Realistic: They understand the underlying nature of each problem they face.
- Jack-of-all-trades: A generalist, they will always be learning.
A great programmer is a person who can take a problem and piece together the evidence that is presented to him or her in the larger scheme of things. He or she understands what questions need to be answered when presented with ambiguous or unclear evidence. And he or she actively searches for the concrete understanding of the issue and a concrete solution to that issue. Programming requires not only a deep knowledge of certain technology or memorizing all the shorthand techniques. It is also encompasses a person’s way of thinking.
Do you agree with Hunt and Thomas’ definition and characteristics of a pragmatic programmer? Does a good programmer == pragmatic programmer? Let me hear your thoughts on this!