Sunday, September 9, 2012

Good Developer Traits: Impatience ... Paid in Time

In a recent conversation with a coworker at Blizzard, we talked about what makes a "good developer."  It was an interesting topic, and I thought one worthy of sharing.  To be clear, we weren't talking about "good artists."  Nor were we talking about good programmers.  Nor good game designers.  Nor producers, managers, directors, etc.  Specifically, we keyed on the concept of a "good game developer."

In the conversation, we discussed a variety of factors -- enough to warrant whole series on the subject.  This first post is about Impatience.  That point in a project where most developers arrive (mentally), where speed is of the essence -- and good judgment is sacrificed.  Ultimately, the cost of such impatience is paid in Time.



This is a picture of my grandfather.  He led an interesting life, and held down many jobs over the years.  His last career, prior to retiring, was a painter.  Not the fine arts.  He was a professional painter -- homes, businesses, schools and the like.  That was his profession.  He was a good painter.

This came to mind as the result of a home improvement project where I repainted the back patio "cover" on our new home in California.  I painted it, for sure.  I was painting.  However, this does not make me a good painter.  Multiple reasons.  The quality of craftsmanship is in the "amateur" category.  I missed a number of spots and left an unfortunate number of uneven areas.  It also took me a ridiculous amount of time to complete the job.  Lastly, and most importantly, I committed a horrible error in the very final stages.

With less than 10 feet to go on the few remaining boards, I got impatient.  I didn't ensure that the paint tray was adequately secured to the ladder before moving the ladder.  You can probably see where this is headed.  Shortly after moving the ladder, I was back to painting and a careless jostle caused the paint tray to slip loose from the ladder..  I should also mention that I had recently refilled the tray -- so, it was nearly full.  Now, imagine a nearly full tray of paint falling approx. 6 feet off a ladder and the resultant impact spray.  In that instant, I proved the tagline from Alien inaccurate, as my screamed expletive was most certainly heard in space.

My error -- my impatience -- carried a very real cost in Time.

With more patience.  With more care.  In fact, with more understanding of the complete job of a painter, this whole incident would have been avoided.  Rather than completing my job in less than 10 minutes, my impatience resulted in me pressure-spraying around my backyard for at least another two hours.  Sound familiar?

That day, I learned that I was not a painter.

"You have insulted the memory of my l33t painting skillz, Grandson!"


So, how does this tie in to game development?  Let me ask you this: how many people have you known who have lost an hour's worth of work or more?  Other than yourself, I mean.  Regardless of the reasons, it happens.  It happens a lot.  Here are some prime examples.
  • Failure to save a Max/Maya/Photoshop file for an extended period of time.  Crash.
  • Failure to submit files to an asset management depot.  Corruption.
  • Working locally.  Crash or Corruption.  Computer death.
  • Virus outbreak.  Widespread loss.
I have either witnessed or personally experienced each of these incidents.  As a matter of fact, I wager that most developers have It is often by having these things happen to us that we learn patience.  We learn (the hard way) that craftsmanship means caring as much for the time involved as for the final product.

My coworker and I postulated that good artists/programmers/designers who fail to recognize this craftsmanship will struggle to become "good developers."  For example, I once worked with an artist who lost over a week's worth of work by failing to submit his file(s) to Perforce on a regular basis.  I felt bad for him.  That is, until the same thing happened to him again several months later.  Rarely does that lesson need repeating -- and yet, for some it does.

The simple truth is that a good game developer recognizes that Time is the most critical resource.  For young developers, this is often mistakenly interpreted as working lots of overtime or cranking through your work as quickly as possible (even though these approaches are prone to inefficiency and waste). 

Seasoned developers recognize that Time is to respected, is to protected and is to be traded cautiously -- that one's time should be used effectively and that preserving invested time (by archival or incremental saves) is how you become a "good developer."

That, and learning from your mistakes.