Allan Odgaard’s Textmate Blog lead me to the linked article:
If you’re doing top-down design, you produce a specification that stops at some level of granularity. And you always risk discovering, come implementation time, that the module or class that was the lowest level of your specification hides untold worlds of complexity that will take as much development effort as you’d budgeted for the rest of the project combined. The only way to avoid that is to have your design go all the way down to specifying individual lines of code, in which case you aren’t designing at all, you’re just programming.
It’s true, software is hard. Does that make me sad? No, actually I delight in the challenge!


Could the iPad be the tipping point?
Update: To get where I’m coming from here I highly recommend that you read the following articles from Joel on Software: Strategy Letter II: Chicken and Egg Problems and Strategy Letter III: Let Me Go Back!.
The tipping point, Joel on Software:
Whilst reading this, a crazy thought popped into my head: could the release of the new iPad be the tipping point for Apple?
What are the most commonly cited barriers to users adopting Apple products?
I could probably think of some other reasons, if it weren’t so late at night.
But I think the final piece of the puzzle, wonderfully accounted by Fraser Speirs (in his article “Future Shock”) and many others, is the great pent-up frustration with the fact that computers still don’t quite seem to just work. And if you’ve only used Windows, they never have.
This is a “chicken and egg” scenario (see linked article), and Apple have managed to remove almost all of the barriers to adoption. The dissolving of the usability barrier could mark their transition from 20% of the market to 80%.
Just maybe.