Following fast

Some time ago, unfortunately I can’t cite the source, I read that one of Toyota’s major strategies was not necessarily to innovate but to be able to follow quickly in the footsteps of innovators. The point was, whether or not correctly attributed, innovation is overrated if you can copy someone else’s innovation quickly enough.

Well today I saw this article on Huffington Post… A sort of rant about why 2048 was a rip off of “threes!” and how you should go out and buy Threes! because they put effort into their game and the ripoff only spent a couple weeks being constructed.

I won’t comment on the justness component of the article, but I do think that it’s an excellent illustration of following fast. 2048 is indeed very similar to its predecessor. I’ve played both since my father-in-law first challenged me to beat his top score on Threes! and subsequently pointed me to the equally addicting and free game, 2048. However, 2048 does have some differences and for the casual game player it’s far less frustrating. So, should every company invest 14 months inventing a game, or is a two week knockoff done by a single person and given away adequate?

Particularly in game playing, the marketplace is a highly commoditized place. If you need an entertainment fix, almost any game will do, so while each game is unique, you’re not just competing against other games like yours, you’re competing against all other games which satisfy the same need.

For better or worse the free market is pretty indifferent towards fairness, so recognizing that and following fast may be the way to go. And oh, it has another advantage, one that was articulated by Tom Demarco in his work “The Deadline.” If you have an existing product to copy, specifications for how your product should at least mostly work are right there in the form of the existing software and user manuals.

Why “spend it like it is your own” is a bad mantra

Recently I’ve been hearing people say fairly frequently “spend it like it’s your own.” The intonation behind this is to not waste the company’s money on things that the company doesn’t need. In other words, if someone gave you a million dollars, do what you would do with it. The foregone (but wrong) conclusion is that you will spend it wisely.

Seriously? If someone gave you an extra million dollars are you the person who would set it aside for your kids’ college, fill up an IRA and make sure you had an adequate rainy day fund? Of would you finally buy that beach house you’ve been dreaming of? The new BMW? The huge TV?

Ok, maybe you would, but what about everyone you know? Is everyone you know that responsible? I doubt it. In fact, I’m willing to bet you know a spendthrift or two, or more. People who have to go on vacation every summer but haven’t fully funded their retirement. People with two new cars but $30k in credit card debt. People with the latest gadget, no matter what it is. People who stand in line for the newest iPhone. In short, people who don’t exhibit any self control. People who can’t discern between ‘need’ and ‘want.’

Even if this person isn’t you, these people exist. They’re not bad people, but they have different priorities. Perhaps you recall the cookie study done on a bunch of children? Essentially, they offered kids the choice of one cookie now, or if they could wait a bit, two cookies later. Guess what, most children couldn’t wait. More surprisingly, as they followed these kids through their lives, the ones who could not delay gratification did less well in life overall (how you measure that, I don’t know.). It’s built in to many of us to desire what we can have now, whether it is the best choice or not. So with that in mind, the mantra “spend it like it is your own” probably deserves reconsideration.

Good Enough

I was driving down the highway the other afternoon when I saw a billboard for some car.  I don’t recall the car, but I do recall the slogan “Enough of ‘Good Enough'” it read.  Presumably the implication was that other car manufacturers make a car that’s just “good enough” and that this car was exceptional.

“Good enough” is a common phrase in software development, and I get the concept, but not the practical applications of it that I see.  Conceptually, you build something that is just enough to meet the customer’s needs and no more.  The issue is, the definition of what a customer wants or needs isn’t exactly readily available.  If you were making some sort of trivial object and dealing with economically perfect competition, good enough would make sense.  You’d want to produce something that exactly met the customer’s needs and right around the same price as your competitors.  Competition would assure your prices were kept low.  Simplicity of the object would assure that product differentiation was a non-issue.

But software development is more of a monopolistic oligopoly.  Your slightly different software is competing against others who solve similar problems but not in exactly the same way.  The meaning of “good enough” begins to lose meaning because the myriad of trade-offs each competitor can make.  You might offer feature X, the other might offer a product without the feature at a lower price point.  Which will the customer buy?  Is price all there is to it?  Of course not.

Add on top of that the skewed meaning of “good enough” to many software developers and you’ve got yourself a real conundrum.  I can’t count the number of times a software developer has informed me that the poor behavior of the software was user error.  It’s so common, there’s a classic joke about it:

How many software engineers does it take to change a light bulb?  None. We’ll document it in the manual.

In spirit, I love the idea of good enough – to never build more than your customer wants.  But in practice, exactly what your customer wants may not be clear and even if it is, your developers are inclined (for some crazy reason) to make odd decisions about how the system should or shouldn’t function. 

The car company is right.  Enough of “good enough.”  Pursue perfection.