分享

Google软件工程:用规则和指南,构建团队的一致性

 过河卒冲 2022-12-07 发布于湖北

图片

hi,朋友们,我是柱子,见字如面。

对于软件工程团队来说,用规则和指南,来约束和指导工程师们的创造工作,来提升团队整体的质量和效率,是一个有效的措施。

首先,来了解一下规则和指南的区别:

  • · 规则:就是相当于法律。不仅仅是建议和提示,而是严格的规约,这些规则是普遍可执行的。

  • · 指南:指南是提供了建议和最佳实践的方法,这些建议最好要遵循,但不是强制性的。

规则和指南,本质是提升团队的一致性,通过一致性来提升团队整体的、长期的效能。

为什么要有规则

做事时,搞清楚背后的目的,是最重要的。

工程团队制定的相关的规则和指南,其目的是:鼓励好的行为和规避不好的行为。

其中,好和不好并没有一个绝对普世的标准,更多的是一个主观的,根据团队自身需要来定制的,取决于团队当前关注什么。

规则和指南,是为了让工程师们将好的实践方法,注入到每一次的行动中,发挥出一定的杠杆作用,将共同的发展模式推向期望的方向。

在创建规则和指南时,要考虑的关键问题是:我们要达成什么样的目标?

当我们关注有效的目标时,就可以更好的识别出那些规则能更好的的支持目标的达成,也就更容易提取出有价值的规则。

创建规则的指导原则

Google创建规则的核心指导原则:规则的目标是管理好开发环境的复杂性、保持代码库的可管理性、同时保障工程师高效的工作。

具体指导制定规则的总体原则如下:

  • · 发挥规则的作用:任何规则设置,都是有成本的。规则太多,需要工程师付出学习成本,维护也需要更多的成本。保持简单和有效是关键。

  • · 为读者所优化:代码要对读者友好,而不是作者友好。譬如,好的系统结构,好的命名和好的注释等,可以让阅读和维护更加的高效。

  • · 保持一致性:具体良好的一致性代码工程,可以让工程师快速的进入一个新的系统,迅速的将工作开展起来。

  • · 避免容易出错和出乎意料的构件:对于语言中一些复杂的、出乎意料的奇淫技巧,做一定的限制性使用,可以避免不必要的错误。

  • · 必要时要服从实际情况:必要时,要根据实际情况,对可能的规则冲突做出让步,譬如在性能优化上和互操作性上等。

保持一致性的意义

对于工程团队,或者其他任何团队来说,在工作中保持一定的一致性,是非常有必要的。

就拿工程团队来说,在代码上保持一致性,虽然可能会感受到一点限制,但从整体上来说,可以让更多的工程师用更少的精力完成更多更有价值的工作。

工程团队在代码上保持一致性的意义如下:

  • · 降低认知成本:当代码库的风格和规范在内部保持一致时,编写和阅读代码的工程师,可以更多去关注代码要完成什么事,而不是具体代码的呈现形式。

  • · 规模化的支持:一致性对工程的规模做出有利的支持。工具是组织扩展的关键,代码的一致性使得构建易理解、编辑和生成代码的工具成为可能性。

  • · 组织易扩展:随着团队的增长,保持团队内代码的一致性,可以让人员在项目快速有效的流动,尽可能的降低工程师的学习成本,增加组织的灵活和适应能力。

  • · 时间的适应性:随着时间的流失,工程师的离职和加入,项目的合并和分裂,可以让成本降低更多,简化维护的成本。

保持一致性,建议先从局部开始,再逐步的拓展到更大的范围中去。

从长远来看,一致性的范围越大,团队整体的收益的可能性就越多。

规则的应用

编程规则被强制执行时,才会产生真正的、更大的价值。

规则的有效落地,需要软硬两方面的抓手:

  • · 软的方面是可以通过培训的方式来形成思维意识;

  • · 硬的方面是通过工具的技术手段来强制实施工作的落地;

规则的有效落地,最好的方式就是依赖于技术手段,用工具自动来执行,而不是依赖于人为的检查。具体原因:

首先,自动化的规则执行,确保了规则不会随着时间的推移或组织规模扩大而丢失和遗忘;

第二,自动化的规则执行,可以将规则解释和应用的差异最小化,更多的消除掉个人的认知偏见; 

第三,自动化的规则执行,在可伸缩性有极大的保障,工具具有很好的复制性,可以低成本的无限扩展;

在软件工程中,常见的规则落地的自动化工具有:错误检查工具和代码风格工具等。

最后

对于有一定规模的软件工程团队来说,建设符合自身需要的工程规则和指南,是非常有必要的。

首先,将一组有效的规则和指南,融入到工程团队的工作流程中,可以让组织的扩展性和可持续性更好。

第二,规则和指南所提供的一致性,可以有效的帮助团队来管理复杂性,并构建易维护的工程代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多