Re: Pointing debt stories
--- In email@example.com, George Dinwiddie <lists@...> wrote:
> Not really. This is a point that I often encounter, though. I often see
> people take a tack that leads to more pain. I'd like to help, if I can
Yes, I'm the same way, though I'm trying to get over it.
> The question is whether they're aware of effective ways of addressing
> it. Usually the proposals pit dealing with the debt against further
> development. I've seen repeatedly that this is not a successful solution.
I think it depends on the granularity. I agree in the "all or nothing" case, when the team wants to discard the code and start fresh. That generally ends badly, and always costs much more than considered up front. But in each micro case, there is the same tradeoff: fix this debt I just uncovered, or add the new code expected? I think most here would agree that the the inclination to fix it, when feasible, tends to lead to better code, whereas the inclination to defer it tends to lead toward an ossified codebase.
> In my experience, the impact is only obvious if you have experience
> working without such technical debt. Most of the time, the team cannot
> make a direct comparison because they've had this debt a long time.
I think that's insightful, and helps explain why such codebases tend to get worse.
> > Well, 60% are contractors, and some of the RFT developers are the
> > ones who created the debt in the first place.
> Are you saying that the programmers don't have the skill or motivation
> to deal with the debt on their own?
Most of them have the skill, but there are conflicting motivations in all cases. The contractors are employed largely because of the huge debt factor, IMO. Cleaning it up would probably cost them their jobs. All of them are motivated in part by the fear generated by a command/control style project management that dictates features, dates and staff. (We're adopting Scrum/Agile, obviously not there yet) The best of them are much more strongly motivated by pride of craftsmanship, so they make a heroic effort, but it is never enough.
> Once again, the better way is to address the debt in the code touched
> while adding new functionality. This is addressed both to enable adding
> the new functionality, and to clean up after adding the new functionality.
Yes, I think I've been clear I support that; putting it in the backlog does not preclude it. If you don't put it in the backlog though, how do you make it visible to the PO?
> If you're using "debt stories" and "user stories" then there is an
> either/or choice. If you're only using "user stories" and take care of
> the debt associated with that part of the code as part of that story,
> then there is no either/or--only both.
They are all user stories. "As a developer on the foo module, I want to refactor bar, so that this cost need not be replicated in all stories needing to baz"
> That's fine. It should be a discussion with the whole team, not the
> creation of technical stories. Technical stories feed that desire to
> "fix everything." Or, if they're not prioritized, they starve that desire.
Maybe, but they also feed the desire to make things visible and collaborate on a solution. Even if they're not prioritized, the team is still free to do the work as it is required for top-ranked stories. Obviously, I'm not in the camp here that apparently considers tech stories to be evil incarnate, much like wire hangers. Without them though, where do you capture the discussion, and make it visible so that it factors into release planning?
> Your team can already see what happens if you ignore and accumulate
> technical debt. Concentrating on technical debt outside of the creation
> of new functionality is the Charybdis to that Scylla. (Do you remember a
> company called Netscape?)
Remember? I worked at Netscape for 7 years!
> The only way that seems to work is to keep the clean-up and the creation
> of new functionality together. It's not easy when you've got a mound of
> existing debt, but the easy ways don't work.
Until I hear more about how this approach involves the PO, I consider it a sub-optimal, but easy way out for developers.
- I have now more completely documented my version of the improvement backlog concept here:http://scrumcrazy.wordpress.com/2012/04/19/scrum-strategy-the-dev-team-improvement-backlog/-------
From: Charles Bradley - Scrum Coach CSM PSM I <chuck-lists2@...>
To: "firstname.lastname@example.org" <email@example.com>
Sent: Tuesday, April 3, 2012 12:13 AM
Subject: Re: [scrumdevelopment] Re: Pointing debt stories
Peter,Velocity and Story Points are concepts intended to capture new behavior of a system that is directly valuable to primarily users and purchasers. (The What)Improvement Items are only indirectly valuable, and thus, should be tracked totally separately and differently. (The How)This is also why I give the Dev Team the final control on Improvement Items, and leave the final control on User Stories to the PO.
As for who sponsors improvements that cost money (whether it be celebrations, new tools, etc) -- it's the same people who have sponsored them before -- either the org, or the individual members pay for it themselves. Obviously the Dev Team would need to get permission from the org to spend org resources(just as before, only now we're making it more visible via the Improvement Backlog).-------
From: trudelle <trudelle@...>
Sent: Monday, April 2, 2012 11:48 PM
Subject: [scrumdevelopment] Re: Pointing debt stories
Thanks Charles, this sounds quite reasonable to me, and seems like it could handle 80-90% of the of the situations I've encountered. I'm not sure I understand why you're so against using points here though, or why you think the cost is so different from velocity (which I agree is not a measure of productivity). Also, who sponsors expenses like conferences & celebrations? It seems like these involve tradeoffs with competing ways of spending the team's time/money, which could be contentious.
--- In firstname.lastname@example.org, Charles Bradley - Scrum Coach CSM PSM I <chuck-lists2@...> wrote:
> My solution is essentially this:
> The Dev Team has a thing called the "Improvement Backlog", where it keeps a list of things(Improvement Backlog Items -- IBI's) that are intended to improve the Dev team's productivity (but not necessarily velocity, because I do not believe velocity to be a direct measure of productivity). This backlog has many different things on it, and it is ordered by the Dev Team. The types of things are essentially anything that *might* have the chance to improve team productivity, while at the same time allow the team to keep a sustainable pace.
> Examples of IBI's:
> * Team celebrations
> * Scrum process improvements
> * Technical Debt resolution
> * Bug Fixing
> * Exploring new technologies
> * Attending Conferences/Training
> Each item is ordered and estimated*, just like PBI's. Further, it's best to break these down into smaller items that can be done incrementally, when possible. The Dev Team can use the retrospectives to feed and groom the IB, or any other time (formal or informal) to add to it. Like PBI's, only the ones towards the top of the backlog are well groomed. The Dev Team can choose to invite the PO into the grooming if they so desire, but it is not required. The IB is ordered based on many factors, but the Dev Team is responsible for maximizing the productivity value of the IBI's to the team and the wider organization.
> * These items should NEVER be estimated in story points, NOR counted in velocity, and these items should not end up on the PBI. I prefer hours to estimate them, but any other unit (real or fake) can be used to do relative sizing of the items, so long as the unit is not confused with PBI's, User Stories, or velocity -- which are entirely different concepts.
> How much time to dedicate to the IBI's each Sprint?
> Entirely up to the Dev Team, but made visible to the PO and the wider organization. Making them visible on a team's "Scrum board" is sufficient. These items can be planned in the Sprint Planning Meeting, or outside of it, but they should probably end up as part of the Sprint Backlog, just like PBI's do. I find that the best way to dedicate the time is to negotiate with the PO on some number between 10-20% of each Sprint. The Dev Team should let the PO influence that number, but not control it. Also, there may be circumstances where the team decides to use a much higher or lower % of the Sprint, but the team had better be darn sure that they can justify the outlier to the PO and wider organization. Also, make sure that having an IB is not going to get you or your team fired or anything like that!
> Further, I recommend that Dev Teams utilize this concept, *in addition to* the incremental cleanup strategies as recommended by Ron and George.
> I've based this concept on a couple of similar (but not the same) strategies:
> * http://blog.mountaingoatsoftware.com/how-do-you-get-from-here-to-agile-iterate
> * https://sites.google.com/a/scrumplop.org/published-patterns/retrospective-pattern-language/scrumming-the-scrumI justify this by using some language in the Scrum Guide, most notably:
> "No one (not even the Scrum Master) tells the Development Team how to turn Product Backlog into Increments of potentially releasable functionality;"
> I probably forgot a few things, so "I reserve the right to revise and extend my remarks at a later time." At some point I would be open to changing the name of the IB to some other name, so long as the new name is just as good or better.
> Charles Bradley
> > From: RonJeffries <ronjeffries@...>
> >To: email@example.com
> >Sent: Sunday, April 1, 2012 3:47 PM
> >Subject: Re: [scrumdevelopment] Re: Pointing debt stories
> >On Apr 1, 2012, at 4:54 PM, trudelle wrote:
> >--- In firstname.lastname@example.org, RonJeffries <ronjeffries@> wrote:
> >>because you're focusing on the PO's idea of value, you'll never work > on a debt item that doesn't really need it.
> >>Ah, but you're not. You're focusing on the PO's rank ordered stories, which are invariably value/cost. If the PO doesn't understand persistent reasons for high costs on some stories, you may never work on the debt that keeps the highest value items low in the backlog. In some cases, several stories could presume some significant refactoring, whereas the reality is that some single tech story could be identified that is the common work needed before implementing all of them. If POs could see this, they would order the backlog very differently. How are you handling that without tech stories?
> >Well, the main thing I would do is have stories all about the same size. Also, research results by Arlo Belshee, in a related but not identical context, suggest that ordering by value alone may work better. I believe that there, too, stories were not allowed to go infinitely large, else we'd all be working on teleporting and such.
> >If I understand your concern, it is that some stories will take a long time to do unless ... unless what? Unless some refactoring is done first? I deny that premise. It doesn't take me measurably longer to do stories that need refactoring.
> >If it did, then I'd take the aforementioned list of refactorings, and tag the business-value stories with an indicator of which ones impacted which refactoring areas. I'd encourage the PO to think in terms of value, not time.
> >It seems to me that to give the PO useful information, you'd have to be able to say, even with your big refactoring style, "If we do refactoring R3, then stories S4, 5 and 6 will change estimates from 10, 12, 20 to 5, 5, and 8.
> >And if you can do that, you're a better man than I am, and I'd love to read a paper on how to do it. Since I don't know how to do that, I'd rather just keep all the stories about the same size and clean the code as I go. I can actually do that, and I cannot predict the velocity impact of a large refactoring.
> >Ron Jeffries
> >I know we always like to say it'll be easier to do it now than it
> >will be to do it later. Not likely. I plan to be smarter later than
> >I am now, so I think it'll be just as easy later, maybe even easier.
> >Why pay now when we can pay later?
To Post a message, send it to: scrumdevelopment@...
To Unsubscribe, send a blank message to: scrumdevelopment-unsubscribe@...! Groups Links
<*> To visit your group on the web, go to:
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
(Yahoo! ID required)
<*> To change settings via email:
<*> To unsubscribe from this group, send an email to:
<*> Your use of Yahoo! Groups is subject to: