About Me

Training

Nothin But .Net Developer Bootcamp

Navigation

Search

Categories

On this page

Avoid the trap of perfectionism

Archive

Blogroll

 Agile Developer Venkat's Blog
 Ayende @ Blog
 B#
 Barry Gervin's Software Architecture Perspectives
 Boy Meets World
 Brad Abrams
 Canadian Developers
 Christopher Steen
 Claritude Software News
 Clemens Vasters: Enterprise Development and Alien Abductions
 Coding Horror
 Coding in an Igloo
 Dare Obasanjo aka Carnage4Life
 Darrell Norton's Blog [MVP]
 David Hayden [MVP C#]
 Don Box's Spoutlet
 Eric Gunnerson's C# Compendium
 EZWeb guy: Jeffrey Palermo [C# MVP]
 Fear and Loathing
 Generalities & Details: Adventures in the High-tech Underbelly
 Greg Young [MVP]
 Greg's Cool [Insert Clever Name] of the Day
 IanG on Tap
 Ingo Rammer's Weblog
 ISerializable - Roy Osherove's Blog
 James Kovacs' Weblog
 Jason Haley
 Jean-Luc David
 Jeremy D. Miller -- The Shade Tree Developer
 JetBrains .NET Tools Blog
 Jimmy Nilsson's weblog
 John Bristowe's Weblog
 John Papa [MVP C#]
 Jon Skeet's Coding Blog
 JonGalloway.ToString()
 Jump the Fence or Walk Around
 Lambda the Ultimate - Programming Languages Weblog
 Larkware News
 Lutz Roeder
 Marquee de Sells: Chris's insight outlet
 Martin Fowler's Bliki
 Mike Nichols - SonOfNun Technology
 MSDN Magazine - .NET Matters
 MSDN Magazine - All Articles
 OdeToCode Blogs
 Onion Blog
 Planet TW
 Raymond Lewallen [MVP]
 Rockford Lhotka
 RodMan's Corner
 Roger Johansson's blog
 Sahil Malik - blah.winsmarts.com
 Sam Gentile's Blog
 Scott Bellware [MVP]
 Scott Hanselman's Computer Zen
 ScottGu's Blog
 secretGeek
 Service Station, by Aaron Skonnard
 Signum sine tinnitu--by Guy Kawasaki
 Stephen Toub
 Steve Eichert's Blog
 Steven Rockarts
 The Blog Ride
 The Coding Hillbilly
 The Daily WTF
 TheServerSide.net: News
 Tim Gifford
 Vance Morrison's Weblog
 you've been HAACKED

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

RSS 2.0 | Atom 1.0 | CDF

Send mail to the author(s) E-mail

 Thursday, July 09, 2009
Thursday, July 09, 2009 3:00:00 PM (Mountain Standard Time, UTC-07:00) ( Inspiration | Productivity )

I am just in the process of thinking about a VAN presentation that I am going to be delivering. The topic is that of developer productivity. One of the things I read this morning was an excerpt from the book Pragmatic Thinking and Learning (an amazing book). The actual fragment that caught my attention was written by an author named Anne Lamott:

"Perfectionism is the voice of the oppressor, the enemy of the people. It will keep you cramped and insane your whole life, and it is the main obstacle between you and a shitty first draft. I think perfectionism is based on the obsessive belief that if you run carefully enough, hitting each stepping-stone just right, you won't have to de. The truth is that you will die anyway and that a lot of people who aren't even looking at their feet are gong to do a whole lot better than you, and have a lot more fun while they're doing it."

This fragment sums up perfectly a phrase I say "a lot" to people that I have an opportunity to work with: "Perfect is the enemy of the good", I can't remember where I first heard that phrase many years ago, but it has been something that I tell myself all the time. I am not at all trying to say that we should not strive for excellence in the tasks that we undertake, I am just saying that the very act of wanting to come up with the "perfect" answer/solution right off the bat is the very thing that can often stop you from even starting the effort in a timely fashion. Instead of writing a crappy piece of code and taking the time to refactor to a cleaner solution, you can spend countless amounts of time staring at a screen, reading a book on good design, looking at other good designs. None of these activities are fruitless, but if they are the very things that stop you from making your own progress then they actually become a detriment to your individual progress. Worse, if those activities further cause you to think about how "imperfect" your own initial solution might be, you can very well paralyze yourself and put yourself in a situation where you will waste precious time.

Today you may well be facing down a tough problem, one that you have not yet faced before. My recommendation for you is tackle the problem in context, draw from your past skills, learn from your mistakes, and just take the first step. As a diligent coder you are not going to allow code smells to remain in the product that you build, but allow yourself to let the code take its initial shape and then "refactor without mercy". Rinse and repeat this process until you have your solution in hand. Enjoy yourself, remember why you became a coder in the first place.

Develop With Passion!!