

Kill the settings, build opinionated software - adamhowell
http://flyosity.com/iphone/kill-the-settings-build-opinionated-software.php

======
mindcrime

      Some people argue software should be agnostic. They say
      it's arrogant for developers to limit features or ignore 
      feature requests. They say software should always be as 
      flexible as possible.
    
    
      We think that's bullshit. The best software has a vision. 
      The best software takes sides. When someone uses 
      software, they're not just looking for features, they're 
      looking for an approach. They're looking for a vision. 
      Decide what your vision is and run with it.
    

Well, I, in turn, think that's bullshit. IMO, the best software conforms to
the way the user works, rather than trying to force the user to work in a way
that's unnatural to them.

The arguments against a confusing preferences pane and the arguments for
sensible defaults in no way contradict the notion of making software than is
flexible enough for power users. Poor UI design (3 different places to set
prefs?) is orthogonal to the issue of whether or not something should be
configurable.

Power Users don't matter? Maybe for certain classes of consumer applications
that don't face a steep barrier to adoption in the first place. But for some
apps, it's the power users who are the early adopters, who first begin using
and evangelizing for the software and without whom it would never catch on in
the first place. Do you really want to piss those folks off?

Make the damn "advanced preferences" pane more or less hidden (ala,
about:config) but document the shit out of it and make sure it's at least
there for the people who _do_ care.

~~~
stevenp
Every piece of code or bit of functionality you write has a cost of ownership
to your business.

Every preference requires more testing to make sure that other things don't
break as a result of a user changing an obscure setting.

If you don't mind having to write test cases for thousands of permutations of
possible settings, go ahead and let your customer change everything. A simple
product, however, is far easier to maintain.

~~~
dandelany
Obviously, the simpler the product is, the easier it is to maintain. But as
the product gets simpler and simpler, it becomes valuable to an ever-smaller
pool of users, all of whom have differing needs. Obviously it's not as simple
as "just build it simple." There's a delicate equilibrium that must be
maintained.

~~~
ericd
While they're often linked, it's important to remember the distinction between
"Simple Codebase" and "Simple to Use". The latter is much more important in
most cases than the first, and sometimes it can take very complex code to make
something as simple as possible for the user.

The simpler something to use, the bigger the pool. The fewer the applicable
use cases, the smaller the pool.

------
ComputerGuru
Here's a little anecdote: Years and years ago, in a moment of free time, I
added a bunch of silly settings to my software (EasyBCD, now with 7-10MM+
users). It had almost no users then, and I just added these options to "fill
up" the empty preferences dialog. A year or two later, I removed a couple, and
the complaints could be heard around the world.

The features, you ask? They really are ridiculous: Save the window size on
exit. Set the default size of the UI text. Set the default font of the UI
text. Open in "advanced mode" by default. Open to a particular page.

None of these features really saves a user more than a click. Some of them are
purely aesthetic. But their popularity - which I greatly underestimated - was
incredible. Till now, people file bugs when their favorite "silly preference"
ends up resulting in odd behavior. And they _always_ catch on immediately when
I change something there.

Sure, it's hard work (read: boring, time-consuming, donkey work) to maintain
these options. But I think they're part of the reason EasyBCD has succeeded.

(Note: EasyBCD is a software most people install once and never use again.
It's definitely not something you would use on a daily basis. But people LOVE
power and control, even if it's just an illusion.)

~~~
Splines
Egads, you're right. That is the sort of software you wouldn't use every day.

Personally, I find it surprising that customers would complain about you
removing "trivial" options. Do you think you would lose customers (did they
threaten to not use your product)? Would paying for your product change their
opinion?

~~~
ComputerGuru
No, I don't think I'd actually lose anyone. It's hands-down the best tool for
the job, and the only competition is from a product that I originally wrote as
a freeware in cooperation with another site, was kicked off the project, and
was subsequently turned into payware and has stagnated over the years. I could
easily sell this product for 5 or 10 a pop and still have a decent userbase,
but choose not to for not moral so much as karmic reasons.

But the thing about these features is.. they generate consumer goodwill. I
don't know how else to explain it, but implementing stuff like this somehow
makes geeks and grandmas alike more willing to endorse it. From the feedback
that I've gotten, they feel it "speaks to them" and doesn't get in the way.

But what I've learned, regardless of the reason, keep your users happy and
they'll recommend your product. They'll stick with you, and they'll _remember_
you.

Case in point: just yesterday, I added the final feature for the 2.0 milestone
which is a blue border around the button used to select the current page when
it has focus. Trivial feature. Except _instantly_ a user realizes that if they
set an option to start EasyBCD up with a particular page, the blue border will
remain along the default button. And they bug it, and when I say "it's really
not worth fussing over" they insist:
<http://neosmart.net/forums/showthread.php?t=6506>

That doesn't of course mean that I let the plethora of strongly-opinionated
users take over the development of the software. I generally refuse most
features. But the subtle enhancements they recommend, that's what I follow.
Because it's just a bit more work for me, but it's makes the software go viral
without even my trying.

One last thing: I'm absolutely against locking down features. I give users
enough rope to hang themselves, but enough guiderails and warning messages
that they don't do so blithely. And that opens the door to experimentation, to
videos on YouTube where people use the software to do things I didn't think
were possible and certainly never intended. And it keeps your users content
with you, your software, and any future products you'll ever ship in the
future.

tl;dr Features make EasyBCD's users happy. It's minor stuff, they would never
abandon ship if it weren't there, but it makes them happy and it makes EasyBCD
come to mind whenever someone needs a product that fits the bill.

------
martythemaniak
This article is little more than a generic rehash of popular memes. Let's
break it down:

\- 37Signals is great, they do simple! \- anecdote \- Apple is great, they do
simple!

I hope whatever software this guy does has less opinion and more substance.

~~~
krakensden
Indeed, check out his dig at multitasking on Android and praise of iOS
multitasking, even though Apple's implementation seems to be essentially
identical.

~~~
flyosity
It's not identical, Android lets you do a lot more in the background than iOS
4.0 does. That's the crux of my part about battery life... because it lets
apps do anything in the background it will drain your battery. Apple didn't
want to give developers that ability because they were concerned about regular
users' iPhone batteries draining.

------
makecheck
I don't think it's black and white; you can have an opinionated, simplified
front end, and a back end that is wide open. The back-end makes some things
easier, such as testing, and helping admins deploy to 100+ users.

A flexible back-end can even be used to create an opinionated front-end.
Consider a "factory defaults" file; preset any behavior, whether or not it has
a checkbox. Try every combination, and convince yourself that one is better.
Even with these decisions made up front, the interface is there to let other
people disagree with you.

Mac OS X has a nice balance, because the built-in "defaults" command line
program can tweak any setting that would also be available in the
application's code. Just because a program is a GUI, doesn't mean that it
should rely exclusively on GUI elements for configuration.

------
chipsy
At the farthest reaches of powerful software, you will always end up with a
programming language and libraries.

At the other extreme, you have one thing that does exactly one task and as
such can have a nearly "invisible" interface.

My suspicion is that it's actually kind of rare to need the areas in between -
that apps like spreadsheets and photo editing are unusual, and if you
_suspect_ that you have an app that could be developed in such a broad, deep,
configurable way, your best bet is to start building in a library form and
construct prototype one-shots - possibly even making them your MVP - attacking
various different problems to see if you're right, before you try to make a
unified monster UI for the perceived need.

------
Qz
What if my opinion is that software should have _more_ settings? I am very
opinionated about that.

~~~
jamesbritt
Indeed, _all_ software is opinionated. You can't write anything remotely non-
trivial without making decisions about what to do, where things go, what to
add, what to leave out.

The key, though, is to do it willfully and deliberately. Realize that the end
result will come with a point of view, and craft it on purpose.

------
hughw
Probably explains why Basecamp didn't click for us.

------
derefr
To put that in a less confrontational way: instead of designing features, and
then providing options to maximize your audience, first pick an audience, then
make software that will work perfectly for them without the need for options.
Result: a smaller, more dedicated audience, versus an audience of "everyone"
and a product that is as well-suited to an individual task as Microsoft
Office.

------
SoftwareMaven
I always cringe when I hear "don't listen to your customers." That is
absolutely the wrong behavior. If you don't listen to the people who are going
to buy your product, you won't build a product that solves a real problem.

I listen to my stakeholders (potential users, potential buyers, current users,
etc), but I don't necessarily do what they say. Most people try to give you a
solution to their problem, you need to dig through their "solution" to find
their actual "problem", then design the best solution (and like all design, it
is best not when nothing else can be added to it, but rather when nothing else
can be taken away).

Oh, and I completely agree that software should be opinionated. People are
paying you to solve their problem, don't get lazy and push responsibility back
on them!

~~~
rimantas
"don't listen to your customers" means doing exactly the way you describe it
in the second paragraph. It does not mean "don't pay attention to what your
customers are doing".

~~~
SoftwareMaven
Except I've had conversations where people don't do that. I've also seen blogs
that say "build what you want, if it's great it will sell." That is BS.

It is very similar to the "Fail Fast" mantra. Yes, if you apply it correctly,
you will build a better startup. If you apply it naively, you will do just
that: fail quickly.

"Don't listen to your customers" seems to resonate with engineers in a weird
way. I think it is a combination of ego and anti-social behavior.

------
Tichy
Minor annoyance, but what's the bullshit sideshot against Android
multitasking? Are we to believe now that only Apple get's multitasking right?
"Apple invented multitasking"? It works fine on my N1. I think Steve didn't
even say what makes multitasking on the iPhone so special.

That's how Apple marketing works, and frankly, it makes me dislike them
despite of the neat design of their products. If their products are so great,
why do they even need to work that kind of marketing?

------
adamilardi
Apple doesn't listen to users and they're the most successful technology
company in the world. They have a fearless leader who's not afraid to piss
people off... Just like Zuckerberg.... Except we all complain about him. I
suppose he needed the cult like following before you start to piss people off.
That is the key.

