I like Graham's points about overconfidence, peer groups and (judicious amounts of) ignorance, all of which he champions quite strongly. But drilling deeper on "rate of change" is an undervalued element that deserves a closer look.
The best innovators are really good at taking Version 1.0 and figuring out what rework will turn it into a better 2.0, and then 2.1, 2.2, 3.0, etc. This is an identifiable skill! It can be cultivated. Once you've got it, the failings of Version 1.0 do not ruin your self-esteem. You just get to work on fixing them. And not enough people think about this systematically.
One of my favorite museum stops of all time was the British Library, where a glass case held Paul McCartney's first draft of "Yesterday." You could see, cross-out by cross-out, how a somewhat awkward ballad got turned into a pop classic.
I'll submit that almost everything that looks like genius from a distance is a lot of step-by-step craft when viewed more closely. I did some consulting at Facebook in 2008 and it was quite amazing seeing how rapidly and incessantly Team Zuckerberg was not just adding features, but also rejiggering the way the feed worked; the layout, the everything.
Once you develop the ability to iterate your way to greatness, or at least to have a fighting chance of doing so, you're much more willing to crank out dodgy Version 1.0s and see what you (and your allies) can turn them into.
> Once you develop the ability to iterate your way to greatness, or at least to have a fighting chance of doing so, you're much more willing to crank out dodgy Version 1.0s and see what you (and your allies) can turn them into.
Yeah...but the other side of that depends on what the definition of “dodgy” is.
For example, say we have a server-based app. If the DB schema is badly-designed (usually overcomplicated), then we are truly pooched, as we’ll start to figure that out after we have a few thousand users.
If the DB design is OK, even if it is primitive and simple, then we can have naive, problematic code, yet plenty of room to grow.
I’ve learned to design for the unknown. It’s really paid off, for me, but YMMV.
If course everything is tradeoffs. Thinking in a binary known/unknown is not helpful. I prefer probabilities wherever possible.
Choosing your bias depends on your field. In a safety critical field, you rather want to be safe than sorry. In web development, move fast and break things. This isn't hard though. You usually know which side you prefer when in doubt.
The best innovators are really good at taking Version 1.0 and figuring out what rework will turn it into a better 2.0, and then 2.1, 2.2, 3.0, etc. This is an identifiable skill! It can be cultivated. Once you've got it, the failings of Version 1.0 do not ruin your self-esteem. You just get to work on fixing them. And not enough people think about this systematically.
One of my favorite museum stops of all time was the British Library, where a glass case held Paul McCartney's first draft of "Yesterday." You could see, cross-out by cross-out, how a somewhat awkward ballad got turned into a pop classic.
I'll submit that almost everything that looks like genius from a distance is a lot of step-by-step craft when viewed more closely. I did some consulting at Facebook in 2008 and it was quite amazing seeing how rapidly and incessantly Team Zuckerberg was not just adding features, but also rejiggering the way the feed worked; the layout, the everything.
Once you develop the ability to iterate your way to greatness, or at least to have a fighting chance of doing so, you're much more willing to crank out dodgy Version 1.0s and see what you (and your allies) can turn them into.