Eating Your Own Cooking

There’s nothing like eating your own cooking to tell you how the food is.  Unfortunately, the pride we get from doing it ourselves can sometimes cloud our judgment.  The same thing applies to just about any other human endeavor.  People often have an inflated opinion of themselves and what they have or can accomplish (I’m no exception).  If you need any proof, just watch the first few weeks of American Idol.

Those of us in the software business tend to think that our own software is way better than anyone else’s.  Of course it is – you wrote it yourself, didn’t you?  Unfortunately, your competitors are filled with people just like you.  They’re probably just as smart as you and have the same pride in their work and their resultant software.  No one is beyond this kind of thinking – not even Joel Spolsky.  He wrote this a few months ago:

I had to wonder. We do have a large competitor in our market that appears to be growing a lot faster than we are. The company is closing big deals with big, enterprise customers. And the wheels are falling off the donkey cart over there as the company stretches to fulfill its obligations. Meanwhile, our product is miles better, and we’re a well-run company, but it doesn’t seem to matter. Why?

Step One, I think, is to pluck off our biggest competitors. We’re pretty certain that we’ve already built a great product that meets our customers’ needs — but there are still too many cases where we find out that, for some reason, someone went with the other guy. So that’s the development team’s mission for 2010: to eliminate any possible reason that customers might buy our competitors’ junk, just because there is some dinky little feature that they told themselves they absolutely couldn’t live without. I don’t think this is going to be very hard, frankly. Developing great software is something I’m pretty sure we’re good at.

Those are strong words. “Competitor’s junk”?  That’s a very common way of looking at your competition and it clouds your judgment because it’s usually wrong.  “Pluck off our biggest competitors”? If that’s so easy, why hasn’t it happened already?  I love Joel’s blog and admire his goals for his company, but there’s a lot going on and going wrong here.

The responses to his article were interesting. One in particular shows how personal our feelings are about our own software:

JIRA [a competitive product to Joel’s Fogbugz] is a great product. I last used Fogbugz in June 2008, and then moved to a company using JIRA. It’s a real pleasure to use, which is good, because I use it for hours every day. Fogbugz was not a pleasure to use. Maybe Fogbugz is way better now, but if I were in a position to choose for another company, I’m pretty sure it would be JIRA all the way.

So, how do you get past this? One option is to eat your own cooking and the cooking of others. Get a copy of your competitor’s software. Dive into it and really examine its strengths and weaknesses. Find out what their customers like about it. Find out why they didn’t buy yours. Your sales and marketing staff is supposed to do this at your company.

On a more personal level, what can you do to improve your software? Use it yourself. If you can get a copy of your competitors, use it as well. What takes less time to get similar tasks done. How easy is it to do the job? What bugs do you find? Are there dead ends? Are there features missing? Does it take multiple steps to get a simple job done? Is there a method that’s counterintuitive or that requires users to change their way to doing business (this is big roadblock for some people)?

As a solo developer, I have the benefit of being the product designer as well as the coder. If I don’t find something easy to do in my products, I change it. If I can’t do something in the product, I add a new feature. If I run across a bug, I fix it. Note: when you run across a bug in your software, make sure that you either fix it or enter it in the bug database. It’s too easy to ignore bugs you live with every day because we developers are more tolerant of our own bugs – don’t be.  And don’t assume because you and everyone else lives with the bug that it’s in the database unless you check.

Finally, try to be objective. Stop pretending you love your own software so much and pretend you’re an end-user working with it for the first time. Then you’ll get an idea of why it’s so good or why it needs improvement.