如何为技术实现细节编写用户故事?

7
我正在尝试更有组织地工作,并开始采用用户故事。
我认为我对如何在技术方面使用用户故事存在误解。
假设我正在编写一个应用程序,该应用程序可以为特定关键字在Google中排名。
用户故事如下:
作为互联网营销人员,我希望查找我的网站在某个关键字上的排名,以便我知道我的SEO工作是否有效。
现在这很简单明了且以用户为中心...然而,如果我需要将代理引入其中会发生什么呢?
一方面,代理是技术实现细节,另一方面,代理是互联网营销人员领域的一部分。
我该如何构建这样的故事?
作为互联网营销人员,我希望在搜索Google时使用代理,以便我们能够检查大量关键字而不被Google阻止。
以上情况对我来说听起来不对...也许我可以重写它,使其变成:
作为互联网营销人员,我希望能够同时检查许多关键字,以便节省时间。
这听起来更加正确,但我可以给它什么验收标准?每分钟尝试100次从Google爬取数据吗?这不是浪费时间吗?
这里有另一个情况。当我想要实现的功能是代理每30秒可以使用一次时,我该如何从用户中心的角度来解决这个问题呢?
我想到的另一件事是提供另一个“角色”。而不是以“互联网营销人员”为中心,我可以说我们有一个名为“Google Scraper”的角色。我可以说“互联网营销人员”与“Google Scraper”有关系。
现在我可以编写以下用户故事:
作为Google Scraper,我希望每次搜索时更换代理,以便Google不会封禁我。
你对以上类似的技术实现细节的处理方式有何看法?这也有助于将系统分解为模块...

可能是为内部技术任务编写用户故事的重复问题。 - Dave Hillier
这个问题不符合本网站的范围,因为它不在我能在这里提出哪些主题?中定义的范围内。另请参阅:我应该避免问什么类型的问题?您可以在其他Stack Exchange站点上提问,也许是[pm.se]或[softwareengineering.se]。请务必阅读帮助中心有关任何打算发布问题的网站的相关页面。 - Makyen
2个回答

12
您不需要编写技术故事。用户故事应符合INVEST标准
代理似乎是一种实现细节,应该避免使用。在您的故事中不应提及代理服务器。即使它们是领域的一部分,也有可能通过其他方式实现相同的效果。
与其写成“我想使用代理,以便不被阻止”,不如写成“我想隐藏我的身份,以便不被阻止”。如果我是您的客户,我会不知道为什么您需要代理?它是正向、开放还是反向代理?代理服务器有许多用途。您应该选择要利用的功能。
但是,您不应过于纠结于完美的故事。敏捷宣言说:“个体和互动高于流程和工具”。
当写用户故事时,您还应考虑三个C:卡片,对话,确认。客户和您是否都理解故事的含义?
卡片是否符合INVEST标准?如果这两个问题的答案都是肯定的,那么故事就可以了。

3
这个故事肯定不应该提到代理。如果可以在没有代理的情况下实现相同的目标,那么是否有人会关心呢?如果代理被证明不是可行的方法,这个故事就不太有价值了吗?当然不是。 - Sklivvz
好的回答。尝试将用户故事想象为“敏捷用户故事是对话的占位符”。不要被“作为一个...”的语法所困扰 - 它不是核心概念的一部分,只是帮助获得良好表述的辅助手段。 - Jocke

2

用户故事不应包含技术细节。在Sprint计划期间,技术细节应作为交付团队任务嵌套在用户故事下方添加。这些任务应通过交付团队讨论创建。您不应尝试记录每个实现细节,因为您会遇到递减收益点。对于每个用户故事,目标是60-75%的实施细节(任务)覆盖率,因为在编码开始时细节可能会发生变化。开发人员在编码过程中发现的任何其他细节都可以在每日站立会议期间简要共享和记录。用户故事可以简单且非技术性,而交付/开发团队将详细说明嵌套任务的故事细节。 这些任务应该通过开发人员的集成开发环境(IDE)对开发人员可见。当开发人员完成任务时,他们可以将其检查的代码与您的工作项跟踪工具(Jira,Team Foundation Server,On-Time)中的任务相关联。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接