One challenge to software developers is to keep software simple. As developers, we are both comfortable with complexity (just look at the Visual Studio interface) and have a tendency to create applications that are complex. The thing is that the end users really just want to get their jobs done. They want software that they don't have to think about. Software that is obvious and easy to use. They want one click not 5, and short-cut keys are even better. Simple is better.
When a user is given software that helps them get their job done, they will use it. If it's also simple and easy to use, they will be happy. And a happy customer is the simplest way to get more customers.
So - beyond the happy user, why should we want to build simple software? The world is complex and does not always follow simple cut and dry rules. Shouldn't our software handle all the possible corner cases? If the complexity is a necessary part of the business process, it will need to be addressed in the software. But we want to avoid unnecessary functions that are not business critical i.e. an RSS reader a parcel management system.
In the end, the level of simplification you can achieve in your application does come down to negotiation with your client, but there are some compelling reasons to avoid complexity. First, as noted above, simple software is easier to use and more likely to be used. This is a big win right out of the gate, especially if it is a new technology deployment. If it's really easy to use, the organization may also see significant productivity gains - which is a huge win.
Additional reading on "Keeping it simple"
Conversation with Ward Cunningham creator of "wiki" - quote: "Simplicity is the shortest path to a solution"
Agile and Extreme Programming, which is focuses on skipping "big design up front" and writing the simplest thing that can possibly work, and adding in complexity only when it is absolutely necessary.
37Signals.com - a web company focused on simple solutions. They build "elegant thoughtful products that do exactly what you want, and nothing you don't". They have written a free e-book about their development philosophy called "Getting Real"
Joel Spolsky (JoelOnSoftware.com) also has some thoughts on "Simple"
Steve McConnell - author of Code Complete in addition to a number of other great books on software development wrote this article on simplicity as a best practice back in 1996
I'm Dave and this is my blog. I'm usually writing about .NET Software Development, ArcGIS, or Agile Practices, but other stuff does creep in from time to time. I hope you find something of use, and feel free to contact me if you have any questions. You can also check out my profile on LinkedIn
dojo.DTSAgile.com is our technology preview / demo site. As I and my team cook up cool things we post them here.
ArcDeveloper.net is a site that hosts a set of open source projects related to ArcGIS. This includes Tile Cache for .NET (TC4N) and Feature Server for .NET (FS4N). Come over and check it out!
Assembla is a free service that provides Subversion source control, wikis and work Tracking. The ArcDeveloper project is run from here. It rocks. Check them out today.
Agilistas is a LinkedIn group focused on discussing and promoting Agile practices. Everyone is welcome to join in the conversation as we evolve the process of creating software to make it more enjoyable for all involved.