Joel talks about how simplicity can be viewed a few different ways. I do agree that for many reasons software sells because of features and that really is the bottom line in the industry. Unfortunately if you have 100’s of features and the software is just plain hard to use people might buy it but they most likely won’t upgrade and continue to support it. If you happen to have a novel product then you have time to make it easier to use because people will buy it in the first round. A few days ago I wrote about the Logitech Harmony remote I purchased. This remote to me is extremely simple yet contains many features. With one or two clicks I can setup my entire entertainment system to do X. I can also control every single device down to the last function – feature rich. After reading Joel’s posting and then realizing the remote is a similar “great” product fit to his description I started thinking about other aspects of software development where this is greatly needed.
One being Automation – this is a place where testing a product should not be time consuming to anyone on the development staff – whether they are a manager, tester, developer, etc. Anyone should be able to run the regression suite on the product. Why? Because if I am writing a piece of code I should be able to test that code in the context of the automation with little work. If I am a manager and produced a crash (which only happens on my machine) I should be able to run that suite against my installed binaries – on my machine. If I am a tester I should be able to say – just run test X and you will see the crash.
I still think today that automation, unit testing and build verification testing are all done in closed boxes. Developers can only run their unit tests, testers can only run their automation, and if you are lucky the build room runs the build verification tests. I have always preached that the automation tools developed in house need to be like products themselves and the customers are the entire company. When you approach software testing – and specifically automation – like this, you will see huge benefits in the very short term. Testers will easily be able to communicate their bugs and developers will be able to run the tools prior to delivering their code.
Second being collaboration. Sametime 7.5 is an amazing product. Grady talks about this in a recent post and products like Sametime 7.5 are leading the way. Many products do the individual features of Sametime very well but not many integrate them so nicely – and also do not integrate into an existing infrastructure like Notes/Domino/Sametime. One of the best features I use very frequently is the Call button when chatting with someone. If I am not in a meeting and the “chatting” gets a little too “chatty” I simply click the button above the chat window to call them. This is voice over IP – and amazingly enough the quality is actually better than my Vonage connection. Once again, simplicity on the covers but feature rich.