OnStartups

Disagreeing With 37Signals #2: Opinionated vs. Stubborn Software

Posted by Dharmesh Shah on May 4, 2006 6 Comments


This is the second in a series of articles taking a look at 37signals and more specifically, their book Getting Real  As I’ve said before, I mostly like what the 37signals folks have to say in the book and agree with a large part of it.  However, I didn’t think an “agreeing with 37signals” series of articles would be particularly useful.  In any case, if you haven’t read the book yet, I’d recommend it.  
 
In my last article, “Less Is Sometimes Less”, I made an attempt at explaining why the 37signals model of keeping things simple and including less features doesn’t make sense.
 
I didn’t do a particularly good job of explaining my position that time, but to summarize my point:  It’s important to pick your target market and focus.  On this, I think most people agree.  In the article, I talked about word processing software and why a journalist might need something different than a book author.  My point was that once you’ve picked a target market, it is important to deliver at least the minimum set of features that make sense for that market.  By not picking a market, you end up making one of two mistakes:  you build so little features that hardly anyone’s needs are satisfied, or you build too many features, because you’re trying to serve everyone.  In any case, that was that article.
 
This time around, I’d like to look at the concept of user preferences (which is discussed in a chapter in the book in the “Getting Real” book).  
 
We’ll start with a simple example and excerpt from the book:
 
From “Getting Real”:
 
Decide the little details so your customers don’t have to.  You’re faced with a tough decision:  how many messages do we display on each page?  Your first inclination may be to say, “Let’s just make it a preference where people can choose 25, 50, or 100.”  That’s the easy way out though.  Just make a decision.
 
Now, the point about taking care of the details for a customer is a good one.  Customers shouldn’t have to worry themselves over a ton of minutia that they don’t care about.  However, we have a term for this in the software industry.  They’re called defaults.  So, I would suggest (as 37signals does), that we should write opinionated software.  It should make some choices on its own and not burden the customer with these.  However, if the software makes these choices and doesn’t let us change them, its not just opinionated, its stubborn.  Asking the development team to make some of these choices (like showing 25 messages per page) seems a little misguided.  To suggest that this is a “best practice” is misleading.  
 
I also disagree with the fact that making certain things a “preference” is the easy way out.  It’s not (as they go on to explain later in the book).  Making intelligent choices and allowing for reasonable ways for customers to change the behavior of the software to fit them is most decidedly not the easy way out.  The easy way out is what 37signals did: 
 
”…That’s what we did in Basecamp.  The number of messages per page is 25.  On the overview page, the last 25 items are shown.  Messages are sorted in reverse chronological order.  The five most recent projects are shown in the dashboard.  There aren’t any options.  That’s just the way it is.”
 
This is what I would call stubborn software.  Sure, all of those choices are fine choices, as defaults.  But what if my monitor resolution allows me to see 100 messages? I’m now clicking more than I need to on an application that I might be using all day.  What if I want to sort messages by author?  Nope.  What if I only have six projects in my company and I’d prefer something them all in the dashboard.  Nope.  I have a hard time believing that this is all “better for the customer”.  Simplicity is a wonderful thing, but confusing simplicity with lack of capability is dangerous.  
 
A summary of my point:  Customers often prefer preferences.  They like to change their software to work the way they do.  Simplicity can often get their attention early on (if there are no better alternatives), but if it’s too simple, they’ll become frustrated over time.  Frustrated customers are not a good thing.  Strive to make your software opinionated, but not stubborn.