Last Tech Tuesday, I wrote about a heuristic for prioritization. If you took that approach to its extreme you would always work on only the lowest hanging fruit (at the time). That would of course be an over simplification for several reasons. First, for any but the most trivial projects there will be a list of known bugs of varying severity that have to be fixed. Second, as I mentioned in an earlier post on technical debt, you will have to allocate some time to getting rid of it. Third, certain projects that are further out on the benefit curve that I drew require a lot of preparatory work.
So here is a second heuristic that works well in combination with the first one: keep a healthy mix! What do I mean by this? Keep periods where you only work on bug fixes, or only work on technical debt, or only work on short term feature releases short or non-existant. Sometimes you may be tempted to say for the next three months lets work on technical debt only (in the vain hope of somehow overcoming it forever). Don’t.
There are both internal and external reasons for maintaining a healthy mix. Customers/endusers don’t see any direct benefits from longer term preparatory work or fixing of technical debt. If you stop fixing bugs or fall behind on critical features they will not be happy. Internally too the mix should be something that’s true not just for the team as a whole but also for individual engineers. It is easy to burn out a whole team or individuals by giving them just one kind of thing to work on.
Which brings me to internal hack days or other unstructured time which are essential for a healthy mix. I will write a separate post about these but one common misconception is: “we don’t have time for a hack day, we are too busy working on x.” I have never seen that be true in reality. Because a hack day or something like it adds an essential component to the work mix: autonomy. For anybody picking something to work on because you want to and not because it is on some bug or feature list is incredibly motivating. And the net gain from that motivation tends to far outweigh the time spent.