Loading ...
Sorry, an error occurred while loading the content.

Re: [scrumdevelopment] Re: Pointing debt stories

Expand Messages
  • RonJeffries
    Hi Adam, ... Yes, agreed. ... Me, too. My experience leads me to believe that almost every team will be working in a gradually deteriorating code base, and
    Message 1 of 117 , Apr 1, 2012
    • 0 Attachment
      Hi Adam,

      On Apr 1, 2012, at 5:07 AM, Adam Sroka wrote:

      The argument I keep hearing is that refactoring should be done when
      the benefit outweighs the cost. What I believe from experience is that
      the economics of small, incremental refactorings are very good. They
      cost me almost nothing and they immediately make it easier to make
      forward progress.

      Yes, agreed.

      What I also believe from experience is that I am not very good at
      anticipating when I am going to cross the threshold where change
      becomes difficult because I put off refactoring too long. I haven't
      met anyone who I think is good at that either.

      Me, too. My experience leads me to believe that almost every team will be working in a gradually deteriorating code base, and that they will let it go too long.

      When they do let it go too long, of course, we wind up with the topic under discussion, namely things that seem like Big Refactoring Problems.

      I believe there are no Big Refactoring Problems, only people who are not yet as good as they need to be at small-scale code improvement.

      I'm guessing that you probably agree with the above. If not, I'd like to tease out why.

      So, my belief is that now is usually a responsible choice and later
      often isn't (even for relatively small passages of time, and even when
      smart, experienced people are involved.)

      Yes. There is a kind of dilemma here, however. A team that is not as good as they need to be at small-scale refactoring really might speed up -- for a very brief while -- if they skip some refactorings that seem to have gotten too large.

      That's what drives teams to try to turn what should be day-to-day work into investment decisions, and toss them off to the Product Owner. They have turned their backs on incremental improvement and are reverting to batch-style improvement instead. Mind you, they're at least proposing smaller batches sometimes. It's just not as good as it needs to be.

      I object to defining that as an OK state because it's not the best place for any team to be in, and it is also what appears to be a local minimum of badness: "Well, we have some bad stuff in the code, but the business people are making the decisions, so it's all good." This will seem to work, so there is no incentive to improve.

      That's why I'm so adamant against technical stories, especially refactoring stories. They seem to work but are invariably suboptimal.
      ...

      Of course, that makes it sound like there is no real choice at all,
      which isn't exactly right either. Some people would look at my house
      and say it is clean, others would say it is dirtier than they would
      like. That is a matter of personal preference. However, I doubt anyone
      would argue that my house should be dirtier or that I should delay my
      weekly chores to do something else. Code is very similar.

      Yes. There is a matter of taste involved, and in a team situation there will be people who hate the dirt and those who tolerate it. Here again, do it as you go is the winning strategy.

      If we let PO decide, we're all off the hook when she decides, as she too often will, for immediate return.

      If we let Team decide, we will tolerate bad work until a majority agree that things need cleaning.

      If we each clean up code to our own standards, some of us will wind up doing more cleanup. We'll also be getting better and better at it, and the codebase will just continue to improve, with no political hassle, no debates, no attempts to compare an apple today to an improved crop tomorrow.

      And that is as close to "the truth" as I know how to get.
      Wisdom begins when we understand the difference between "that makes no sense" and "I don't understand". -- Mary Doria Russell

    • Charles Bradley - Scrum Coach CSM PSM I
      I have now more completely documented my version of the improvement backlog concept here:
      Message 117 of 117 , Apr 19, 2012
      • 0 Attachment
        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/
         
        -------
        Charles Bradley
        http://www.ScrumCrazy.com




        From: Charles Bradley - Scrum Coach CSM PSM I <chuck-lists2@...>
        To: "scrumdevelopment@yahoogroups.com" <scrumdevelopment@yahoogroups.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).

        -------
        Charles Bradley
        http://www.ScrumCrazy.com




        From: trudelle <trudelle@...>
        To: scrumdevelopment@yahoogroups.com
        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.

        Peter

        --- In scrumdevelopment@yahoogroups.com, Charles Bradley - Scrum Coach CSM PSM I <chuck-lists2@...> wrote:
        >
        > Peter,
        >
        > 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
        > http://www.ScrumCrazy.com
        >
        >
        >
        >
        >
        > >________________________________
        > > From: RonJeffries <ronjeffries@...>
        > >To: scrumdevelopment@yahoogroups.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 scrumdevelopment@yahoogroups.com, 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
        > >www.XProgramming.com
        > >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:
            http://groups.yahoo.com/group/scrumdevelopment/

        <*> Your email settings:
            Individual Email | Traditional

        <*> To change settings online go to:
            http://groups.yahoo.com/group/scrumdevelopment/join
            (Yahoo! ID required)

        <*> To change settings via email:
            scrumdevelopment-digest@yahoogroups.com
            scrumdevelopment-fullfeatured@yahoogroups.com

        <*> To unsubscribe from this group, send an email to:
            scrumdevelopment-unsubscribe@yahoogroups.com

        <*> Your use of Yahoo! Groups is subject to:
            http://docs.yahoo.com/info/terms/







      Your message has been successfully submitted and would be delivered to recipients shortly.