Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save marcmoore/36f1d3482ed044d7391f to your computer and use it in GitHub Desktop.
Save marcmoore/36f1d3482ed044d7391f to your computer and use it in GitHub Desktop.

One of the key objectives of a project inception is to collect requirements collaboratively. But, many times, it is difficult to decide where to start and what to focus on. Story mapping is an engaging activity where all participants are involved in the process of building the product backlog on a wall, versus writing a dull 100-page requirement document.

通过协作来收集需求,是项目开始时的关键目标之一。不过,多数情况下,从哪开始,重心在哪里是很难决定的。Story mapping 是提高了参与性,通过一面墙,每个人都能够将自己对产品的想法粘上去,之前写的100多页的需求文档简直弱爆了。

Story mapping was invented by Jeff Patton and introduced to me by Chirag Doshi and I find it very effective and useful tool to capture requirements during inception.

Chirag Doshi 将 Jeff Patton 发明的 Story mapping 介绍给我,然后我就发现这是一个在初始阶段用来记录需求的非常有效并且有用的工具。

Building a story map

创建Story map

Story mapping is a top-down approach of requirement gathering and is represented as a tree. Story mapping starts from an overarching vision. A vision is achieved via goals. Goals are reached by completing activities. And to complete an activity, users needs to perform tasks. And these tasks can be transformed into user stories for software development.

Story mapping 是一种树形的自上而下的需求规划方法。先从全局构想出发。通过制定目标来实现构想。而目标是通过完成activities来实现的。若要完成一个activity,用户需要去执行任务。这些个认为可以被转换为用于软件开发的user stories。

Story Map Structure: Goals > Activities > Tasks > Stories

Story Map 结构:目标 > Activities > 任务 > 故事

Lets take an example of an online store application’s one of the goal ‘Find product’ and build a branch of a story map to understand it better,

举个栗子,假设我们要做一个在线应用商店,其中的一个目标是“查找产品”,我们来创建一个分支来更好的理解它

To achieve goal ‘Find product’ there are multiple ways such as ‘Browse through product category tree’, ‘Free text search’, ‘Promoted products’. Lets take one approach ‘Browse through product category tree’ to build our story map,

有很多方法可以达到这个目标,例如“通过浏览栏目树来查找”,“全文检索”,“推荐产品”等。来,我们用“通过浏览栏目树来查找”来构建Story map。

now to complete activity of reaching a required product, user needs to do perform certain tasks,

通过行动来找到需要的产品,用户需要进行一系列任务,

now this tasks can be converted to user stories for software development,

这些任务就可以变成用于软件开发的的User Stories了,

like this continue to deep dive each branch of the story map starting from goals and build the whole story map. In my experience building full story map takes from 3 days to 2 weeks based on project size and complexity.

就这样深入到每一个目标分支,创建完整的Story map。根据我的经验,基于项目的大小和复杂度,创建Story map可能会需要3天甚至2周的时间。

For your reference, here is a sample branch of story map from real project,

以下是一个真实项目的Story map分支,仅供参考,

and full story map after 5 days of activities looked like following,

5天后,完整的Story map是这个样子,

Now we learned how to build story map, lets look at the advantages of it.

好啦,现在我们都学会了如何创建Story map,再来看看他到底有什么优势。

Advantages of story mapping

  1. Visual presentation of the product backlog (big picture) brings all the stakeholders on same page, in terms of scope and complexity. It also indirectly provides a view of project size.
  2. Requirements captured in a physical format fosters collaboration and builds shared understanding.
  3. Since inception is usually a time boxed activity, the story map approach helps to deep dive and focus on important features of the application. Marking ‘nice to have’ features as ‘out of scope’ during deep dive sessions, helps the team save time.
  4. Interestingly, having all stories laid out on the wall assists the team to perform relative sizing of the stories quickly.
  5. Story map structure helps with prioritisation and allows for easy slicing of the backlog into releases and carve out MVP. Slicing can be done vertically or horizontally, such as few features or more features with MVP in each feature.
  6. Story map can be transformed to agile project management tools like Mingle as product backlog.
  1. 可视化的展示,能够让所有的Stakeholder对产品的容量和复杂度达成共识。并且间接地知道了项目的大小。
  1. 培养了团队的协作及分享能力。
  2. 初始阶段通常都是要有规定完成时间的,所以有助于深入并且仅关注重要的功能。在深入规划的阶段把标有“可以有”的功能排除出去,能节省不少时间。
  3. 有趣的是,把所有的stories都粘在墙上有助于快速比较stories的大小。
  4. Story map 的结构有助于排优先级,方便划分发布版本,划分出MVP。可以横向划,或者纵向划,可以有很多MVP功能也可以很少。
  5. Story map 可以作为产品的backlog被转化成敏捷项目管理工具,例如Mingle

Enrich story map with more information

用更多的信息来充实Story map

Sometime we need more information to be captured with story map e.g. nice to have stories, follow up questions, alternative approaches... This is like enriching the story map with more information. Following are few of the use cases of same,

通常,越多的信息被记录下来越好。“可以有”的stories,需要跟进的问题,替代方案等。用大量的信息来完善Story map。以下是一些实际用例,

  1. Use different colors to represent different levels in story map e.g. Orange for Goals, Blue for Features, Green for Epics and Yellow for Stories.
  2. Put wireframe next to the relevant area of story map.
  3. Use stickers like dots or stars to represent special notations: a. Marking out of scope features are important for shared understanding b. Identifying alternatives help to capture rich user experience and low cost alternative solutions
  4. Use small sticky to capture notes, assumption, follow-ups or questions
  1. 用不同的颜色来代表不同的级别,例如,橙色代表Goals,蓝色代表Features,绿色代表Epics,黄色代表Stories。
  1. 把线框图放在相关的区域。
  2. 使用圆形或者星形标签作为特殊记号: a. 标出需要达成共识的重要功能。 b. 确定出NB的用户体验和低成本替代方案。
  3. 使用小的贴纸来记录备注,假设,后续跟进和疑问。

Alternative ways of structuring story map

构建Story map的可行方案

In story mapping, defining a structure is important and then refine it as needed. The objective is to start with some structure in mind and evolve from it. Sometime it takes 2-3 iteration to get the structure right.

在创建Story map时,定义好一个结构是很重要的,然后根据需要来完善。客观的说,可以在脑海中先构建一种结构然后在进一步深化。通常需要2-3个迭代来得到完善的结构。

One alternative structure is based on ‘User Journeys’. User driven approach helps to identify requirements from user perspective e.g. buyer, seller, administrator etc. The map is then structured as User > Goals > User Journeys > Actions > Stories.

“User Journeys” 就是一种可行的方案。通过用户驱动来帮助明确需求。例如,买方,卖方,管理员等。结构就会是 User > Goals > User Journeys > Actions > Stories

Another alternative, especially useful for NFRs (non-functional requirements) can use: NFR > Requirement > Story.

再来介绍另一种可行方案,对于非功能性需求非常有用: NFR > Requirement > Story

Large projects may require up to 6 levels in a story map. However for smaller projects, 3 levels are usually sufficient.

大一点的项目可能需要有6个层级。小点的,3个层级就够了。

Preparing for story mapping exercise

准备练习

Now that you are convinced about using story map for your next gig, lets look at what you need to get ready for the activity:

现在,你已经被迫使用Story map来进行下一场表演,下面我们再来看看你需要做的准备工作:

  1. A large Conference room with empty wall space for full duration of inception.
  2. Different color stickers, one for each level.
  3. Thick marker pens (1.5mm thick permanent marker) 10+ nos - to read stickies from far.
  4. Stickers (dots or stars) - to enrich story map with more information.
  5. Use magic charts/whiteboard in case walls are not a good surface for stickies.
  6. A good camera to take photos of the wall.
  1. 一个有足够多面墙壁的大会议室。
  1. 不同颜色的贴纸。
  2. 马克笔。要足够的粗,能从很远的看清楚写的是什么。
  3. 特殊形状的贴纸(圆形,星形)。
  4. 也可以使用白班来粘贴纸。
  5. 一台照相机。

Learnings

收获

While doing story mapping I ran into challenges and found ways to overcome those. Following are tips to avoid those traps and help you run the story mapping successfully.

当我在创建Story map时,我遇到了一些挑战,并且寻找方法来解决。以下就是一些小技巧,帮助你避免一些陷阱,成功搭建好Story map。

  1. Story mapping is a discovery phase for products requirements, follow principal of capturing everything with alternatives to avoid long running discussions.
  2. Prioritise deep dives frequently to avoid spending time on less relevant topics.
  3. Tidy up and rearrange stickies frequently before it grows big and becomes very difficult to manage. Keep good walking space near walls. e.g. NFR story map wall photo shown above :-)
  4. While working with stickies, remember to remove stickies carefully to avoid folds, so it stays on the wall for the whole duration of the activity, and is readable in photographs.
  1. 创建 Story map 是处在产品需求探索阶段,始终避免过长时间的讨论,记录所有方案。
  1. 频繁的去评估优先级,以避免在无关紧要的事情上花费时间。
  2. 在Story map 变得过大之前,经常清理并且重新排序,否则就会变得很难管理。留有足够的走动的空间,看看刚才的照片 :-)
  3. 在使用贴纸的时候,仔细点,别让他们折起来,一直牢牢地粘在墙上,拍过照片之后能够很容易辨认。

Conclusion

结论

Story mapping is an effective inception tool to create a product backlog in a visually structured way. It helps in building a shared understanding, identify gaps in the backlog, see interdependencies, perform better relative sizing. Further, it can also help in slicing and release planning activities.

创建Story map,是一种创建产品Backlog的有效方法,很可视化。参与者能够互相了解,跨越鸿沟,分辨依赖关系,形成大小合适的story。更进一步的是,它能让切割产品发布activities更简单。

References

参考资料

Book User Story Mapping by Jeff Patton Read more on capturing non-functional requirements using story map Many thanks to Gurpreet for review and valuable feedback.

If you have tried story mapping on your project, please share your learnings, thoughts, photos using comments.

如果你试过Story map,请分享您的收获,感想,照片。

原文

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment