Releasing an update to a software system requires balancing a number of factors: budget, time window, people and, of course, the expectations of your clients and community. How do you balance all of the different demands? How do you move forward?
I am assuming that you have client involvement and they help you set priorities on the things that matter to them. They have requested features and capabilities and understand where the users are coming from. The not-so-easy part is the backlog of items that are sitting there, staring at you, not blinking ...
My approach has been to select items from several different aspects of the system, much as you might plan a meal. I presume that all of your work has been itemized into tasks or issues; it doesn’t matter if you are using a trouble tracking system or a project scheduler. You have a backlog of items and need to get the mound of items reduced in size.
My approach has been to select items from several different aspects of the system, much as you might plan a meal. I presume that all of your work has been itemized into tasks or issues; it doesn’t matter if you are using a trouble tracking system or a project scheduler. You have a backlog of items and need to get the mound of items reduced in size.
Foundation - The Bricks and Mortar
The foundation of your system is the pieces that none of your clients really see, the operating system, the database management system, middleware, etc. You might want to bring in a new library or use a new set of table indexes. They may be part of a planned upgrade cycle or necessary for a function to be delivered down the road. These kinds of nuts and bolts are the things that your clients will say, “Why are you bothering me about that?”Functions and Features
Functions are the operations and mechanisms your software carries out behind the scenes. Features are the benefits the system provides, the things that customers refer to when they think about your system. Functions and features blur together, but I tend to think of features as consisting of several functions wired together to provide a specific benefit to the customer. A function can be used by several different features. A search function is the mechanism for using search criteria to return a set of results. The search feature is looking up a customer to schedule a sales call.Facade - The Face You Put On Things
The facade is primarily the user interface of the system. It includes the color schemes, screen work flows, form design and report layouts. You can also include help text here. This aspect is often described as the cosmetics of the system.
It can also include using radio buttons versus pop-up menu, making a label have the same case on every screen that uses that label, tool tip consistency and punctuation.
Fixes - The Bugs
Bugs and issues in software systems have to be dealt with. During maintenance mode, it can be tempting to only include bug fixes. Except for high profile or urgent fixes, such releases won’t engage the interest of people using the system. If you have clients testing the system, it always helps to dangle some enhancements in front of them.
Some Other F's
There are some other F's that you can add in, but they are more variations on a theme.
Faster: We always want the system to go faster but first we want it to go right. Once you gain a bit of breathing space, speeding up the system brings lots of benefits. I tend to roll Faster aspects into Foundation, Function or Facade, the places were perceived slowness appear most.
Free: Everybody likes free. Some issues can be dealt with "for free" because they come along as part of the package. Highlighting free stuff for your clients provides them with the sense that you are looking out for value.
Mixing the Release Items
I advocate taking a mix of items from each aspect. If you have a number of components that are visible to the client, it is also useful to include issues for those components.
I have been in development projects where there was a lot of pressure from on high to do "bug fix" only releases, and then "feature releases", or just focus on features leaving the bugs outstanding. They never seemed to feel right; someone always got left out and some of the piles kept getting bigger and bigger.
A balanced approach seems to provide something for everyone. Everybody wins.