Perfectionism and Development

I’ll be the first to admit that I have always been a perfectionist. In second grade, I would spend a minimum of 2 hours writing 10 spelling word sentences–they had to be “good”!  I’m sure many web developers, web designers, or graphic artists are the same way–working hours and hours to get it “just so” and, even then, finding a million other things we’d like to perfect before letting our creation see sunlight.

For better or worse, perfection isn’t a realistic expectation to set on yourself. Here’s a few ways perfectionism can do more harm than good.

Deadlines- Time is a precious resource, and, unfortunately, we only get so much of it.  Deadlines may be something that other people set for you, or they may be time limitations you put upon yourself.  However they are set, having only so much time to devote to a project means that you will have to find a point of good enough to deliver on time.

Being “First”-  There are certain instances where it is important to get your idea out into the market first.  This might be an app or other product/service where your continued success is dependent on being established as an industry leader.  In this case, like with deadlines, it is important to find a proper balance between meeting the Critical to Quality points and your own perfectionist tendencies.  Like Reid Hofffman, the founder of LinkedIn once said:

“If you are not embarrassed by the first version of your product, you’ve launched too late.”

Being at all- This is especially true for personal projects.  We seem to have a tendency to be incredibly critical of things we do “for ourselves.”  We see these especially as an extension of ourselves and don’t want to put up a flawed version. When this happens, it is important to remember others who started doing things “for themselves” and ended up changing the world as a result.  What about Leonardo daVinci’s sketches of helicopters, or Tolkien’s bedtime stories for his children? Just saying.

For your own health and well-being- Ever heard “don’t sweat the small stuff”?  Stress can cause or compound all sorts of nasty health conditions that your life would be a lot better without.  Being in a constantly stressed-out state also can put a strain on those around you, making everything that much more difficult.

Be Agile- We developers are lucky.  We’ve got agile development on our side.  Agile development means realizing that not everything can be achieved in a single release, and so we can release one version, then add updates or changes and release another. Agile development doesn’t allow room for defeat–“Oh I didn’t include…”–because it will be added in the next version coming shortly afterwards.  It also gives allowance for feedback from the users, so that the program/script/plugin can be tailored to be more useful without crippling its development cycle.

Agile development allowed me recently to share a plugin I’d created, then write down a page and a half of things I’d like to fix, and not stress so much about what I hadn’t yet completed. Instead, I got a chance to reflect on  how much I’d actually gotten done. It was actually incredibly satisfying, list of improvements aside.

How do you cope with any perfectionist tendencies? If you are a developer, what do you think of agile development?  If not, do you have anything similar that you use?

Peter Burgin is a web developer and instructor who’s not afraid of debugging, large textbooks, or speaking in front of huge crowds.