Live data from Hacker News

Kill the settings, build opinionated software

flyosity.com

1–10 of 52 posts

Re: Kill the settings, build opinionated software

#2

  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.

Re: Kill the settings, build opinionated software

#3

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 wha…

Users work in an infinite number of different ways, and they way they worked before they use your app is probably forced by whatever crap they are currently using.

No matter what you do, you end up forcing a lot of people to learn to work the way the app wants them to. The best you can hope for is to build an app where, once it's explained, most users first go "Oh, ok, that makes sense." and then actually remember it later. If you're really good, the users will even say, "Wow! That's much better than the app I used before."

Re: Kill the settings, build opinionated software

#4

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 wha…

> Poor UI design (3 different places to set prefs?) is orthogonal to the issue of whether or not something should be configurable.

That's not how you use the word. Even if it were, I would still dispute your argument, because configuration clearly must happen through a user interface of some sort.

Re: Kill the settings, build opinionated software

#5

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 wha…

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.

Re: Kill the settings, build opinionated software

#6
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.

Re: Kill the settings, build opinionated software

#7
post #4

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 wha…

> Poor UI design (3 different places to set prefs?) is orthogonal to the issue of whether or not something should be configurable. That's not how you use the word. Even if it were, I would still dispute your argument, because configuration clearly must happen through a user interface of some sort.

This is a perfectly valid use of the word. In a purely technical sense, orthogonal means "intersecting or lying at right angles". But it can also mean "mutually independent, non-redundant, non-overlapping, or irrelevant" in the context of everyday conversation.

And you're missing the point. Obviously configuration must happen through a UI, but OP is saying that more preferences don't necessitate poor UI design, and I absolutely agree.

Re: Kill the settings, build opinionated software

#8
post #3

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 wha…

Users work in an infinite number of different ways, and they way they worked before they use your app is probably forced by whatever crap they are currently using. No matter what you do, you end up forcing a lot of people to learn to work the way the app wants them to. The best you can hope for is to build an app where, once it's explained, most users first go "Oh, ok, that makes sense." and then actually remember it…

This assumes a one-to-one relationship between pieces of software and workflows, which is absolutely incorrect. Just because you design a piece of software to be used in a certain workflow does not mean that that workflow will work for everyone; software which allows users to configure it to fit their individualized problems and processes is infinitely more valuable than software that tells the user "it's my way or the highway."

Re: Kill the settings, build opinionated software

#9
post #5

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 wha…

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…

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.

Re: Kill the settings, build opinionated software

#10
post #5

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 wha…

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…

  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.
Obviously it's not a black and white issue... at some point if you provide enough options, you've probably provided a turing complete DSL. And that's not what I'm advocating. I'm advocating making things configurable "within reason" where I'll freely concede that "within reason" is a subjective measure.

And you're right about the cost, so you have to weigh that cost against the potential lost sales from not providing a given option. And you never know for 100% sure, especially since people who don't buy your product don't typically call you up and say "Hey, I didn't buy your stuff and here's why." "Silent evidence" as it were. So it's still a bit of a judgment call. I just come down on the side of being a bit more accepting of options and configurable items, than what I think the parent article is advocating.

Post reply on HN