Good Product Design Is Not So Simple
from the nice-and-easy dept
Whether you’re talking web apps or mp3 players, simplicity of design is all the rage right now. Many are predicting the demise of bulky software projects, in favor of lighter alternatives, with many extraneous features removed. However, software designer Joel Spolsky has a good argument why this simplistic view of simplicity may be misguided. For one thing, while it may be true that the majority of users only use a small number of a product’s features, those features aren’t the same for everyone. So stripping a product down to only its core features is a foolish strategy. Another important point is that people confuse simplicity of design with a clean design. The iPod may be seen as having a simple design, but it’s actually rather feature-ladened, and new generations of the iPod continue to see more features added. What it is is clean and easy to use. The same goes for many popular Web 2.0 sites, which routinely add new features and services. For the most part, Microsoft has so far dismissed the threat of web-based apps, saying in essence what Spolsky is saying, that people have tried things like stripped down word processors for years, and that it’s gone nowhere. That may be true, but the main appeal of web-based apps won’t be their lack of features, but rather some very important features, such as their being on the web, and their being conducive to collaboration. Design mantras may sound good, but ultimately what’s needed are good products with well thought out functionality.
Comments on “Good Product Design Is Not So Simple”
no single product can satisfy every single user
that is true.
and granted, i may not use tables all the time in a word document, the other night, i had to show my mom how to use them. if not, she’d have to calculate the spacing between columns, or try and set the tabs (if they didn’t strip that out)
so, sometimes they can be annoyin (auto letter format by clippy anyone?) but they are there for a reason. just learn how to “avoid” until needed
What I think needs to happen is the slimmed down version of things, but, allow its users to install extensions.
A decent example is Firefox. It does have a ton of features that I probably don’t and won’t use but it does allow for the possibility for me to extend it to a point that I find useful. For example I’ve installed a spell checking extension and I love it. And I love Firefox for allowing me to do that.
Anyway, thats what I think should happen to these apps…
Two Ways To Program...
There are only two ways to program. Yes, just two! You can program so simply that there are obviously no errors, or program so complicated that the errors are not obvious. The simplest solution is often the best one. Simplicity of design is not a rage it is what happens when more complicated solutions reveal flaws over time. I will point to Windows as an example. Anyone that thinks that software “DEVELOPMENT” where features are added and coded a little at a time is the wrong approach is misguided. Complication never helps to resolve an issue. Enough layers of abstraction can solve almost any problem. Creating a simple system with stripped down features and adding them a little at a time to ensure their reliability is not only a solid software design approach but also it is good for business. For the business man this means the ability to focus on the 20% of the tasks performed 80% of the time producing the greatest overall satisfaction for a product and leaving the more advanced and seldom used features to the more advanced users to complain about when they do not work as expected in all ocassions. Besides the fact that good software “DEVELOPERS” knows that creating a great system is a process much like growing salt crystals. One little layer of functionality added at a time in order to create a very solid system. I don’t think simplicity of design is confused. I think anyone touting complex software development practices is. A simple design often appears very clean due to the simplicity in its logic. We often call people who come up with simple solutions to complex tasks “genius”.
Re: Two Ways To Program...
I agree. Frustration in software comes when you trip into its mire of complexity and nothing works or makes sense. If there is something that is so complex that it defies explanation, then not only will your users fail to understand it, but your programmers will fail to implement it correctly.
Here is my criterion for deciding whether the unsteady complexity is worth it: if it is sufficiently compartmentalized that the complexity does not negatively and unexpectedly interact with the parts that are supposed to remain simple, then it is acceptable. If you allow complex features to infest your software and destroy the simple things then you have nothing left but a nest of evil.
There is a business reason to disagree with me though. Can you spot it? Users will never even start using your product if it lacks features. If it has features but they descend into mindboggling complexity upon detailed inspection, then at least you have users.
Re: Two Ways To Program...
Besides the fact that good software “DEVELOPERS” knows that creating a great system is a process much like growing salt crystals. One little layer of functionality added at a time in order to create a very solid system
that was beautiful. so well put
Is it actually simplicity
people want? Or, is it actually intelligently organized and designed? I would submit that this idea of stripped down apps is actually about well organized and logical design, and the willingness to look at old things with fresh eyes.
An app, car, book, whatever can be complex if its disorganized and fails to follow a clear sensible pattern…Things only get worse when things are added in the next version.
Any Microsoft office app is an appropriate example- so much stuff packed together horribly with no real changes to its organization for years. That is what less-than-power-users find mystifying and thus call it -too complex-
I would love to see a really stripped down version of Office with just core functionality and then add tools and features in blocks related to specific tasks.
What are the odds that my admin is going to be writing Visual Basic macros anytime soon?
Simplicity needs flexibility
Without flexibility, devices and software may become frustrating in the same way that too many options exposed (or worst, required).
Everyday tasks must be simple and a few clicks (or pushes) away, but there must be an option for that once-a-month-spacial-need.
Firefox and Opera are excelent examples of great software.
RE: Two Ways To Program...
I agree with ‘if it is sufficiently compartmentalized that the complexity does not negatively and unexpectedly interact with the parts that are supposed to remain simple, then it is acceptable’. How eloquently put. I do believe that very advanced features need to be available but…
if( complicated )
// Do complicated task here
They should be added only as needed. For example, in Microsoft Office, Almost 99% of people using a word processor must be able to properly edit text but how many of them need to write macros for word? Now lets say that macros are very complicated to implement as a programmer and understand as a user. Could we make the core word processing functionality darn near perfect and add the macro functionality as a plug-in that can be removed and updated? So that we don’t have to get the perfect solution every time the first time. Obviously no man, woman, or group thus far has made a perfect piece of software. And don’t forget the old saying:
“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs and the Universe trying to produce bigger and better idiots. So far, the Universe is winning” – Rich Cook
If the software is not built with ideal that there are still idiots out there that can’t set the clocks on the dashboard of their car. How do we expect users to grasp a macro. As if they even know what one is? However, a plugin should be provided that can provide this functionality should be included until the time that the software is going to assimilate the functionality and make it a core part.
Which brings me to the reason that we are here… Good Product Design Is Not So Simple is true but is masking the ultimate issue here.
Most people do not know what they are doing lucidly enough to come up with a simple solution. That often takes time and MONEY.
Money is the reason we are here.
Actually, I think MS Office 2007 has nailed the interface for office apps. Clean design, and most-used features are presented simply on the first screen. They’ve done away with clumsy and confusing toolbars, opting for multiple tabs with related options.
I do agree that extensions should be the way to go, though, although it might be a bit complex in the long run. Imagine, for example, if you had to have a “footnotes” module added on to your Office in order to manage the footnotes and endnotes in a document – what would happen if you sent that document to someone who didn’t have that module installed? The program should be able to read everything every module wrote, and that just sounds like a programmer’s nightmare.
Achieving the right balance between usability and functionality is one of the hardest tasks facing UI and program developers over the next few years.
Re: 2 ways to program
What complete b.s.
Anytime someone tells me there’s only one way, or worse yet, only two ways, and one’s right, and one’s wrong, or whatever, you’re still whining DO IT MY WAY DO IT MY WAY.
There are myriad ways to strike a balance between two absolutes, or to find a new absolute to champion; there are multiple ideologies to follow that can lead to solutions to any problem.
F-tards like you who whine DO IT MY WAY DO IT MY WAY and championing simplicity over all else are ignoring the obvious.
Your way is not the right way.
My way is not the right way.
The customer’s (user’s) way is not the right way, because often the customer (user) has no idea what the heck the right way even looks like.
The right way is to analyze the user’s needs, and to strike the necessary balances between complexity and simplicity, to find the right amount of user interface, behind-the-scenes automation or other components that need implemented, engineered or otherwise delivered.
Your crud referencing the 80-20 rule and putting your own ideology on a pedestal while ignoring user needs sounds like every other corporate idiot who proclaimed himself the new messiah and then wondered why he got metaphorically lynched by the mob of user disapproval as people started using “something better” or “anything but this junk”. I want to barf in empathy when I read tripe vomited out of wannabee corporate mouthpieces.
Or to summarize, I respectfully and completely disagree with your moron opinion.