Design Matters
The recent hoo-haw over whether the Do-No-Evil Empire launched an Attack of the Clones gives us a great opportunity to think about design and its value:
[Some people are] more or less arguing that it’s ridiculous to claim that 37signals somehow owns the concept of web-based group chat. Which is stupid, because no one made that argument. (Does Artie MacStrawman have a web-app cousin?)
Consider, say, Movable Type and WordPress. WordPress came along with a free (beer and freedom) package that does the same basic thing as Movable Type and took a big chunk of the market away. But I’ve never seen anyone call WordPress a rip-off or clone of Movable Type. Why? Because it isn’t. It’s an original implementation of the same basic idea.
A new implementation of the same concept is competition; a clone of an existing implementation is a rip-off.
As is often the case,
Gruber’s analysis of the difference between the concept and the implementation is spot-on. The distinction is important to John: he’s deeply involved in the design community, where people care very much about the value one can add by coming up with a better implementation of the same concept.
We saw a variation of this thinking when Rails was released: more than a few people claimed there was nothing new in Rails, it was “just” a framework for building CRUD applications, and a lightweight framework by the measure of how many new things you could do with it.
But the value in Rails is its
design, in the way you put those CRUD applications together. Love it or hate it, Rails is an exercise in design, an exercise in user interfaces for programmers. At the time, it was a unique implementation of an existing and well-known concept.
Don’t we agree, for example, that
Grails is a clone of Rails while
Camping is not? One clones the implementation on a different platform, one does not.
People claim that certain ideas are “obvious” and therefore should be copied at will. I find it easy to think that something is obvious after you’ve looked at it and studied it. But the true test of “obviousness” is to go into a clean room, having never seen the original, and come up with what you imagine is an original design that does a good job of fulfilling the requirements of the concept.
If you arrive at the same design independently, you have a decent argument that the design is obvious.
What really mattersI’m going to change tacks here. If you are sitting down to make something, don’t clone an existing thing. Why? Because you can do better!
Before Rails was released, I’m quite certain that 999 out of 1,000 web developers would have told you that CRUD development was “mature” and “done.” If you wanted to create a new framework, most people would expect you to clone existing ideas.
But guess what? It wasn’t done, there was still value to be had doing the old thing in a new way. Likewise with music players and… must I make a list of 10,000 things where people thought the concept was mature and devoid of innovation, then someone found a new way to execute the existing concept, but their
design was better and they reinvented the whole thing without adding new features?
You can do better. And that’s the point. Not whether the party of the first part should have done better, or whether the party of the second part should have complained about whether the party of the first part actually did better or not. I don’t care who did what, where it was hosted, when the concept was invented, and why it has generated so much debate. And in a few days, neither will you.
But what will always matter is what you and I choose to do with our very limited time while we are here. Not what they choose to do or not do with their time and their talents.
I hope you will alway choose to strive to create something new, to never take it for granted that we can’t do better with even the most allegedly mundane problems to solve. Like chat line, CRUD frameworks, design patterns, programming languages, choosing our team mates, or mobile telephones.