Thursday, July 21, 2011

Perfection: the enemy of completion

I'm used to have 2 signs hanging on my office wall. One of them says "Perfection is the enemy of completion". (The second sign I'll keep for a future post.)

As much as we all assume we are perfect and can produce bug-free products, reality simply does not allow it.

For example:
  • If your product works perfectly on newer browsers, it won't work well on older browsers
  • If your product is designed for older browsers, it will look really outdated on all browsers
  • If your product runs well on newer versions of windows, it won't work at all on old versions; and vice-versa
But even of you target only a specific subset - e.g. a single version of a single model of a mobile phone - you still can't produce perfect software, unless you are writing a tiny application.

Since nowadays applications are event-driven, you can never tell in what order the user will use the software. They may do things that you never would imagine.

What you can do is have robust error handling, so that it fails gracefully. E.g.: On the web, if you go to an unknown page, you get a 404; you don't break the Internet.

Nicer still is when you customize your 404 page to be friendly.

At some point you have to decide that the system is ready for shipping, even though it's not perfect. It's a Project Manager's job to understand the system well enough so as to help make the call: It's complete even though it's not perfect.

In a future release you can always decide to improve the product to try make it perfect; or you may decide to add more "almost perfect"  additions to it.

- Danny

No comments:

Post a Comment