"Wait a minute. This sounds like rock and/or roll."

Latest

Forget Priority and Severity when writing Bugs

Several years ago I was struggling with a very complicated set of rules governing the setting of Priority and Severity in a bug tracking system I was working in.  I did a bunch of reading about best practices but I kept finding answers suggesting complex rules about setting Priority and Severity.  In bug triage meetings I wanted two answer two simple questions: 1) is this bug in the release or not? and 2) in what order should this bug get fixed relative to the others?  I finally found some more compelling articles like this one from Fogbugz which suggested a single Priority field whose purpose was to answer my first question: is this bug in the release or not?

This method has worked fairly well — but more often than not the answer to “is this bug in the release?” is “it depends”.  Rarely did the actual spoken semantics translate to the semantics in our bug tracking system (Blocker, Critical, Major, Minor, Trivial).  We had lots of discussions like this: “This bug is a Major — does that mean it’s in?”, “This bug is just a spelling error, does that make it Trivial?”.  It was still difficult to tell what was in and what was out because we were conflating the size and complexity of the issue with it’s priority; and the semantics weren’t helping.

Here’s what we did: MoSCoW.  I renamed all of the Priorities in our bug tracking system as follows:

Blocker ==> MUST.  This issue must be fixed for the upcoming release or we will not release.  Period.  Fix all of these first.

Critical ==> SHOULD.  This issue _should_ be fixed for the upcoming release.  If push comes to shove we can defer it to the next release. Fix these after the MUST’s

Minor ==> COULD.  This issue is a “nice to have”.  Work on this when all of the MUST’s and SHOULD’s are done or if you need something small when all of the SHOULD’s are too big.

Trivial ==> WON’T.  This one isn’t going to get fixed.  Sorry.  It gets to stay in the system for posterity — maybe some day it will get reanimated.

Major ==> This is the default in our tracking system and was causing problems because it was indicating “not prioritized” but was always stuck on a release.  Therefore Major became UNKNOWN which indicated it needs to be prioritized.  UNKNOWN bugs do not get to be assigned to a release.

Now the rules for setting Priority are simple and the answers to my questions are easy — we get to spend more time fixing and building things and less time talking about Priority.  Incidentally for all of the Lean thinkers out there this change had the side effect of turning us into a Pull system instead of a Push system.

 

Advertisements

Speed Boat for Process Improvement

Back in January I had the privilege of attending a Software Advisory Committee meeting at SolutionsIQ that was facillitated by Luke Hohmann of Innovation Games. Among the many great games we played was one called Speed Boat. Today I had the opportunity to facilitate an Agile Retrospective for the Product Development team at Imprev using Speed Boat. I was very pleased with the outcome and thought I would share my experience.
After an introduction and a nice drawing on the white board by our resident Flash design expert

the whole team sat down and wrote their “anchors” for about 5 minutes. The team then placed their anchors at various depths according to the perceived “weight” of the anchor.

After a bit of logical grouping each team member cast three votes on which group we should focus on.

The result was a surprise to me. As the defacto “system owner” for our wiki I have been operating under the impression that no one really cared about or used it — and have been giving it the attention it deserved based on that impression. At this point we made a short list of tactical things we, as a team, can improve: I had no idea the team cared about our wiki nor that they had specific ideas to improve it AND would pick it as the top thing to fix in our retrospective.  Confluence 101 class will be facilitated by me tomorrow.  Our next retrospective will be in one week and “wiki” will not show up as an anchor.  Our Speed Boat will be slightly faster.

The cost of estimation

I went to a SeaSPIN meeting this last Tuesday where Jim Benson gave a talk called “No Innovation without Information”. It was a great talk and primarily focused on Kanban related topics — however we briefly touched on the subject of Estimation. We do estimation at my company and it made me wonder just how expensive it is to estimate our work, especially if we end up not doing a significant amount of the work we estimate. The next day I took a picture of our Planning Board and reviewed our Jira queue to find all of the User Stories the team has estimated but not taken in, AND that were likely stale. Using a little bit of Cost Accounting I estimated the cost at roughly $6,000. Now that might not seem like a lot of money — but for a small company like ours that represents enough money (time == money) to build out a new feature on our platform.

Can you build something you can’t draw?

I grew up in a construction family and spent my summers building and repairing bridges up and down the central I-5 corridor while I was in college. But for the last roughly 20 years I have spent my time building and repairing software (among other things). Anyone who has worked with me knows I that I love analogies — especially ones that involve physical construction. I draw many parallels between software construction and physical construction. I also note many distinct differences. Here is my most recent musing on a difference:

During my summers building and repairing bridges I can’t recall a single time when I wasn’t able to draw a picture of the finished product using a piece of keel on some smooth concrete or a piece of plywood. In other words I always knew what “done” looked like before I picked up my hammer.

In contrast it has been a rare occasion in my experience when the team could walk up to a white board and draw a picture of what done looks like before construction of some new software. While we always end up building something I can’t help but wonder if we would be more efficient if we were able to draw that picture before we started?