"Do it right" is more important than "Release Early"
daemonology.net
daemonology.net
The reason to plunge in and just start coding is that, as in writing, it helps you to have ideas. But since that initial hacking is mainly a way of having ideas, you should be ready to discard a lot of it. That is just what the Zenters did. They rapidly iterated through a bunch of versions, and that's why by Demo Day they had such cool features to wow the audience with.
In fact when I heard about the Google acquisition one of the first thing's I thought was: That make sense inasmuch as it just continues the trend of Google's apps being the goto place for learning interesting javascript hacks
Reddit's problems are more conceptual: not fixing the recommendation engine and not thinking through the game-theory of their system are the main reasons for Reddit succumbing to the dumbness of crowds so easily.
And the cryptography stuff was a bad example, I think. Seems to me with proper "design", the public keys algorithm would be a pluggable detail (I mean the actual mathematical algorithm, not the implementation of the whole cryptography system).
For those of us making web sites, we often won't know what "right" is until we put something in front of users.
The "... if we did it this way, we could get it out the door in a few weeks.." argument is only sound if what you get out the door is a damn good attempt to solve the core problem in the simplest/most effective way possible.
Vision is important, yes. Necessary, definitely. But there are subtle feedback loops between vision and action. Just standing in one place is often not the best way to exploit vision. Moving a few steps here and there aids depth perception, and helps vision work better. A lot of the problem in a startup is not technical, a problem to crank through with a single correct answer. The major problem is understanding what users want, the details of interface in the technical area you have chosen. The fastest way to figure that out often passes through a couple of troughs of some criticism and embarrassment.
I think this is a good conversation to have, because it helps us latecomers to unpack the wisdom in 'release early, release often.'
---
There's a subtle fallacy in juxtaposing the phrases 'do it right' and 'release early, release often'. 'Do it right' is a cipher: impossible to use, impossible to criticize. Of course I want to do it right. Who wouldn't? But how should I?
'Release early, release often' gives me advice on how to go about doing it right. We can argue about the value of that advice, but it is inarguably proactive. It takes a stand.
He also complains about reddit, but once again - they certainly "made something people wanted" even if it does/did have its share of bugs (clear text passwords...).
This is one of those things that needs to be balanced. You do have to have something that basically works, and doesn't crash all over the place, but sometimes adding new features or doing other things might be more important than making everything 100% bulletproof.
When you write components used by multiple groups, things get far more complicated; you have to provide some stubs so that other party's old code keeps working until they finish migration. Here, at least doing protocol right is essential. (Web app has advantage here, since you can just ride on existing protocols.)
As more and more people release software, it becomes harder and harder to attract users. The bar on the first release is going up.
this is valuable when the problem is not well-defined, or when solutions can't be evaluated until tested on actual users or under partly-unknown real-world conditions.
otherwise he's right, a problem should be studied carefully before any coding, for best efficiency