Features are never complete! So stop tracking them like tasks!
Posted by robkraft on January 10, 2011
Have you ever participated on projects in which you implement partial features? I do, all the time. I understand why we do this:
- The feature is good enough for shipping and it is more valuable to work on other features rather than complete this one
- We overestimated the work involved in this feature and are going to release just a partial feature to meet the most immediate needs
- We lost resources during the sprint so we could only complete part of it.
- The product owner changed their mind about certain aspects of the feature.
The thing that bothers me about this is that we cannot mark the feature done. The feature lingers in the backlog partially completed; or we mark the feature completed and spawn a new feature to include the aspects of the feature left out of our original desire.
But today, a revelation! Features are never done! Just as a product continues forever and is never 100% complete, every feature continues for ever and is never 100% complete. We should not expect a feature to be “complete”. So we should stop using tracking systems to track features to completion and instead track features the way we manage products.
A feature tracking system needs to be able to support a hierarchy of features with infinite depth. We need to be able to track the status of each feature and subfeature of feature to know when it was released, the status of testing, documentation, coding, and etc.
In addition to our feature tracking system, we need a separate list of tasks related to the feature. Tasks are all the actions that need to be performed to move the feature from concept to realization. The product manager should manage the features, the development team manages their tasks. Features are aspects of the software that you always want to keep track of like, “This is our reporting feature that saves to PDF or prints. We added it in version 7.0 of the software. It was coded by Joe and Jeff and was tested by Susan on 2/27/2009.” Tasks, are the list of actions used to implement the feature and you usually can discard the list of tasks used to move the feature from idea to implementation. The tasks for implementing a feature may include items like:
- Add columns to the database table
- Modify these 3 stored procedures
- Verify that the SQL Server stored procedure converted to Oracle correctly
- Confirm the sort order is correct
- Write the unit tests for the feature
- Write the code for the feature
- Write the programmer documentation for the feature
- Write the user documentation for the feature
- Test the feature
Notice that Projects and Tasks are similar. Both have start dates and end dates. Also notice that Products and Features are similar. They do not have completion dates.
A lot of the challenge in developing good software is based on your ability to manage your to do list effectively. One step in achieving that goal is to maintain a clear separation between tasks and features. You may need two separate systems to track each well; but ideally you can find some software that tracks both.