Fuchsia FIDL 团队的文化原则

以下四项文化原则有助于 Fuchsia FIDL 团队的成员保持专注。有了这些值,当有多个看似合适的路径时,有助于选择适当的行动方案。这些文化原则旨在指导我们如何开展工作、处理项目、展示团队,并帮助我们确定如何协同工作。

确保设计库存不违规

我们非常重视降低“已设计但尚未实现”的广告资源。我们会将创意付诸代码,避免过早地构思未来的创意。

我们希望将已接受但尚未实现的 RFC 数量保持在较低水平,或者避免参与我们知道在合理的时间范围内(即我们的时间范围)不会实现的计划。随着时间的推移,“合理的时间”从几个月延长到半年,现在大约为 1 到 2 年。这种时间范围的扩大是由多种因素推动的1。我们还观察到,未实现的方案会随着时间的推移而变得过时,并且最初设计时有意义的要求和架构很少能完全适应我们日后的实际情况。

我们努力避免“当前版本已弃用,未来版本无法正常运行”的陷阱,为此,我们以高速度构建未来版本,积极将客户群迁移到这些新功能,并通常保持较低的迁移次数。

我们还力求提供具体答案,说明如何使用当前工具解决问题,而不是通过推迟到未来的功能来提供无答案的回答,例如“它将通过 [在此处插入过时的设计文档] 来修复”。如果我们知道更好的工具即将推出,但仍使用当前工具提供建议,这会让人感到痛苦,也提醒我们应尽快在用户附近的代码库中(而不是在设计文档中,因为设计文档只具有潜在影响)为用户提供这种价值。

一种声音

在代表 Fuchsia FIDL 团队的立场时,我们意见一致。我们努力向同行传达清晰一致的信息。我们应在回答问题时保持一致,在谈论路线图时保持一致,在描述技术方向时保持一致,在确定优先级时保持一致,等等。

例如,在 fidl-dev@fuchsia.dev 上提供帮助时,任何团队成员都应提供相同的建议。如果团队中存在意见分歧,我们有责任解决这些分歧,以便向用户展示共同的观点。

再举一个例子,当代表 FIDL 团队撰写 RFC 时,我们隐含地表明整个团队都支持设计的大致方向(尽管细节通常会在 CL 上讨论)。这意味着,在 RFC 进入迭代步骤之前,团队内部已达成某种程度的一致,可能是通过在 Gerrit CL 以外的其他媒介(例如 Google 文档)中进行预先工作来实现的。

如果我们内部意见不一致,就会将我们的犹豫不决或疑虑传递给用户,而用户对我们所做的技术权衡了解较少。有时,这意味着我们必须承认“我们不知道”或“我们还没有最佳实践”。在这种情况下,我们应说明各种选项及其优缺点,并与用户合作,引导他们采取最适合自己的行动方案。

行动偏见

我们以行动为先,高度重视工作和交付成果。我们会发表评论、引导和批评,以表明我们愿意言出必行。

在所做的每件事中,我们都应思考积极的结果是什么,以及我们可以铺设哪些垫脚石来向前迈进。例如,如果我们在团队同步期间进行了一次有趣的设计对话,那么我们可以快速总结讨论内容,并以几个项目符号的形式呈现。下次,系统会随时准备好此上下文,以便从更坚实的基础重新开始对话。或者,如果我们在一对一会议中讨论了某个代码库中存在的技术债务,并抱怨了当前的情况,我们可以选择将此问题转化为具体行动,即使只是提高所有人的意识,并明确指出问题和期望的最终状态。

我们从小处着手2

我们分步实现宏伟愿景,细化工作,并从小型概念验证开始。我们乐于采取临时捷径,并专注于保持实现长期目标的势头。

这需要确定优先级、细分工作,并逐步改进以达到理想状态。例如,我们曾自行决定有时先解决用户面临的问题,然后再弥合架构差距。

例如,引入 Dart FIDL JSON 模板存在问题,因为它利用了仔细的组装(通过视觉检查等方式确保没有我们呈现的句柄),并且最初收到了负面反馈。此 Dart FIDL JSON 功能利用的架构差距直到 18 个月后才通过 RFC-0057:默认无句柄得以弥合。

另一个例子是代码大小分析方面的工作(请参阅 PS1 of 76)。我们决定先采用一个不完美的解决方案,以便获取一些数据。然后,我们逐步迭代和完善了这一解决方案。关键在于,在改进衡量指标的同时,还对 FIDL 拥有的代码进行了具体更改,以减小二进制文件大小。因此,我们投入了足够的资金来生成“创意列表”。我们按照该列表执行了操作,然后冲洗并重复了该流程。在这一周期结束后的一个季度,最终的工具变得非常精确,其报告功能完全符合具体的使用情形。该工具随后得到推广,现在已成为 Fuchsia 缩减大小工作的重要组成部分。

第三个示例,使用 FIDL 语言描述 Zircon API。这最初是从非常 hacky 的 FIDL 文件开始的,有些甚至无法编译。一个全新的后端 (kazoo) 诞生了,并陆续添加了对各种目标平台的支持。即使在今天,FIDL 文件仍然依赖于 hack、实验性功能等。不过,我们对这项工作的长期方向充满信心,并且一直谨慎行事,避免产生会使 FIDL 陷入困境的设计债务。

纯研究与解决眼前问题(不考虑对未来计划的影响)之间存在一个连续统一体。我们应清楚自己处于该连续统一体的哪个位置,并积极努力,以适当调整我们面向未来的程度或权宜应变的程度。在哪些捷径可以接受与哪些捷径会造成严重后果之间取得平衡,是成为一名工程师的技巧之一。熟能生巧。


  1. 扩大时间范围的促成因素:

    • Fuchsia FIDL 团队规模,即更多火力;
    • 解决短期问题(例如 2018 年的 FTP 积压问题、fidlc 阻碍其他团队的 bug);
    • 明确工作方式(例如,团队同步或项目更新的准则),进一步加快执行速度;
    • 设计先例(例如 RFC)锚定设计原则,并简化新想法的研究和审核。
  2. 这一信条的醒目标题“从小处着手”借鉴自杰克·多西的“Square 的四个角落”,这是该公司 2012 年左右的企业价值观。这里对该原则进行了扩展,使其与我们的工作相关。