In June of 2003, Steve Jobs gave a small private presentation about the iTunes Music Store to some independent record label people. My favorite line of the day was when people kept raising their hand saying, “Does it do (x)?”, “Do you plan to add (y)?”. Finally Jobs said, “Wait wait – put your hands down. Listen: I know you have a thousand ideas for all the cool features iTunes could have. So do we. But we don’t want a thousand features. That would be ugly. Innovation is not about saying yes to everything. It’s about saying NO to all but the most crucial features.“
I’ve worked on dozens of projects that have essentially killed themselves with kindness: piling on feature after feature trying to be all things to all users. This rarely ends well.
After a few years in the trenches, I think many software developers begin to internalize the Just Say No philosophy. Both extremes are dangerous, but I think Yes To Everything has a greater potential to fail the entire project. If you’re going to err on either side, try to err on the side of simplicity. Keep a laser-like focus on doing a few things, and doing them exceptionally well.
It’s easy to dismiss Just Say No as a negative mindset, but I think it is a healthy and natural reaction to the observation that optimism is an occupational hazard of programming. It takes a lot more courage to say “no” than it does to nod along in the hopes of pleasing everyone.
The implicit lesson is not to literally say no to everything– but to weigh very carefully the things you are doing. For a very interesting case study, check out Google Blogosoped’s Illustrated Chronicles of the Portal Plague.