> When it comes to software design, clutter isn't the worst thing software can do. Hiding things is. So, to paraphrase JWZ: "You have a problem with clutter, so you hide it. Now you have two problems." Thus, the solution to clutter isn't to hide the functionality because that creates more problems not less. The solution to clutter is to have fewer functions.
That's really good. Some reading this might be confused by fewer functions as meaning dumbing down and restricting the user, so let me expand that. That's not what it is. Fewer functions means making things simpler to the point that they are generic enough to have much more functionality, but with fewer explicit functions. For example, the unix command line is pretty simple to look it, but unlimited in what you can do. Type whatever you like there. The pipe thing lets you stitch things together in combination.
The solution to clutter isn't to hide functionality. It's to have your software do /less things/. If you need it to do more things, make those few things your software does a flexible set of tools that can be combined in novel ways.
Update: (I got downvoted so I thought I'd modify the post a bit, hopefully it's better?)
in any case, when it comes to software design, clutter isn't the worst thing software can do. Hiding things is, however, pretty close to the worst thing you can do. At least, without a consistent and obvious method of discovering the hidden things.