I recently read The Laws of Simplicity by John Maeda. He has a cool web site as well. In the Dynamics group there is a lot of passion around this subject.
John’s first rule – REDUCE: Simplicity through thoughtful reduction…strikes me as the most critical, when it comes to software design.
I remember going to for my first meeting with the technical team at Navision before the acquisition. Their entire presentation was around how little code they have in their application. Mind you this was before we had settled on price!!
On the UX side we have “tailored” the user experience to “roles” (in effect reducing the UX footprint per-role). On the runtime infrastructure side, we have added several Microsoft technologies from reporting to analysis to portal capabilities. In doing this we have first gotten rid of a bunch of code in our existing runtimes that had duplicative middleware (e.g. all our portal presentation layers are now native in Sharepoint, reporting in native in SQL SRS). It’s not just a simple case of substitution but actually a reduction in code/abstractions we have to maintain and also democratizing the access to our data/logic. When it comes to design time we have been religious about keeping our development meta-data driven. I play around a lot of with competitive products and their extensibility (add entities, add a couple of fields, relate these relationships, add some form, write some logic, expose the logic as a web service, create an RSS feed out of it, etc). Its mind boggling how hard the development environments can get to do something like the above list. The meta-data driven modeling tools we have are key to how we achieve & maintain simplicity (key driver for our partner productivity) for the most complex of customization tasks , while still adding new runtime capability (workflow, process, role tailored ux).
“Making complex things simple” is the slogan that resonates in our engineering hallways.