Tuesday, January 22, 2008

Purist vs. Pragmatist

[This was originally posted at http://timstall.dotnetdevelopersjournal.com/purist_vs_pragmatist.htm]

I've seen a lot of different developer personalities over the years. Two main groups, who always seem at odds with each other, are the "purists" and the "pragmatists".

 

Here's a brain-dump based on my personal experience:

  • The purist wants to do pure, perfect coding, and never get their hands dirty with un-pure code.

  • The pragmatist wants to get the product shipped and make the client happy, but may take hacks and shortcuts to do so.

I see pros & cons to each approach.

 

 ProCon
PuristPRO: Always trying to do it right, wants to avoid hacks that would be costly later on.

PERCEPTION: Seen as visionary leaders whose best-practice principles set the entire project on the right path, and spares the team from endless hours of hacks.

EXAMPLE: "This is a 3 month project, we're going to take the first week and set up a build server with proper continuous integration".

FAVORITE SAYINGS:

  • "We got to do this right"
  • "These are the best-practices"
  • "Look at the rate-of-return"

 

CON: It is easy to be a purist on paper, or with the easy problems, but the mess of the real world (deadlines, client changes, complex technology, personality differences) means that we often need to make compromises that aren't always perfect.

PERCEPTION: Seen as ivory-tower elitists who never actually get the job done because they keep waiting for the perfect component in an un-perfect word. A purist is more talk than action, and because it's easy to talk, purists are always asking for the impossible. If a purist actually had to do it themselves, they'd act like pragmatists.

EXAMPLE: "That fileCopy utility (used only for internal development) isn't good enough because it may not handle the new encoding standards in three years, you need to re-write it from scratch."

FAVORITE SAYINGS:

PragmatistPRO: Focuses on getting the job done so that the company stays in business.

PERCEPTION: Seen as the "real workers" in the trenches who get the job done.

EXAMPLE: "It'd be nice to have a script that automatically deploys the entire product, but there are some third-party manual GUI configuration steps that we just cannot automate yet"

FAVORITE SAYINGS:

  • "Talk is cheap"
  • "It's easier to describe than implement"
  • "Show me a proto-type"
  • "How will you find schedule time for that"
CON: The pragmatist may get so caught up in "just getting it done", that they always take the immediate solution, which is usually not the best long-term solution.

PERCEPTION: Seen as desperate hackers who get the current product out only by writing mountains of bad code, for which the purists later spend 10 times the effort to fix.

EXAMPLE: "This component is due next week, I'll just copy this code to ten different places because I don't have time to refactor it."

FAVORITE SAYINGS: (bad if used as a justification to commit some hack)

  • "We got to get it done"
  • "We don't have time".

 

You could simplify this as the purist is obsessed with the cause (we'll do it right, no matter how long it takes), the pragmatist is obsessed with the effect (we'll ship a product, even if we need to cut corners).

 

Of course, I think the ideal approach is a balance. The very good book, The Pragmatic Programmers, shows many such balanced-techniques. Sometimes, you'll be forced into a hack - but there are still good ways to handle that. It also helps having a team with a range of these personalities so that people can hold each other accountable and bring out the best in one another.

No comments:

Post a Comment