Simplicity vs. Choice
joelonsoftware.com
joelonsoftware.com
More advanced options are available in the logical place. Even those are carefully organized in a logical manner. When you select an option in the tools panel, you have a pretty good idea of what will happen.
If you really want to get crazy, though, you can open up about:config and be presented with a huge variety of options, many of which make no sense unless you know what you're doing. It kind of reminds me of the advanced options in Internet Exporer (with Carat Browsing and all), except that it's well-hidden from the average user. Those that need it know where to find it. Those that don't will never stumble on it. I think that setup avoids a lot of what Joel is talking about.
Someone who can step in and add merely add pagination to /deals.xml will already be doing wonders for us.
Simple software is good. Simple, stagnating software is frustrating because it has a good UI but sometimes the inability for 37s to even add the most basic features breaks a deal.
Most people don't like making decisions about computers, and just want the most basic solution that gets what they want done. Excel is a complicate piece of software, but that's because it's the only way to solve the problems of enough of the market to make it the standard. On the other hand, chat rooms, calendars, and file sharing are something that can work for almost everyone without a whole lot of options, as long as you're willing to conform your workflow to that of the tool. Since there are no "file sharing software experts" (your expertise is in creating the file; sharing it is just something you have to do afterward), software without opinions like the kind Joel is advocating will probably do poorly in this space.
Joel makes the point that making elegant (or powerful) software is very hard and time consuming, which I think is why so much good software does start out at the 37signals-y "do one thing really well" side of things. The trick is to keep building on that core, adding features that allow the user to do more without having to make more choices about it.
I agree with almost all of what he says, the one place he loses me is with the SUPER concise python and C++ code he shows (while (c++ = s++) to copy an array). It makes no sense - that's not elegant, that's just concise - it's very unreadable (at least to someone who has little C++ experience). Elegance and efficiency are correlated, but they aren't the same thing.
I'd also have to pause (or turn down) the lovely music I'm listening to, which is at the moment Inception.
When I visit a new product's page, and all they have to tell me about it is screencasts, I leave immediately.
Probably the problem with most technically inclined people is the inability to see the world through the eyes of the majority less technically inclined people. Then again I guess it depends on the target market and the product you're building.
Sort of reminds me of murphy's law. "Build a system that even a fool can use and only a fool will want to use it." :)
Fortunate that the world is chock-full of fools, then.