Wednesday, May 28, 2008
Feature Focus or Bug Focus
If ever there were an acid test for maturity in Software Development perhaps none is better than Features or Bugs. What is most important implementing a new feature or removing existing bugs?
If a developer is focused on features then they have a Feature Focus. Bug Focused developers give precedence to fixing bugs first.
Which is better? Fixing bugs. Which do new developers prefer? Implementing new features. Only over time do developers realize that as their bugs accumulate, their ability to implement new features becomes ever more difficult. One day they will experience the truly awful feeling when a newly revealed bug shows that a recently added feature will have to be completely reworked.
So what do you do if you have a crew of Feature Focused developers? This is a common problem. One solution is to use QA to give them an external souce of Bug Focus. To do this, you must be prepared to step in and support QA. At the same time you must dampen the praise given for new features. This is also simply done by insisting that only releases which have passed QA will be demonstrated.
Monday, May 26, 2008
The Four Faces of a Software Application
Unless it is notepad or you are not going to share your software with anyone you will notice four distinct collection of scenarios for your application; Installation, Configuration, Administration and User.
Installation is the easiest to overlook because every well maintained program makes installation a breeze. An ease which masks the difficulty of the problem. Today's applications are rapidly developed in days, sometimes just hours and for the talented perhaps in just minutes. The rich feature set that is immediately available comes from leveraging powerful and extensive frameworks. Getting those frameworks on the target machine amounts to an install within an install. Which brings up a hard unalterable rule of Software Development. "Create the Install program before you have anything to install." Less mature developers and nontechnical managers will not understand this focus on the install first. If you have good QA they will save a company from itself by insisting on an installers.
After an application is installed it will be configured to its environment. Initially an ever growing amount of configuration will live in the installer. Time will reveal that this bloats the installer and turns testing the installer into a nightmarish complex exercise. Eventually, separating the installation from configuration is required. Where those configuration components live then becomes a delicate trade off. If you can rely upon your users, you may be able to leverage a large amount of the System OS configuration components. If not, you will need to wrap them and expose them in your administrative interfaces.
Skipping over Administrative for a moment, once the application is installed and configured it should run without any care and feeding. Thus all of the things related to the Install, Configuration and Administration are merely noise to the end user. The user interface should focuses only on how to get work done on a day to day basis.
There should be a separate interface for Administration which is now defined as those exception or unusual cases of interacting with the program. Troubleshooting or diagnosing failures is also included here. The Administrative interfaces should anticipate that there will be failures and provide some means of working within the app to report them at the very least.