Pruning Issues and the Idle Bin
Separating the essential tasks from the nice-to-haves is a normal part of project management, but improper managing of these may lead to an overflow.
Join the DZone community and get the full member experience.
Join For FreePart of the job of a Product Owner is to pay attention to the list of issues in the issue tracker. Not just to get a feeling for the cadence of the project, but to have an impact on its direction.
Paying attention to the issues doesn’t mean just tracking down what bugs are still opened, mind you. Consider the case of a Product Owner with the release due date looming over the horizon: he or she needs to start looking at the list of remaining issues and take active steps to make sure that they are going to get done more or less on time.
The usual rules apply, choose any 2 of:
- Speed
- Quantity
- Quality
In other words, your team can deliver more features in time, if you are willing to sacrifice quality. On the other hand, they can keep high quality and the same number of features, but the due date will have to move.
As an aside, it is possible to get all three of these aspects at once, but only for a very short amount of time (few days to a week or two at most), but at a very high long term cost.
One of the things that I observed is that in some cases, a lot of complexity and work is in the last 2% of work, where all the polish work and rough-edge cases lurk. In some respects, this is actually a really good thing because it gives the Product Owner the chance to remove features that don't usually have an explicit impact on the users. A good example for this in RavenDB would be the amount of time and effort we put into the IntelliSense feature of RQL queries in the studio. That falls under the Nice To Have set of features. It is unlikely that we’ll get many upset users if the IntelliSense isn’t up to par with something like Visual Studio or ReSharper, so beyond getting some basic functionality right, we can defer improvements there if we don’t have the extra capacity to complete this by the expected date.
I’m sure that you can think of other examples in your own projects. Note that this requires you to understand what exactly your users are valuing your software for. In the case of RavenDB, adding more query functionality and speeding up overall system performance ranks much higher than adding extra smarts to IntelliSense that is mostly used during exploration/demos.
On the other hand, the effect of pushing such features down the road accumulates over time. In other words, if you keep your priorities straight and select which features should go into the product, you will defer the small fries over and over. At some point, you’ll need to make a decision about them. You can either decide that they don’t make sense anymore or they are never really going to be important enough to actually put in the “let’s get this done” queue.
Alternatively, you might want to put them in the idle bin. In other words, whenever you have an idle portion in your development, you can peek into the idle bin and get some tasks from there. That is also a good place to have a new team member start from. These are tasks that are minor and not that important, after all, so they can use that to learn the codebase. In fact, we have used this in the past as the tasks bin for interns. That is usually a really good fit, for the same reason that they are good tasks for a new team member with the added benefits that they are usually well scoped and if the intern messes up, you didn’t lose too much.
Regardless, the idle bin notion is important, because otherwise your future tasks queue is going to grow larger and larger, and it will be even harder to figure out what tasks actually matter.
Published at DZone with permission of Oren Eini, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments