为什么要推进技术团队内部决策选型透明化?

Photo by Jason Goodman / Unsplash

我们大脑就像是一个 AI 模型,输入数据后按照设计和程序进行处理,任何一个观点都是由数据你对数据的处理或者推理组成,我们应当更关注做决策的推理过程而不是只要结果,当有人说“我相信 x”、“我认为 x 是正确的”时要问他们“是用什么数据,基于什么逻辑得到这个结论的”。

在做我们经常做技术决策和选型的时候,经常会遇到一种情况,我们会用自己的天赋、过去经验很快下出一个判断,并且我们会默认它是对的且懒于解释和思考。

尤其是经验更年长的与经验更少的人这方面会更加明显,举个典型的例子新入职的应届生小光问五年的高级工程师小明说,为什么我们要用 Kotlin 啊?小明告诉他公司决定用就用。这就是一个典型的无效对话过程,一方面小光可能更喜欢 Go 语言完全不理解为什么要用 Kotlin 去开发,而小明自己也说不明白为什么要用,小光的问题也没被解答。

现实中的情况可能会更加复杂,每做一个决策或者选型是需要说服更多人的。理论上每个人都有权利和义务去了解重要的事情,但两个人以上就必定产生分歧,你可以选择与有分歧的人逐渐消除分歧达成一致,或者被对方的观点说服。

第二是决策人自己也容易偷懒,通过天赋和经验得到的结果虽然大部分情况下是对的,但有时候也会出现经验失效的情况,比如国内典型的 JDK 停留在 8、百度的 GCC 被三体锁了的有趣事件。

所以为了解让分歧更容易达成统一、为了避免决策人自己偷懒,决策选型透明化会是一件很重要的事情,决策透明化是通过问答的方式要求决策人以科学的、系统的、逻辑的方式进行回答,描述决策的过程、用什么数据以什么逻辑得到这个结果。

我们坚信每个人都应该随时随地提问,并且请记住,提问者与被提问者都应该😇保持开放心态的义务!但无休无止的口头辩论是有害的、浪费时间,我们应该透明的、坦诚的在一个可以被记录的地方说出自己的决策过程以及逻辑,逐步达成更好的一致。

需要注意的是,发牢骚和讨论问题、决策权不是一件事情。人们获得决策的权力并不是高人一等而是为了更快完成目标。也不要去私底下聚众猜测一个决策的原因,这样只会发牢骚、抱怨从而加重猜忌、变得更不开放的人。对决策有疑问,可以直接以问答的方式发出来。我其实还蛮喜欢知乎的提问方式,“你如何看待 ...”、"为什么选择 ..." 等等。

比如:“为什么缓存选择 python 作为主要语言?”,这种公允的、科学的、理性的问答一方面能不断解决大家的疑问,消除分歧;一方面可以积累大量的知识,让更新加入的人很快理解到这些为什么会有这些原则。

针对哪些情况我们需要用到决策选型透明化?

小到某个 json 序列化库的引用,大到某个框架,某门语言的选择,都算是技术决策的一部分,那在什么样的情况下,我们必须要采用决策选型透明化的方式去同步我们技术决策选型的思考过程呢?

理论上无论小还是大,无论是库还是框架、乃至语言的选择,只要是引起了分歧与争议的,就应该开放出来,公开的讨论这个问题。透明化的本质是在于减少争议、积累知识。要敏锐的发现和记录同事的疑问,并将其公开出来讨论。

如何开展?

可以内部搭建一个轻量级的论坛或者用一个共享的、实时的文档就可以进行。主要是让大家都能看得到。

新人入职后为什么一定要看一遍透明化相关的帖子?

透明化的推进过程积累的问题是非常宝贵的知识,可能涵盖近几年做出的方方面面的决策、决策过程、当时遇到的问题、如何解决以及解决思路等等,可以非常有效的让新人了解过去几年所发生各种事情、遇到的问题、团队的作风、思考方式等等。