Welcome to Manicprogrammer Sign in | Join | Help

Design Stories - A bridge between roles

This idea has been forming among our architecture group this week and I think it has enough potential to open up for public discussion. I'm hoping to get some good criticism and references to prior art I can draw on.
 
Overview:
Traditional stories provide a solid structure for understanding what value a given set of work is supposed to accomplish (i.e. Analysis). They do not provide a good means of giving a team guidance on HOW that is to be accomplished. On the other end, we have a great set of practices from XP and other sources that provide a means of creating very good code through pairing, co-located teams, etc.
 
Unfortunately, there is a gap present in most organizations. Where do you create a consensus about the architectural metaphor, that set of patterns and approaches that allows a good application to scale beyond a single team. Things like SOA can pull that decision making process out to the extremes, where there's a small body at the top working with services as a language, and teams that then take individual responsibility for their parts, but that doesn't extend to UI-intensive applications or to the deep complexity inherent in some domains. The core of the message is that Agile doesn't "do" detailed designs. There's a good reason for that: Detailed designs traditionally create a large transaction cost for each unit of work going through the system. When you've reduced batch sizes, the transaction costs become a higher portion of the overall per-item cost, thus making the detailed designs painful.
 
The design story template is used as the next layer beyond an XP-sized analysis story. It provides a mechanism for crafting highly focused design with minimal transaction costs. It also allows for training other members of the team on the design approaches as a core part of creating the design. In essence, each design becomes the process of filling out a small, defined template in the same manner as writing an FDD feature name or writing a BDD story. The part of this that is most interesting to me is that the design story follows a standard order starting with most generic (the story-level goal) and proceeds to the very detailed (what methods need created). Because of this, the architect [1] may stop writing at any point and allow a developer to write the remaining elements. In our organization, it will be reviewed, and the last line will frequently be left off. In others, the architect may stop after the third line and let a highly capable team member take care of the rest with no further interaction. It is entirely by intent that this template includes aspects that are typically left to the developer and starts with items that are usually left to the analyst or project manager.  
 
This is a bridge between the value vision and the implementation, and provides a clear path towards training developers to handle harder, more abstract aspects as a part of their work and in a manner that is clearly relevant to their work.
 
Story:
In order to improve the user's perceived performance through a reduction of RAM usage,
we need to load preview quality images for the current page only.
This requires to make changes to page display behavior in the client,
using the established page mediator pattern through the page mediator factory,
to provide interactions between the project model's page changed event and the placement rendering
by creating a mediator named CurrentPageImageVisibilityMediator,
and writing the handler ProjectModel_CurrentPageChanged event that uses an ImageLoad asynchronous command to change the quality of the displayed image if the current page has become visible or ceased being visible.
 
Template:
In order to [goal of the story],
we need to [Decomposed software change supporting story].
This requires us to make changes to [the architectural/design components]
using [Identified patterns and approaches specific to the team/product]
to provide [specific interactions with existing components of this system]
by creating [specific class names to implement the patterns]
and writing [specific method names and behaviors]
 
Goals:
 
This came out of a few needs at Inkubook.
  • Developers wanting to grow in their craft and learn the design and architecture roles
  • Architects wanting to maintain enough control of the system's shape, but be able to effectively delegate
  • Keep batch sizes small, thus needing to
  • Minimize the transaction costs of each batch.
  • Different developers have different abilities, and the approach needs to scale to any of them.
  • Need to identify responsibilities without overwhelming the process
  • The need to provide meaningful review early in the design process
Influences:
There were a number of easily identifiable previous influences on how I was thinking, such as:
  • Communication pattern of "Describe a need, then ask to have it described back to you"
  • My understanding of FDD the concept of a Design Memo
  • Knowledge of BDD's "examples" notation
  • Desire to fit with an XP or BDD style "story" format and feel
  • The concept of the cone of uncertainty
Shu Ha Ri

[2] A good description of Shu Ha Ri can be found here.  To summarise, the concept comes from the Japanese martial art Aikedo and refers to the three stages of learning.

  • Shu is the first stage, where the student is imitating and following the master’s steps
  • Ha is the second stage, where the student is showing understanding, and breaking away from the master’s steps
  • Ri is the final stage, where the student is showing mastery and fluency by creating their own steps
  • Mapping the concept of Shu Ha Ri into this story template, I believe that developers will be able to progress through all three stages for each of the lines in the template, at times in parallel. I want to do more evaluation of the androgogical aspects of using this sort of progression for teaching our craft more effectively, but that is something for another day.
     
     
    Notes
     
    [1] I'm saying "architect" in the sense of "the person whose job is to define the approach used in designing the application and for teaching that approach to the various teams involved". I understand the role changes based on system size and organizational structure.
     
    Published Thursday, December 18, 2008 2:18 PM by willeke

    Comments

    # re: Design Stories - A bridge between roles

    I see a great tie into user stories as Mike Cohn defines them and the design stories to make the user stories a reality. It's been interesting trying to get developers to estimate user stories as story points without this level of detail. By using the template, developers can put the story into perspective. What is missing in the template is the notion of alternative design options that could lead to a better designs. I do see great value in using this technique as a simple form of documentation combined with Fit tables to define the subsequent test cases when documentation for project stakeholders and reviewers is required for not-so agile teams.

    Is anyone else using this design template?

    Thank you,

    Bill Ramos

    Tuesday, December 30, 2008 12:47 AM by billramo

    # re: Design Stories - A bridge between roles

    Unfortunately, nobody's using them quite yet. We're planning on giving them a try starting on the 5th when we expect to pull our next item into development.

    The current discussion here is about the level of detail that exist. I think this level of design is GREAT for requirements taking the form of user stories. On the other hand, with more traditional requiremetns, the perception is that this form is too light... I personally disagree, but the discussion moves on ;)

    Thoughts?

    Tuesday, December 30, 2008 10:12 AM by willeke

    # re: Design Stories - A bridge between roles

    This sounds like a promising approach. Somewhat similarly, in my current team, we have answered a set of questions for each user story, such as:

    - who needs this feature?

    - why?

    - what is the scope?

    - how can it be tested automatically?

    - how do we implement this?

    You are focusing on that last questions, as well as putting it into a template. Much like a standard set of questions does, I am sure the template helps the team think about the right things. It would be interesting to hear your experiences after trying it, though. I'm thinking it may be difficult to have all user stories fit the template. For example, what if the user story isn't about writing some new classes, but rather making some modifications to JavaScript or HTML, or perhaps configuring a dependency to a third-party component?

    Cheers,

    Tor Hovland

    Friday, January 02, 2009 7:45 AM by torhovl

    # re: Design Stories - A bridge between roles

    I did a first pass on Wednesday using this template during a pair programming exercise. For each bit we worked on, we talked together and filled out the template, asking and answering questions that arose about the approach. A four hour session resulted in six design stories being written, with one being discarded as a result of us coming up with two alternatives for the same need, and doing a 'competitive evaluation'.  They are very short to write, but I suspect that it will be challenging to write enough ahead of time to hand them off in a reasonable manner. However, as a unit of review and design, I think they are going to be highly effective as both an educational tool and as a design history of WHY things were done as they were.  More extensive use will start Monday, so I'll update with how things work out.

    Friday, January 02, 2009 5:08 PM by willeke

    # re: Design Stories - A bridge between roles

    Tor,

    The language is not meant to be cast in stone for the design approaches. I imagine there will be different flavors of the template for various parts of the system. My first use of them on Friday did find that some lines tended to be redundant, but I think as we work on the hand-off behaviors and how a single designer/architect can keep a number of pairs running through point-guidance and review through the use of these templates, things will prove out to less redundant and more "additional detail"

    More to follow.

    Friday, January 02, 2009 5:10 PM by willeke
    Anonymous comments are disabled