• 澜沧信息网
  • 您的位置:首页 >> 国内新闻 >> 正文

    敏捷宣言:软件架构师的视角(中)

    发表时间:2019-08-29 信息来源:www.blow35rdvs.com 浏览次数:676

     

    00: 21: 38老王技工厂

    8244fe272c3b6f8f44e55c8b75283e59.jpeg

    建筑师必须不断提升团队共识并消除官僚程序

    组织喜欢这个过程,管理层热衷于为团队创建“规则”。组织越大,过程就越彻底和官僚。要快速了解公司的官僚作风,请计算您拥有的管理层数;大多数时候它们是成正比的。说到软件开发,我想谈谈对团队有直接和长期影响的两个具体过程。代码检查和代码质量检查(例如代码覆盖)。

    建筑师和团队必须积极参与评估产品实现业务目标所需的内容并满足利益相关者的需求。在达成团队共识后,以自下而上的方式记录并将其传达给利益相关者,而不是相反。如果团队参与决策,他们会相信这是正确的方法,并会支持它。拥有团队批准的代码审查指南可以节省宝贵的时间,并防止在代码审查过程中过度争论或过度挑战。此外,它还可以生成同类且一致的源代码,因为开发人员将遵循类似的审计模式和实施指南。

    代码质量验证(包括代码覆盖率)解决了产品的内部质量问题。提高内部质量可以提高外部质量,客户和产品受益者可以看到这一点。保持产品良好的内部质量应该是团队文化的一部分,也是团队成员喜欢看的文化。

    相反,对团队施加任意代码覆盖率阈值或任何类型的质量检查将导致人为的低效率。开发人员难以调整其代码(包括开发综合测试用例)以满足这些指标。更糟糕的是,他们可能不会认真对待,因为他们不相信这些措施的真正好处。

    任何对开发过程有直接影响的过程都必须由团队驱动,拥有并不断审查。不要强加自上而下的规则,最好使用评论来讨论代码审查指南和内部质量检查如何提高软件质量。当外部定义和强加于团队时,建筑师应该真正挑战并试图阻止它们。

    d9741f3e82ecaf7d436eedecc5f0cc37.jpeg

    建筑师必须与开发人员保持更密切的关系,包括仆人和保护者

    将您的工作站放在开发人员旁边,并像其他团队成员一样积极参与对话。这可以改善协作和人际关系,建立更紧密的联系,以及更好的团队合作。个人和互动比任何形式的过程都更有效。如果他们需要帮助并考虑可以做些什么来更好地支持他们,请继续询问团队成员,特别是开发人员。

    同事们将非常感谢您的方法并将您视为真正的团队成员。当他们遇到问题时,他们会毫不犹豫地寻求你的建议,因为他们知道你可以支持他们。他们应该把你视为领导者,而不是戴着另一顶帽子的经理。不要把自己标记为建筑师;相反,让别人欣赏你的贡献,重视你作为建筑师的角色。成为团队的推动者和仆人,而不是他们的老板。

    有时,架构师必须保护团队免受客户,产品所有者,业务分析师甚至Scrum主人的压力。您可能认为像SCRUM或SAFe这样的方法明确地将此职责委托给scrum master。但实际上,我也遇到过这样的情况:即使scrum master变得苛刻并试图将事情推到一边,这可能会损害内部工作的质量。

    此外,客户希望提供越来越多的功能,但也希望更快,更低的成本。有时,产品所有者或业务分析师可能希望在Sprint期间添加或修改用户故事,这将增加开发工作量。在所有这些情况下,建筑师应该控制外部压力并消除这些不良习惯。

    与相关方讨论并让他们意识到长期后果,例如人们变得不那么积极,可能离开项目,影响产品质量,或对未来的开发成本产生负面影响等等。保护团队免受外部压力,提供稳定性,舒适性和可预测性是维护团队健康的重要因素。

    93c642b169c5ab808f2648b4b66140a9.jpeg

    建筑师应该让人们在他们的环境中感到舒适并避免破坏性的活动

    与其进行正式的技术会议,不如直接与团队成员联系并讨论问题,无论是坐在办公桌前,去咖啡馆还是共进午餐。这是一个重要的事实,技术人员不喜欢会议。因此,尽量减少会议次数,让开发人员更接近他们认为合适的环境(即在他们的计算机前)。不要向开发人员询问未来会议的可用性,而是最好在现场进行;在正式会议之外进行直接,友好的对话。

    对于远程团队,当团队成员在地理位置上分布时,需要一些特殊策略。例如,一种方法是将每个员工视为远程工作人员,但仍然将开发人员留在他们的舒适区。这意味着永远不会去会议室,而是在每个人的桌子上进行视频会议,即使这意味着有些人正坐着耳机。

    建筑师应注意减少会议的干扰;有时太多干扰不好,技术人员可能会失去注意力并变得效率低下。此外,有些人在早上效率更高,而其他人则相反。在任何一种情况下,建筑师必须找到合适的时间和良好的平衡,以避免危及工作时间和保持人们的注意力。

    9bdc48e7c27875e831b8908474b20da4.jpeg

    建筑师必须找到将业务功能与技术故事相结合的空间

    除了业务功能外,还可能存在与产品内部质量相关的技术任务,这些任务值得优先考虑。其中一些支持开发客户可直接看到的业务功能,而另一些则可能无法立即产生实际结果。这些示例可能与重构或重组(提高代码可读性,增强内聚性,减少耦合),升级库或框架版本,增强日志格式,添加跟踪和监视等有关。

    架构师必须平衡添加新功能的需求和所需的技术任务数量。根据我的经验,要优先考虑每个冲刺并在产品所有者面前解释其必要性并不容易。最重要的是,向非技术人员解释或证明技术合理性并不容易。他们可能对这个概念很清楚,但往往没有正确理解其必要性。

    适用于我的解决方案(现在在一些项目中)是与产品所有者就技术任务配额(或技术缓冲)达成一致(约为团队平均速度的20%)。在此限制内,架构师和团队成员可以自由决定在下一个sprint中包含哪些内容,以便在技术任务之间保持合理的进度。此配额可能不会定期严格遵守,但必须与产品所有者达成共识并在必要时使用此选项。

    539661258fd0f7df1f03bc0225915b35.jpeg

    架构师应该支持开发人员及时了解最新技术

    建筑师应该与产品所有者和Scrum主人讨论,让团队留出时间了解他们热衷的不同技术,或者为开源项目做出贡献,即使他们与他们的产品没有直接关系。当人们与最新技术保持同步并与其他想法保持联系时,他们会对产品产生积极影响。

    一些公司高度鼓励这种活动并将其视为理所当然,而在其他地方,很难获得批准,因为他们总是需要忙碌。像SAFe这样的方法明确地为类似活动分配空间(每四次创新冲刺后一次),这是一个很好的改进,但在我看来,这必须是所有产品开发团队的“日常”。 “的一部分。

    另一种补充方法是为团队成员提供定期参加顶级技术会议的机会,并促进他们参与专业的在线课程或培训平台。尝试与预算负责人协商这些好处。团队成员将感受到赞赏和奖励,并将在项目上停留更长时间。团队中知识渊博的人将带来更高的产品质量。关于不同主题的演讲,包括内部实践社区,人们定期会面和讨论技术主题,是传播知识和最佳实践的好方法,强调人际互动和良好的合作。

    (待续)

    注意:本文由InfoQ翻译

    8244fe272c3b6f8f44e55c8b75283e59.jpeg

    建筑师必须不断提升团队共识并消除官僚程序

    组织喜欢这个过程,管理层热衷于为团队创建“规则”。组织越大,过程就越彻底和官僚。要快速了解公司的官僚作风,请计算您拥有的管理层数;大多数时候它们是成正比的。说到软件开发,我想谈谈对团队有直接和长期影响的两个具体过程。代码检查和代码质量检查(例如代码覆盖)。

    建筑师和团队必须积极参与评估产品实现业务目标所需的内容并满足利益相关者的需求。在达成团队共识后,以自下而上的方式记录并将其传达给利益相关者,而不是相反。如果团队参与决策,他们会相信这是正确的方法,并会支持它。拥有团队批准的代码审查指南可以节省宝贵的时间,并防止在代码审查过程中过度争论或过度挑战。此外,它还可以生成同类且一致的源代码,因为开发人员将遵循类似的审计模式和实施指南。

    代码质量验证(包括代码覆盖率)解决了产品的内部质量问题。提高内部质量可以提高外部质量,客户和产品受益者可以看到这一点。保持产品良好的内部质量应该是团队文化的一部分,也是团队成员喜欢看的文化。

    相反,对团队施加任意代码覆盖率阈值或任何类型的质量检查将导致人为的低效率。开发人员难以调整其代码(包括开发综合测试用例)以满足这些指标。更糟糕的是,他们可能不会认真对待,因为他们不相信这些措施的真正好处。

    任何对开发过程有直接影响的过程都必须由团队驱动、拥有并不断审查。与其采用自上而下的规则,不如使用评审来讨论代码评审指南和内部质量检查如何提高软件质量。当外部定义和强加于团队的定义出现时,架构师应该真正挑战并试图阻止它们。

    0×251d

    架构师必须与开发人员保持更密切的关系,无论是作为服务人员还是作为保护人员。

    将工作站放在开发人员旁边,像其他团队成员一样积极参与对话。这改善了协作和人际关系,建立了更强的联系,以及更好的团队合作。个人和互动比任何形式的过程都更有效。不断询问团队成员,尤其是开发人员,如果他们需要帮助,并思考您可以做些什么来更好地支持他们。

    同事们会欣赏你的方法,并将你视为真正的团队成员。当他们遇到问题时,他们会毫不犹豫地寻求你的建议,因为他们知道你可以支持他们。他们应该把你看作一个领导者,而不是一个戴着另一顶帽子的经理。不要给自己贴上建筑师的标签;相反,让别人欣赏你的贡献并重视你作为建筑师的角色。做团队的推动者和仆人,而不是他们的老板。

    有时架构师必须保护团队免受客户、产品所有者、业务分析师甚至Scrum大师的压力。您可能认为像scrum或safe这样的方法显式地将此职责委托给scrum master。但在现实中,我也遇到过这样的情况:即使ScrumMaster变得严厉,试图把事情推到一边,这可能会损害内部工作的质量。

    此外,客户希望提供越来越多的功能,但也希望更快,更低的成本。有时,产品所有者或业务分析师可能希望在Sprint期间添加或修改用户故事,这将增加开发工作量。在所有这些情况下,建筑师应该控制外部压力并消除这些不良习惯。

    与相关方讨论并让他们意识到长期后果,例如人们变得不那么积极,可能离开项目,影响产品质量,或对未来的开发成本产生负面影响等等。保护团队免受外部压力,提供稳定性,舒适性和可预测性是维护团队健康的重要因素。

    93c642b169c5ab808f2648b4b66140a9.jpeg

    建筑师应该让人们在他们的环境中感到舒适并避免破坏性的活动

    与其进行正式的技术会议,不如直接与团队成员联系并讨论问题,无论是坐在办公桌前,去咖啡馆还是共进午餐。这是一个重要的事实,技术人员不喜欢会议。因此,尽量减少会议次数,让开发人员更接近他们认为合适的环境(即在他们的计算机前)。不要向开发人员询问未来会议的可用性,而是最好在现场进行;在正式会议之外进行直接,友好的对话。

    对于远程团队,当团队成员在地理位置上分布时,需要一些特殊策略。例如,一种方法是将每个员工视为远程工作人员,但仍然将开发人员留在他们的舒适区。这意味着永远不会去会议室,而是在每个人的桌子上进行视频会议,即使这意味着有些人正坐着耳机。

    建筑师应注意减少会议的干扰;有时太多干扰不好,技术人员可能会失去注意力并变得效率低下。此外,有些人在早上效率更高,而其他人则相反。在任何一种情况下,建筑师必须找到合适的时间和良好的平衡,以避免危及工作时间和保持人们的注意力。

    9bdc48e7c27875e831b8908474b20da4.jpeg

    建筑师必须找到将业务功能与技术故事相结合的空间

    除了业务功能外,还可能存在与产品内部质量相关的技术任务,这些任务值得优先考虑。其中一些支持开发客户可直接看到的业务功能,而另一些则可能无法立即产生实际结果。这些示例可能与重构或重组(提高代码可读性,增强内聚性,减少耦合),升级库或框架版本,增强日志格式,添加跟踪和监视等有关。

    架构师必须平衡添加新功能的需求和所需的技术任务数量。根据我的经验,要优先考虑每个冲刺并在产品所有者面前解释其必要性并不容易。最重要的是,向非技术人员解释或证明技术合理性并不容易。他们可能对这个概念很清楚,但往往没有正确理解其必要性。

    适用于我的解决方案(现在在一些项目中)是与产品所有者就技术任务配额(或技术缓冲)达成一致(约为团队平均速度的20%)。在此限制内,架构师和团队成员可以自由决定在下一个sprint中包含哪些内容,以便在技术任务之间保持合理的进度。此配额可能不会定期严格遵守,但必须与产品所有者达成共识并在必要时使用此选项。

    539661258fd0f7df1f03bc0225915b35.jpeg

    架构师应该支持开发人员及时了解最新技术

    建筑师应该与产品所有者和Scrum主人讨论,让团队留出时间了解他们热衷的不同技术,或者为开源项目做出贡献,即使他们与他们的产品没有直接关系。当人们与最新技术保持同步并与其他想法保持联系时,他们会对产品产生积极影响。

    一些公司高度鼓励这种活动并将其视为理所当然,而在其他地方,很难获得批准,因为他们总是需要忙碌。像SAFe这样的方法明确地为类似活动分配空间(每四次创新冲刺后一次),这是一个很好的改进,但在我看来,这必须是所有产品开发团队的“日常”。 “的一部分。

    另一种补充方法是为团队成员提供定期参加顶级技术会议的机会,并促进他们参与专业的在线课程或培训平台。尝试与预算负责人协商这些好处。团队成员将感受到赞赏和奖励,并将在项目上停留更长时间。团队中知识渊博的人将带来更高的产品质量。关于不同主题的演讲,包括内部实践社区,人们定期会面和讨论技术主题,是传播知识和最佳实践的好方法,强调人际互动和良好的合作。

    (待续)

    注意:本文由InfoQ翻译

  • 热门标签

  • 日期归档

  • 友情链接:

    澜沧信息网 版权所有© www.blow35rdvs.com 技术支持:澜沧信息网 | 网站地图