这篇有两个主题:公司文化与code review,而讲者特别强调的是要如何将这两件事情中间做连结。所以如果你想知道要如何把公司定义的价值落第到工程文化中,蛮适合可以看看这演讲的。
这篇的主旨其实讨论的是公司文化而非Code review。讲者利用Code review做为范例,示范如何由下而上的在code review的过程中加入培养公司文化。
整个演讲分成两部分,第一大部分讲的是「公司文化」而第二部分讲的是「Code review与文化的交互影响」。
讲者首先介绍了四种价值:
基本价值(Permission to play value)
公司里最基本的行为标准,例如诚实、尊敬、可信…等等。
核心价值(Core values)
这是当公司利益冲突时决定要取何者重要标准,所以不能是太general就像permission to play一样。
志向价值(Aspirational value)
这比较像是公司期望的价值,并不是继承而来也不是自然产生的,而是刻意安置到公司里的。
意外产生的价值(Accidental values)
这代表的是公司不预期但意外产生的价值,有可能是从一群有相同背景的人带来的文化,也有可能是因为公司环境而自然产生的问题。这种类的价值必须要谨慎对待,因为这种价值有可能会将新人或新观点拒於千里之外。
上面四种价值基本上驱使公司中所有决策与策略,所以时刻确认做的事情是否与公司价值一致是很重要的。
而为了达到让团队真正的合作,我们必须要克服失能团队的五大障碍(The five dysfunctions of a team)。由下而上是:
(图片撷取自原演讲影片连结)
细节在此不多做介绍,有兴趣的人可以直接去搜寻此书《克服团队领导的5大障碍》。
而讲者提到一个问题,新创公司都会遇到的一大问题是我们要怎麽权衡「把事情做好」与「快速完成事情」?她说小朋友才做选择,我们两个都要。所以建立好的团队在此就至关重要了。
下半部演讲讲的是关於将公司文化应用在code review上的部份。
她先大略提及了SalesLoft的code review流程
(图片撷取自原演讲影片连结)
而做这些Code review的目的有:提高可读性,确认架构与设计的决定,在测试前就找到bug,与知识转移...等等。而code review的过程其实也是一段技术间的对话,让工程师们用code review的方式薰陶与体现公司的价值。
不过,听起来其实流程有够繁琐,这样不是无法达到「快速完成事情」的目的吗?讲者表示其实不会,因为你早期发现问题,与确认code的品质,其实对未来都是一项很大的投资。我们在确认「做对事情」之中,可以确认符合各种原则(例如SOLID、DRY、KISS...等等)或测试覆盖率等等,这些都可以帮助未来在开发时增加效率,短期可能比较缓慢但长期来看却是快速的。
而她们又如何在code review的过程中展现团队合作的精神呢?藉由code review可以达成
接下来讲者也拿出了一些公司的例子以表达真的有在做上面这些事情而不是唬烂的,有兴趣的可以看原演讲影片。
身为code reviewer你可以尝试做到下面几件事情
尝试避免下面几件事
讲者表示我们要尝试让工程师参与建立好的工程文化,一如让工程师参与建立好的codebase一样。
首先要来吐槽一下这个演讲结构XD,我觉得这个演讲整体内容是ok,但是因为她想讲太多东西,而每件事中间连结的逻辑性不够强,所以导致其实听众有点难抓到她的重点在哪里。例如失能团队的五大障碍我觉得在整个演讲中其实没有真的很有必要,即时整个拿掉都不影响到原演讲的主旨。而价值的种类其实也不是这麽重要,只要留下核心价值就足够贯穿全文了。
而演讲内容也有些我不太认同的地方,以下来讲讲。
我完全可以理解这件事情的痛苦与可能性,毕竟我也是看着新创一路从不到百人变几千人的规模。我同意团队合作是能同时达成速度与品质重要的因素。但是这讲法仅限於完全理想的状况。
所以当一个公司制定的策略是两者兼顾时,我觉得其实是非常不负责任也不切实际的,因为最後其实最後苦的都是那些相信公司价值的员工,因为他们会花大量的时间与精力去达到公司所说的目的。
我其实也一直在思考公司提倡的核心价值到底能带来什麽样的意义,因为我自己个人在公司推动核心价值这部份的印象是没有很好XD。公司虽然在各处传达核心价值(厕所、会议室到处贴、年度评监也要写自己对核心价值做了哪些贡献)但对员工的感觉是教条洗脑式的宣导,并没有对我们的工作有实质的帮助。或许是公司订的核心价值太过generic,所以变成所有的事情,任何作法都可以和核心价值硬扯上关系,只是看你多会扯而已。但是这样的结果又给公司的文化带来那些贡献,我自己觉得是感受不到的。
虽然对於这篇演讲充满疑虑,但我觉得讲者也提到我蛮认同的点,就是Code review其实就是整个工作过程的一个缩影。Code review不只单纯只是把code写好而已,更是一个重要的沟通管道,可以透过这个过程去理解别人的个性,想法与思考过程,做事的应对方式,甚至也可以展现leadership的skill。
记得Indeed的面试有一关就是Code review的interview,我自己觉得是蛮好的,光是这个小小的过程可以看出你的细心程度,看出你的技术底子,看你在乎什麽不在乎什麽,也可以看你的coaching或mentoring的能力。
不过可惜的是我觉得自己在code review上面做的贡献并没有很多,所以自己在利用code review分析人的行为上面并没有特别的擅长,这也是我下一份工作可以着重练习的地方之一。
<<: Day 27 权限宝石:IAM Group 建立与使用
Summary 承续昨天所说,我们将PivotTable.js的版面调整,让资料区域的表格和图表可...
上一篇漏掉了一个主类别的函数: void anotherInstanceStarted (const...
ProxmoxVE PVE VM 安装 ChromeOS ChromeOS 版本 Download ...
「恶 ... 那条是什麽鬼东西啦!」 「对啊 ... 也太可怕了吧 ...」 「呕! 还很臭欸 ....
前言 这两天主要在研究AR套件及Google maps地图套件的定位和标记功能。AR部分原本我是使用...