敏捷用户故事的INVEST原则?
Scrum

敏捷用户故事的INVEST原则?

在本文中,我们将探讨什么是敏捷用户故事中的INVEST原则,因为尽管这个首字母缩写很简单,但很难具体理解它的含义。 敏捷用户故事的INVEST原则 INVEST首字母缩写代表: I代表独立:每个用户故事至少在当前迭代中应该是独立的,不依赖于其他用户故事。 N代表可协商:细节应该是可协商的。这就是为什么我们将用户故事写成一个简短的句子,以避免强加细节。 V代表价值:每个用户故事应该为业务或客户带来价值。 E代表可估算:每个用户故事应该由开发团队估算;为了实现这一点,开发团队必须充分理解它们。 S代表足够小:每个用户故事应该被切割得足够小,以便在单个迭代中交付。 T代表可测试:每个用户故事都应该是可测试的。 现在,让我们深入了解,因为我发现仅凭这几行文字,不是每个人都能轻松理解什么是INVEST敏捷用户故事。 独立的用户故事 我经常听到人们说,在用户故事层面不可能完全独立。 如果仅从术语角度来看,这是完全正确的,但实际上我们谈论的是技术/功能上的依赖关系,而不是业务上的依赖关系。这个界限非常微妙,但绝对存在。 如果我正在开发一个电子商务网站,我可能会有一个用户故事用于身份验证,另一个用户故事用于创建账户。 很明显,从业务角度来看,身份验证必须伴随着账户创建,但从技术/功能角度来看并非如此。开发人员完全可以在没有创建账户的情况下执行身份验证。尽管从业务角度来看这没有多大意义,但在技术上是完全可行的。 因此,我们可以明确定义这两个用户故事是独立的,尽管在没有另一个的情况下发布产品是没有意义的。 可协商的用户故事 我们通常通过简单的功能摘要开始用户故事。并不禁止包含一些管理规则等细节,但所有这些内容都应该以非常简单的方式编写,以便开发人员甚至客户能够迅速理解。 用户故事在精化阶段(产品待办事项的细化)中是可协商的,例如,如果所有开发人员都能够理解它,那么可以进行协商。因此,在编写用户故事的内容时,请始终使用简单的词语,以至于您自己都能确定一个10岁的孩子是否能理解用户故事的内容。 具有真实价值的用户故事 这一点有时被误解,但用户故事的概念仅用于具有应用程序中一个或多个用户类型的真实价值的功能请求。 我有时看到这样的用户故事:“作为开发人员,我希望数据库充满。”…对于任何用户类型都没有真正的价值,因此应该尽量避免。 在这种情况下,不要犹豫,可以创建不同类型的“故事原型”:参考文章“创建不同类型的故事原型”。所有对于用户类型没有真实价值的内容应该采用其他类型的任务。 仅将“作为….”用于真正的用户故事可以很好地区分具有业务价值和没有业务价值的任务。 可估算的用户故事 开发人员将估算每个用户故事,除非您采用“#无估算”哲学;否则,开发人员通常会默认在心中有一个估算的概念。 我们已经讨论的所有标准以及下一个标准通常应该使开发人员能够轻松估算用户故事;实际上,如果他们无法估算,他们将要求产品负责人提供更多细节。 足够小的用户故事 每个用户故事都应该在一个迭代内完成;如果有任何疑虑,它应该被切分成多个用户故事。通常情况下,建议产品负责人将每个用户故事切割到最小化(只要子用户故事仍然符合INVEST原则)。 可测试的用户故事 这一点相对容易理解,每个用户故事都应该是可测试的。事实上,关于这一点,我们要求产品负责人在用户故事上明确可见的结束标志。 以下是一个例子,以便更好地理解。 作为客户,我希望在网站上浏览 -> 这个动作没有明确的结束,客户可以在不停止的情况下浏览多个页面。 […]

Sonar(SonarQube) - 谨防陷阱
开发运营

Sonar(SonarQube) – 谨防陷阱

SonarQube通常称为Sonar,是一种用于衡量代码质量的免费工具。它很快成为了软件工艺领域的宠儿。然而,我们看到了关于使用这个工具的一些常见偏差。尽管这个工具非常出色,但它也可能导致糟糕的实践。 请放心,这篇文章不是在抨击Sonar(SonarQube);这个工具非常出色,它的受欢迎程度是完全应得的。如果您不熟悉它,SonarQube提供了仪表板,用于跟踪正在开发中的产品的源代码质量。用户只需点击几下,就可以获得更多有关如何改进的详细信息。这对于在整个产品开发过程中保持技术卓越非常理想。 Sonar(SonarQube) – 偏差 然而,我看到了很多关于这个工具使用的偏差…或者更准确地说,强制使用这个工具的偏差。 在一些组织中,这个工具实际上是由”工匠”团队强制使用的…但更糟糕的是,强制使用了所有的跟踪指标…尽管这些软件开发团队应该具有敏捷思维,但它们却陷入了ITIL的思维中。 但是,为什么要强制使用它? 根本原因最终与强制Scrum团队”精确”跟踪其速度的原因非常相似。 公司将使用这些指标来: 监测团队的技术质量 在团队之间进行比较 审查某些供应商的状况 提醒团队提供质量的义务 … 总之,不幸的是,Sonar(SonarQube)经常被用于非常糟糕的原因。团队失去了他们的自主权,供应商的存在(虽然他们没有承认)受到了条件的限制,而聪明的人会利用中等代码获得好的结果…因为是的,任何系统都可以被操纵。 当我看到一些公司要求团队接受软件工艺的审计时…他们简直忘了敏捷本身…而且在我看来,我们甚至不能称之为”软件工艺”! 因此,请注意,这并不是所有公司的情况! 那么,如何使用Sonar(SonarQube)? SonarQube应该为每个认为它可以帮助他们提高工作质量的团队提供的工具。我们不强加它,我们提供解决方案。 认为强制使用工具将能够强制提供质量是错误的!这些质量指标更有可能掩盖可怕的现实。 另一方面,想要使用Sonar(SonarQube)的团队有三倍多的机会编写真正干净的代码。为什么呢?因为他们受到了选择跟踪工作的动力。 软件开发者特别应该为那些希望得到帮助以不断改进的团队提供帮助。这正是技术教练非常有效的领域。 对团队进行强制性要求只会是画蛇添足…而由此产生的指标将在掩盖着更为严重的现实的数字中坚定不移。我们谈论的是”西瓜指标”! 实际上,Sonar(SonarQube)是一款出色的工具,但如果强制使用,它可能成为一种祸害。让我们保持敏捷,真正利用这个工具可以提供的好处!

Customer Journey Map
营销

Customer Journey Map – 概念

Customer Journey Map是一种小型实践,可以帮助您改进客户体验的各个阶段。尽管名称相似,但这种实践与Customer Journey(也称为User Journey)有很大不同。 Customer Journey Map(客户旅程地图) 有不同种类的Customer Journey Map模板,但在这里,我们将介绍一个模板,它可能会帮助您更好地满足用户需求。 有时,这个模板可以用来补充我们用于定义用户的典型旅程的User Journey。例如,我们会重新审视电子商务网站客户(用户)的User Journey: 我们可能需要更详细地了解,以确保我们在不同方面满足用户的需求: 如何创建一个完全适合的购物车? 当购买的产品出现问题时应该怎么办? 这两种情况都可以产生两个Customer Journey Map(客户旅程地图);这旨在更好地分析客户在我们的电子商务网站上可能有的需求。 这些Customer Journey Map将帮助我们更好地分析用户可能的不同旅程的每个阶段。而且,直接与用户一起构建它们将非常重要。 Customer Journey Map示例 以下是一个关于购物网站上执行购买操作的客户的Customer Journey Map示例。 Feeling(感觉): 我们将分析客户在每个阶段的感受。这将有助于分析用户感到不安的阶段。通过情感曲线和笑脸的图示,可以简单地可视化需要特别注意的阶段。 Thinking(思考): 了解用户在每个阶段的想法非常重要。我们将用简短的句子来定义他们的想法。 Fears(担忧): 充分了解用户的担忧至关重要。清楚地识别这些担忧将有助于更好地应对。 […]

Growth Hacking
营销

Growth Hacking:定义及其在当今商业环境中的重要性

Growth Hacking – 在不断发展的商业和市场营销世界中,增长黑客已经崭露头角,成为一种强大的策略。但什么是增长黑客,为什么在当前数字化风景中如此关键?本文将探讨这一概念,其关键要素以及对于寻求快速和可持续增长的企业的重要性。 理解增长黑客 增长黑客是一种专注于快速可扩展增长的营销方法。它利用基于数据、创意和深刻理解用户行为的策略来获取和保留客户。与传统营销不同,增长黑客不仅限于特定渠道或策略。它代表了各种策略的结合,以实现特定目标:增长。 “增长黑客”这个术语由Sean Ellis于2010年创造,从那时起在商界成为一个时髦词汇。增长黑客不是传统营销专家;他们是具有增长思维的人,使用创新技术来扩大公司的用户基础,通常预算有限。增长黑客基于实验、数据分析和创新问题解决。 增长黑客的关键要素 基于数据的决策:增长黑客以数据为依据来指导其策略。他们分析用户行为、转化率和其他指标,以识别改进机会。这种数据驱动方法使他们能够做出明智的决策并不断优化策略。 A/B测试:增长黑客的重要组成部分是A/B测试。通过创建网页、电子邮件或广告的两个或更多版本并比较其性能,增长黑客可以精细调整其策略以实现最大影响。 用户为中心的方法:了解用户旅程和问题点对增长黑客至关重要。通过将用户置于首位,企业可以调整其策略,提供价值和无缝体验。 创意和创新:增长黑客以创造力为核心。他们提出创新解决方案、病毒营销活动和独特策略,以在竞争激烈的数字环境中脱颖而出。 精益方法:增长黑客通常遵循精益创业方法的原则。这意味着要用更少的资源做更多的事情,减少浪费,专注于有效策略。 可扩展策略:增长黑客的策略设计成可扩展的。今天对一些用户有效的策略明天应该对数千或数百万用户有效。 增长黑客的重要性 增长黑客之所以重要,有以下几个原因: 效率:增长黑客专注于最有效的策略,避免在传统营销活动中的不必要开支。 速度:传统营销活动通常需要时间来规划和执行。增长黑客允许更快的迭代和更早的结果。 适应性:在不断变化的数字环境中,企业必须快速适应。增长黑客的数据驱动方法允许这种灵活性。 可持续性:增长黑客的目标是实现可持续增长。不仅仅是获取用户,还包括通过卓越的体验留住他们。 经济性:许多增长黑客策略经济实惠,这使其非常适合预算有限的初创公司和企业。 竞争优势:采用增长黑客方法的企业获得竞争优势。他们可以比竞争对手更快地创新和增长。 总之,增长黑客是一种基于数据、灵活和创新的方法,用于实现企业的快速和可持续增长。通过专注于效率、适应性和创造力,增长黑客可以充分利用有限资源,并在当前数字环境中超越竞争。无论是初创公司还是成熟企业,采用增长黑客方法都可以成为其增长之路上的重要资产。

编码约定
开发运营

编码约定 – 定义和重要性

编码约定,有时被称为编码标准,是一组旨在规范软件开发中的源代码风格和结构的指南和规则。这些约定作为开发人员一致编写代码的准则,使其更易阅读和维护。它们在团队协作和软件项目的长期成功中发挥着至关重要的作用。在本文中,我们将探讨编码约定的内容,以及为什么它们至关重要以及如何有效应用它们。 编码约定的基础 编码约定是代码质量和软件项目管理的基本要素。它们涵盖了源代码的各个方面,包括格式、变量命名、文档等。以下是编码约定涵盖的一些关键领域: 1. 代码格式:编码约定规定了代码的格式,包括缩进规则、空格或制表符的使用、行的最大长度等。一致的格式可以提高代码的可读性。 2. 变量和函数命名:约定规定了变量、函数、类和其他代码元素的命名风格。例如,它们可以支持命名约定,如“驼峰命名法”(首字母小写,后续单词首字母大写)或“下划线命名法”(单词之间用下划线分隔)。 3. 注释和文档:鼓励编写有意义的注释,以解释代码的功能、设计决策并为模块的公共接口提供清晰的文档。 4. 代码结构:约定提供了有关代码结构的准则,包括类、函数和文件的组织。这有助于代码的导航和维护。 5. 语言约定:在国际项目中,编码约定可以指定在变量名、函数名和注释中使用的语言。 6. 错误和异常处理:提供有关错误处理、异常处理规则以及一致的错误消息创建的指南。 编码约定的重要性 现在我们了解了编码约定的内容,让我们看看为什么它们对于任何软件开发项目都至关重要: 1. 可读性和理解:编码约定促进了代码的可读性。格式正确且有注释的代码更容易理解,这简化了维护和调试。 2. 一致性:确保整个代码库的一致性,即使多个开发人员合作开发项目。这会产生一致、可预测的代码。 3. 减少错误:编码约定鼓励最佳实践,减少常见错误。例如,正确的格式可以帮助避免语法错误。 4. 改进协作:开发团队可以更有效地合作,使用编码约定。这使得代码集成、同行审查和任务分配更容易。 5. 简化维护:对于大型或不断发展的项目,明确的编码约定简化了代码维护。更新和修复更加高效。 6. 遵守行业标准:在某些领域,如安全性或合规性,编码约定有助于满足行业标准,确保合规。 应用编码约定 编码约定的应用在开发团队内部应保持一致。以下是一些有效实施编码约定的步骤: 定义约定:团队应就要遵循的编码约定达成一致。这些约定可以根据项目的偏好和要求进行调整。 培训:确保所有团队成员了解编码约定并接受培训以了解如何应用它们。 Linting和格式工具:使用自动的Linting和格式化工具,以确保代码符合约定。流行的工具,如JavaScript的ESLint和Prettier,可以集成到开发工作流程中。 代码审查:定期进行代码审查,以确保符合约定。建设性的反馈有助于根据约定改进代码。 […]

重构
开发运营

标题:深入了解代码重构:提高代码质量和可维护性

重构是软件开发中的一项重要实践,旨在改善源代码的结构、可读性和可维护性,同时不改变其外部行为。这是一个迭代过程,旨在减少技术债务、消除冗余并优化性能。在本文中,我们将深入了解什么是代码重构,为什么它很重要以及如何使任何软件开发项目受益于它。 什么是代码重构? 代码重构是修改现有代码以改善其质量而不改变其外部行为的过程。它涉及清理和优化代码,以使其更具可读性、可维护性和效率。重构是敏捷软件开发中的常见做法,通常在项目的整个生命周期中以逐步的方式进行。 为什么代码重构很重要? 代码重构为开发人员、开发团队和项目带来了许多好处: 提高可读性: 清晰、结构良好的代码更容易阅读、理解和维护。这为开发人员在解决问题或添加新功能时节省时间。 减少技术债务: 技术债务是低质量代码的累积。重构有助于逐步减少这种债务,使未来的开发更高效。 减少错误: 通过消除冗余、修复错误和优化代码,重构有助于减少错误和意外行为。 优化性能: 重构还可以帮助提高软件性能,通过识别和解决瓶颈和低效问题。 促进合作: 干净的代码更易于团队成员理解,鼓励团队合作和代码审查。 代码重构的原则 代码重构基于一组原则和最佳实践。这里有一些重构的基本原则: 单元测试: 在开始重构之前,确保有单元测试,以确保修改不会改变代码的行为。 小步前进: 重构是通过逐步的增量步骤完成的,每个代码修改后都会进行测试,以确保没有引入问题。 简单化: 尽量简化代码。去除冗余,将复杂函数拆分为更简单的函数等。 描述性命名: 变量、函数和类的命名应具有描述性,以提高代码的可读性。 文档: 更新注释和文档以反映代码的变化。 代码重构的示例 这里有一些常见的代码重构示例: 提取方法: 将复杂的函数拆分为多个更简单、可管理的函数,以提高代码的可读性。 删除未使用的代码: 删除未使用或过时的代码,简化代码库。 简化循环: 将复杂的循环结构简化为更简单的循环或过滤表达式。 […]

BDD vs TDD
敏捷文化

BDD vs TDD:了解区别

许多人询问TDD和BDD之间的区别(BDD vs TDD)。我将尝试回答这个问题,同时尽量简化这两个概念。 TDD(测试驱动开发) TDD,即测试驱动开发,是一种软件开发技术,它要求在编写实际代码之前为函数(在代码级别)编写单元测试。尽管这种方法显著降低了未来出现回归问题的可能性,但它的主要目的是指导开发人员更好地编写应用程序代码。了解预期的最终结果有助于开发人员从一开始就朝着正确的方向进行开发。 尽管这个概念对于初次接触的开发人员可能会感到困惑,但它已经成为标准的开发实践,从而实现了卓越的质量。 TDD循环 TDD遵循一个工作循环,以确保单元测试的最佳质量: 编写单元测试。 运行测试并检查是否失败(表示类尚未编写)。 编写最少的代码以使测试通过。 重新运行测试并检查是否正常工作。 完成整个类的代码。 验证测试仍然通过(没有回归)。 如果您想了解更多关于这个概念,请务必阅读我们专门的文章。 BDD(行为驱动开发) BDD,即行为驱动开发,是由Dan North于2003年创建的一种敏捷实践。其目标是使用每个人都能理解的自然语言创建功能测试。 从技术角度来看,BDD弥补了单独测试每个代码片段不能保证验证完整行为的不足。仅仅因为函数单独工作并不意味着实际的整体行为与预期一致。 然而,BDD的基本理念主要是指导开发人员根据预期的行为进行开发。更重要的是,这种BDD框架鼓励技术团队和功能团队之间的紧密联系,类似于敏捷方法所期望的合作。没有比利用集体智慧将产品推向成熟更好的方法了。开发人员根据用户期望的行为进行指导。 测试是使用一种称为Gherkin的自然语言编写的。以下是一个简单的示例,其中加粗部分表示编写这些测试所必需的基本结构: 假设我是产品页面上的客户当我单击产品ID为“255”的“添加到购物车”时而且库存为“3”那么产品将添加到购物车中。 这句话将自动由在线代码应用程序转换,并开发人员只需填写代码函数中的行为以编写测试。 一旦测试正确编写,开发人员将编写生成的函数。 如果您想了解更多关于其应用的信息,请随时查看我们有关该主题的文章。 BDD vs TDD TDD将引导开发,逐个函数进行。对于与开发领域无关的人来说,重要的是要理解开发中的函数表示一个小的单元行为,而不是一个场景。即使是最简单的场景也是函数序列。 BDD允许测试为要开发的用户故事覆盖所有预期的行为。通常,目标是通过BDD覆盖所有可能的测试案例。 这里有一个简化的图示: 结论:BDD vs TDD 希望本文回答了您的问题。如果您对BDD […]

scrum master 面试问题
Scrum

scrum master 面试问题?

scrum master 面试问题?Scrum Master(斯克拉姆大师)的角色对于成功实施 Scrum 方法在一个团队或组织中至关重要。为了确保选中适合此职位的候选人,制定正确的面试问题是至关重要的。在这里,我们将探讨一些常见且信息丰富的 Scrum Master 面试问题,以帮助您在招聘过程中做出明智的决策。 理解 Scrum 基础 什么是 Scrum,它与其他敏捷方法有什么不同? 此问题评估候选人对 Scrum 的基本了解,以及他们是否能够将其与其他敏捷框架区分开来。 解释 Scrum Master、产品负责人(Product Owner)和开发团队(Development Team)的角色和职责在 Scrum 框架中分别是什么。 此问题评估候选人是否理解 Scrum 团队内责任的分配。 每日 Scrum 会议的目的是什么,为什么它至关重要? 候选人应了解每日 Scrum 会议的重要性,以促进团队内的沟通和协作。 在 Sprint […]

MTTF(平均无故障时间) - 定义和重要性
Kanban

MTTF(平均无故障时间) – 定义和重要性

MTTF,英文为“Mean Time To Failure”,中文译为“平均无故障时间”,是一种在各种行业中用于估计系统或组件故障时间的关键可靠性度量。它是一种统计测量,有助于工程师和分析师评估产品、系统和设备的可靠性和耐用性。 了解MTTF MTTF量化了预计一个设备、组件或系统在首次发生故障之前运行的平均时间。它对于评估硬件或软件的可靠性至关重要,并经常用于基于维护、产品寿命和保修期的明智决策。 MTTF的重要性 MTTF对制造商、工程师和消费者都是有价值的。高MTTF值是一个积极的信号,表明产品或系统可能在较长时间内顺利运行。它为客户提供了信心水平,帮助他们做出关于购买产品的明智决策。 计算MTTF MTTF是通过统计分析、故障测试和现场数据来确定的。计算MTTF的一般公式如下: MTTF = (总运行时间)/(故障次数) 在这个公式中,总运行时间是系统或组件在该时间段内运行的总时间,而故障次数表示在该时间段内发生的故障次数。 应用示例 电子行业: 在电子行业中,MTTF用于估算诸如集成电路等组件的预期寿命。例如,制造商可以提供一个半导体的MTTF值,指示首次故障预计前的平均小时数。 汽车工业: 汽车制造商使用MTTF来确定汽车的关键部件,如发动机、传动系统或刹车系统的预期寿命。这些信息有助于制定维护计划和保修政策。 软件开发: 在软件开发中,MTTF用于评估软件系统的可靠性。它有助于识别潜在的错误或问题,并提供有关软件可能在发生关键故障之前运行的时间的信息。 保修计划: 企业使用MTTF来确定保修期。例如,如果笔记本电脑的MTTF为50,000小时,制造商可以提供一份覆盖设备一定年份或运行小时的保修。 提高MTTF 增加MTTF通常涉及到改进设计、使用高质量材料、进行严格测试和改进制造流程。专注于产品的健壮性、耐用性和可靠性的工程实践有助于延长MTTF。 总结 MTTF是一种有价值的度量,有助于各行业和消费者评估产品和系统的可靠性和耐用性。制造商使用它来做出有关产品设计、保修期和维护计划的明智决策。对于消费者来说,它为购买的产品的寿命和预期性能提供了信心。通过理解MTTF,您可以更明智地评估产品的可靠性和寿命。

MTTA (Tiempo Promedio de Reconocimiento) - Definición y Significado
Kanban

MTTA – 定义和意义

MTTA,英文全称为“Mean Time to Acknowledge”(平均承认时间),是用于评估团队或组织对特定事件或事故的响应能力的关键绩效指标(KPI)。它通常在信息技术服务管理、网络监控和事故管理领域广泛使用。 理解MTTA MTTA测量的是事件或特定事故发生后,团队或个人认识到其发生的平均时间。这包括事件被激活后,它被正式认识、记录和处理之间经过的时间。 MTTA的重要性 MTTA对于评估事故管理过程的有效性至关重要,以确保适当的问题响应能力。较低的MTTA值表明团队可以快速检测事件并做出适当的响应,有助于减少中断和减少停机时间。 相反,较高的MTTA可能表明组织内部监测、检测或通信流程存在不足。这可能导致问题解决的延迟,对服务质量和客户满意度产生负面影响。 MTTA的计算 MTTA通过将在特定时段内认识到每个事件所需的时间相加,然后将这个总数除以事件的数量来计算。计算公式如下: MTTA =(Σ事件识别时间)/ 事件数量 应用示例 在信息技术服务管理的背景下,我们考虑一个示例。一家公司使用监控系统来跟踪与服务器相关的事件。在给定的一个月内,该系统检测到三个重要事件。认识到这些事件所需的时间分别为10分钟、15分钟和5分钟。MTTA的计算如下: MTTA =(10 + 15 + 5)/ 3 = 30 / 3 = 10分钟 在这个示例中,MTTA为10分钟,这意味着公司在事件发生后平均需要10分钟才能认识到它。 提高MTTA 为了降低MTTA,组织可以实施更先进的监控解决方案,自动化事件检测,培训员工快速认识到警报信号,并改进团队内部的沟通和协调。 总之,MTTA是一个有价值的指标,用于评估组织对事件的响应能力。通过监测和改进这个KPI,公司可以减少中断,提高服务质量,提高客户满意度。