If you’re like me, you probably often find yourself never fully satisfied with your work — always making tweaks and changes, always finding things you don’t quite like and reworking them. This applies to a lot of creative endeavors — perhaps you’re working on an article for your blog, putting together a report or writing an important email.
The thing is, even after making changes, there are still things you can tweak, things which aren’t quite perfect yet.
This of course is good, you’re setting yourself a high standard. If you’re not satisfied with your work then why should your visitors or customers?
Perfection is a good thing to strive for
Steve Jobs wasn’t satisfied with the first version of the iPhone. He made a difficult decision to scrap the first design because he didn’t love it; he felt this wasn’t the best Apple could do. This caused a lot of problems for the development team as they had to put together a completely new design in a very short timeframe.
The new version turned out a success, and had he not made this difficult call, the iPhone would unlikely to have made as big a mark on the phone industry as it has, thanks in part to its iconic design.
But…
Perfection is difficult and time consuming
Perfection can be dangerous and misguiding. When is something good enough? When can you go ahead and release that new version of your app or publish your new article? Perfection is too high a target because it’s just too hard and time consuming to achieve.
If you fall slave to perfection you’ll find all your time depleted. You’ll be making tweaks after changes and changes after tweaks — things just won’t get done on time.
How do you fight perfection?
Consider priorities — what are the things that really matter? Something like an iPhone is a critical product for a very large company; if you mess it up, it can cause serious damage. Getting this product right is vital. Setting a very high standard would be a pretty good idea here.
What about much smaller things like the design of your blog? In the end, it usually doesn’t matter all that much, unless this blog is your primary business. Simplicity is your ally here. Simple things are difficult to mess up, so create something simple and gets the job done.
Your most precious resource is your time. To fight perfection you must prioritize time and focus on the things that matter. If you keep working on and reworking things that aren’t all that important then those things won’t get done.
Getting things done
Execution is much more important than ideas. Getting something released that’s good enough is better than working on something perfect and never finishing it. Don’t seek perfection in everything you do — reserve it for the things that really matter. Tame perfection — get everything else done faster and use the time you save on your most important projects.
Why do I think about Duke Nukem when I read this post???
is that still under development?? Just checked out their site and it’s still going :o
How true… Well, the hardest thing is to design and develop for yourself. I am my worst client ever! :)
Excellently put Dmitry. I Tweeted about this a while a go where I posted the question whether it was healthy design-wise to have a craving for wanting to redesign my little web space. I often get inspired by so many resources and sites available that I seek to implement some ideas to my work.
I’M OUTTA OF BUBLEGUMMMM!!!
good post Dmitry. I think to fight perfection, we need to set up a goal and force us to stop there. then it’s ok to explore for new features.
Great post! I’m always having to push through the perfectionist inside and just get the ball rolling. Because if I never start then how can I finish?
Yes, Dmitry, the bane of any creative subject task is perfection… very few people I’d count as good at what they do aren’t fighting this every day. Walking away can be difficult - I end up yelling at people who are saying “one more week of implementation”.
Pareto’s Law - the 80/20 Rule - has to come into the economics or we go broke.
As it is I have had clients complain about the need for (god forbid) proof reading, research, design tweaks lol.
It’s a message we need to hear regularly too. Make something slightly imperfect and the criticisms are filling our inboxes by morning. We need to tell each other it’s OK to make very good products commercially - play with perfection on weekends maybe.
[...] good fight is the fight against perfection - if you want to make money - and we need to let other developers know that very good products are [...]
“The best is the enemy of the good.” That quote has been ringing in my ears all week. Thanks for the excellent post, Dmitry. Count me as one of your new subscribers.
…Mike
Thanks Mike :)
Nice post. A professor in my graduate school used to say —
There are two boundaries within which you need to operate:
The best is the enemy of the good, and
The good is the enemy of the best.
:)
yes Dmitry, you’re right.
However, shouldn’t one take care not to fall into “just give the first draft and leave it as it is”? Is a software “good” just because it works? Not that sure. When it takes ages for a simple adaptation or even when it’s quite impossible to reuse.
Just a couple of thoughts…
This is where iterative development always wins. Even the iPhone is an example. Apple put out a product with fewer than the desired features, but each feature was close to perfect. Had Apple tried to make the 3G iPhone and eveything else in that short time frame, they would never have released the quality product they did.
The down side is when you work in hardware, iterative development can screw your early adopters. See iPhone.
Find the minimum feature set that your customers will buy with version 1.0 and deliver those features. Once your customer gets her hands on it, the set of desired features is going to change anyway.
Very interesting posting. Although, I don’t think that perfection is the real problem. Quality is what rules. Quality in design, architecture, documentation, etc. How far do you have to go to get the optimum for your costs (initially and over time)? Iterative can help. But, what if you don’t have time for refactoring because of limited resources? How far do you have to be in your software architecture and design to keep everything extensible, etc. the following years without loss of efficiency? In this case I would say try to be as perfect as possible. There’s only one chance.
Some more aspects:
http://blog.rainer.eschen.name/2008/02/07/code-quality-why-maintenance-and-risk-management-are-so-important-to-developers/
Great article. Perfection is a problem I definitely have. I can’t say I’m really happy with any site I’ve ever done. Although every client I’ve had is happy, so maybe that’s because I never am happy and keep trying to make things better. Who knows?
Бьютифул!