1ManTeam

From napkin plan to mega-zillion product. About technology, usability, entrepreneurship and start-ups.

Posted by edoron | January - 21 - 2011 | 0 Comment

I am generally considered a perfectionist. Unfortunately that’s not always a good thing.

This might come as a shock, but perfectionism can hinder good software development, not to mention deadlines. Over time I’ve come to the sad realization that nothing in this world is ever perfect and the attempt to make it perfect is a never ending drain of resources.

Trying to get everything perfect, fixing all minor bugs that a user is not likely to encounter in 100 years or adding all newly requested features to the work scope, would most certainly lead your project to go over time and over budget. And more importantly it will considerably decrease the project’s chances of completion and success.

The trick is to settle for “good” for the upcoming release and to focus on “perfect” for the long run. A few tips:

  • Correctly make the distinction between issues that are bugs and those that are new feature ideas/requests.
  • Prioritize bugs and features and strictly act according to those priorities.
  • Manage new feature ideas and requests, and be able to turn some of them down.
  • Decide what bugs get fixed and what features get implemented according to your schedule and budget and not vice versa.

Dealing with Features

Each product or service can sport an endless number of features. A toaster can also make coffee and a video site can also support MP3 uploads, but should they? It’s very easy to get carried away and add unneeded features to any software. The more people you consult with the more feature suggestions you’ll collect and the longer the project goes on, more features will pile up on your To-Do list.
The trick is to have focus regarding what your product is and is supposed cater for, and to be able to stick to that. Many preach for you to come up with the minimum set of features you can get away with for your first version. I’d rather focus on a reasonable set of features and not on the minimum set. I think a product should be more than barely functional, but on the other hand it’s crucial not to get carried away and to know how to postpone features to the next versions.

Dealing with Bugs

Any seasoned practitioner of the software development art can tell you that there is no such thing as 100% bug free software. You might think it is bug free, but that’s only because you didn’t find all the bugs yet. This is true due the inherent complexity of most software projects and products. If you take any commercial software package or web application, given a bit of patience, you can find bugs in it. I’m aware of a few bugs lurking even in the word processor that I use to write these very lines.
The trick is to categorize and prioritize bugs and deal with the most important ones first in order to keep your milestones and launch your product or service on time (even if it still has some known bugs).

Dealing with the User Experience

Anything can be improved. There is practically no end to the number of improvements that can be made to any software, service or product in order to make the user happier. It’s a continuous cycle of designing, implementing, testing, and releasing new versions.
The trick is to start with something that is conceivably good. Then to solicit and collect user feedback, as well as use various user tracking tools to analyze where things go bad, and improve in the next version.

Side Note

At your next job interview a future employer might ask you: “What is your worst quality?”
It’s common wisdom that the least damaging answer is “I’m a perfectionist”, or is it?

June 26, 2001