We often hear that "good is the enemy of great." And that's a nice, crunchy quote which has tons of yummy nutrients and goodness all wrapped up in it, right? Thanks, Voltaire. But is it always true? Is it just as possible that great is the enemy of good enough?
What's Good Enough?
There's a principle in agile software development that you should only build something that's good enough to fulfill the immediate need. Don't anticipate a bunch of future features that you might never require, because the code you'll write to implement them will need tests, and maintenance, and may introduce bugs, and so on.
Love and Logic teaches parents that the holy grail of parenting isn't being a perfect parent, but rather to be a good enough parent.
Good Enough represents the moment when you know you're doing enough things well to achieve, but you're not overshooting the goal.
Great, The Enemy
So someone tells you, "Good is the enemy of great." It's not enough that your business is doing well and satisfying its customers, you've got to be #1 in your market segment by the end of the quarter! Your next project has got to be such a home run that your competition will be playing catch-up for the next five years. You've got to deliver so much value for the dollar to your clients that they'll never consider talking to your competitors ever again.
There's just one problem: You can spend so much time getting that project of yours so sparklingly perfect, so spit-shined and awesome that by the time you finally release it, you discover that your competitors have something in the marketplace already. It's less shiny, but they've got traction. And that's assuming you ever do get to release, that the drive to perfection doesn't cause your project to implode under the weight of its own overblown expectations.
Great is a worthy goal, but don't let it get in the way of good enough!
So when does this matter?
If I go to my favorite restaurant and order a $30 steak, I don't want it to be good enough, I want it to be great. On the other hand, if I order a burger at McDonalds, my expectations are set a little differently.
I'm mostly thinking here about delivering something new. A new product, a new system, a new application. A new service. Something your company hasn't done before, or something that hasn't existed before.
Should you settle for good enough? Absolutely not.
But neither should you let the drive to achieve greatness prevent you from ever delivering. Remember, the first version of the iPod was pretty clunky by comparison to the devices we hold today. The first iPhone had no extra apps available for it, and no App Store from which you could purchase any. These products became great only as they iterated through multiple product generations.
Check out this Kickstarter project, which only has a portion of its sensors ready, but has designs for many more. What they've got is good enough to get started.
How about it? Are you letting the desire for greatness prevent you from shipping something that's good enough to get started? Leave a comment and tell us about it!