如何做决策 - 从 Go 的一个 issue 说起
本机暂存
<p>事情的起点,是 Go 仓库里一个很普通的 issue(<a href="https://github.com/golang/go/issues/77273">golang/go#77273</a>)。</p><p>在 Go 这种量级的开源项目里,每天都有人提出各种各样的提案:增加一个语法糖、调整一处行为、复活一个曾经被否决的设计……其中有相当一部分,是在<strong>重新提起一个早已被讨论过、并且已经下过结论的话题</strong>。</p><p>对维护者来说,这是一件很消耗精力的事。如果每个人都可以无限次地把一个已经决定的问题重新拉出来辩论一遍,那么决策永远不会真正「落地」,团队会被无穷无尽的回锅讨论拖垮。</p><p>于是,在这条 issue 的讨论里,有人贴出了 Go 官方提案流程(<a href="https://go.dev/s/proposal">go.dev/s/proposal</a>)中的一段话:</p><blockquote><p>一般来说,对于「重新审议此前已经决定的提案」这件事,我们的做法遵循 John Ousterhout 在他那篇 <a href="https://web.stanford.edu/~ouster/cgi-bin/decisions.php">Open Decision-Making</a> 中给出的建议,尤其是其中「Reconsideration(重新审议)」那一节。</p></blockquote><p>换句话说,连 Go 团队这样的顶级工程组织,在「怎么做决策、决策之后还要不要重新讨论」这件事上,引用的也不是某套高深的管理学理论,而是 John Ousterhout —— 也就是写《<a href="https://web.stanford.edu/~ouster/cgi-bin/aposd.php">软件设计的哲学</a>》那位斯坦福教授 —— 的一篇博客。</p><p>那一节的核心其实只有一句话:当有人想推翻一个已经做出的决定时,先问一句 <strong>「你掌握了什么新的信息?」(What new information do you have?)</strong>。如果没有新信息,那就不必重新讨论;如果有,那随时欢迎修正。</p><p>这套关于「决策」的方法论,远不止「要不要重新讨论」这一个点。Ousterhout 在这篇文章里,系统地讲了他在两家创业公司里摸索出来的一整套**开放式决策(Open Decision-Making)**框架。</p><p>下面是这篇文章的完整翻译。</p><hr><h1 id="开放式决策"><a href="#开放式决策" class="headerlink" title="开放式决策"></a>开放式决策</h1><blockquote><p>作者:John Ousterhout,斯坦福大学计算机科学系教授<br>原文:<a href="https://web.stanford.edu/~ouster/cgi-bin/decisions.php">Open Decision-Making</a><br>最后更新:2021 年 6 月 8 日</p></blockquote><h2 id="引子"><a href="#引子" class="headerlink" title="引子"></a>引子</h2><p>在创办并领导两家创业公司的过程中,我亲历过形形色色的决策:有些成功,有些惨败。回过头看,那些好与坏的结果背后,其实有一套可以总结的规律。我逐渐形成了一套自己偏爱的决策方法,它处在「集权 — 开放」这条光谱中相当靠近「开放」的那一端:与其依赖少数几个人拍板,不如尽可能去汇聚许多人的集体智慧。</p><p>很多管理者对这种做法心存疑虑,担心它低效、担心自己失去掌控。但我的经验恰恰相反:</p><ul><li><strong>达成共识,往往比你想象的要容易。</strong></li><li><strong>领导者其实不需要把决策攥得那么紧。</strong></li><li><strong>尽早把争议摆到台面上,反而能减少后期的冲突。</strong></li></ul><span id="more"></span><h2 id="一个好的决策流程,要达成什么目标"><a href="#一个好的决策流程,要达成什么目标" class="headerlink" title="一个好的决策流程,要达成什么目标"></a>一个好的决策流程,要达成什么目标</h2><p>衡量一个决策流程的好坏,有三个目标:</p><ol><li><strong>做出尽可能好的决策。</strong></li><li><strong>高效地做出决策。</strong></li><li><strong>为后续的执行赢得认同(buy-in)。</strong></li></ol><p>这三个目标之间是有张力的、会互相牵扯,但任何一个都不能被彻底牺牲掉。</p><p>为什么效率重要?因为如果你非要等到信息百分之百完备才肯下决定,那等待本身的代价会高得离谱 —— 现实世界里,你永远不可能掌握全部信息。</p><p>为什么认同重要?因为一个无法被执行的决策,等于白做。如果做决定的人和执行的人各想各的,那么之前所有讨论的功夫都打了水漂。</p><h2 id="做出一个决策的四个步骤"><a href="#做出一个决策的四个步骤" class="headerlink" title="做出一个决策的四个步骤"></a>做出一个决策的四个步骤</h2><p>我把整个过程拆成四步:<strong>广泛收集意见 → 推动达成共识 → 清晰地宣布 → 没有新信息就不再翻案。</strong></p><h3 id="第一步:收集意见(Input)"><a href="#第一步:收集意见(Input)" class="headerlink" title="第一步:收集意见(Input)"></a>第一步:收集意见(Input)</h3><p>广泛地收集意见,既能提升决策的质量,也能提升大家的认同感。</p><p>我推荐一种「<strong>宽 — 窄 — 宽</strong>」的会议节奏:</p><ul><li>先<strong>宽</strong>:召集很多人一起头脑风暴,把各种可能性都摆出来;</li><li>再<strong>窄</strong>:把那些最棘手的权衡,交给一个小组去深入啃;</li><li>最后<strong>宽</strong>:把小组的结论再拿回到大群体里复审一遍。</li></ul><p>这里有一条很关键的原则:<strong>意见一定要在它还能改变结果的时候去征集。</strong> 如果你已经基本想好了,才走个过场去「问问大家的意见」,那不叫征集意见,那叫「索要认同」—— 大家心里都清楚,也会因此反感。</p><p>另一条反直觉的建议是:<strong>尽早把那些最有主见、意见最强烈的人拉进来</strong>,而不是把争议往后拖。很多管理者本能地想避开「刺头」,但越早暴露分歧,处理起来越容易;拖到最后,分歧只会变成爆炸。</p><p>当然,广泛征集意见也绝不能成为「决策拖延」的借口。</p><h3 id="第二步:达成共识(Consensus)"><a href="#第二步:达成共识(Consensus)" class="headerlink" title="第二步:达成共识(Consensus)"></a>第二步:达成共识(Consensus)</h3><p>把关键的人聚到一起,讨论,然后投票。具体做法:</p><ul><li><strong>先把问题和判断标准讲清楚</strong>:我们到底在决定什么?用什么标准来衡量好坏?</li><li><strong>把所有论点都摆到明面上</strong>,哪怕是你自己认为错误的论点,也要写出来、让大家看见;</li><li><strong>禁止重复别人已经说过的论点</strong> —— 不要靠「谁嗓门大、谁说得多」来取胜;</li><li><strong>投票</strong>:给出清晰的、非此即彼的选项,每个人的票等值。</li></ul><p>我个人倾向于<strong>公开投票</strong>,而不是无记名投票。</p><p>投票之后,会出现三种结果:</p><ol><li><strong>形成了清晰的共识</strong> —— 那就宣布结果,往前走。</li><li><strong>没有形成共识</strong> —— 这时候由管理层来打破僵局、做出裁决,而不是硬逼着大家「假装达成一致」。</li><li><strong>形成了一个管理层认为是错的共识</strong> —— 管理者<strong>有权</strong>推翻它,但这件事应当极其罕见,而且必须给出充分的理由。</li></ol><p>关于第三点,我有一段很惨痛的自我反省:<strong>在我职业生涯里几乎每一次「推翻团队共识」的决定,事后都被证明是我错了。</strong> 唯一一次成功的例外,是我们招了一个面试表现很差、但入职后表现极其出色的工程师。</p><p>这让我得出一个信念:<strong>最好的决策是被「识别」出来的,而不是被「制造」出来的(the best decisions are recognized, not made)。</strong> 你的任务不是凭空创造一个答案,而是营造一个环境,让那个本就正确的答案自己浮现出来。</p><h3 id="第三步:宣布(Announcement)"><a href="#第三步:宣布(Announcement)" class="headerlink" title="第三步:宣布(Announcement)"></a>第三步:宣布(Announcement)</h3><p>把决定<strong>明确地公之于众</strong>,消除一切意外和「我怎么不知道」的情况。</p><ul><li>对参与决策的核心团队讲清楚;</li><li>把它<strong>记录下来</strong>(比如写在 wiki 上);</li><li>用邮件再跟进一遍;</li><li>对于影响面大的决策,要广而告之。</li></ul><h3 id="第四步:重新审议(Reconsideration)"><a href="#第四步:重新审议(Reconsideration)" class="headerlink" title="第四步:重新审议(Reconsideration)"></a>第四步:重新审议(Reconsideration)</h3><p>对于一个<strong>确实错了</strong>的决策,要乐于、并且迅速地去纠正它。</p><p>但是,对于一个已经定下来、并没有错的决策,<strong>在没有新信息的情况下,不要反复重开</strong>。我应对这类「我想再讨论一下」的标准回答永远是那一句:</p><blockquote><p><strong>「你掌握了什么新的信息?」(What new information do you have?)</strong></p></blockquote><p>如果没有新信息,就不该重新讨论;如果有,那随时欢迎。</p><p>而且你会发现:只要前期的意见收集做得足够好,需要事后翻案的情况自然就会大大减少。</p><blockquote><p>(译者注:这一节,正是本文开头那个 Go issue 所引用的部分。Go 官方的提案流程,处理「重提旧议」的方式,就是照搬了这套逻辑。)</p></blockquote><h2 id="几个正面的例子"><a href="#几个正面的例子" class="headerlink" title="几个正面的例子"></a>几个正面的例子</h2><p><strong>1. Electric Cloud 的招聘流程。</strong><br>每个面试官把对候选人的优点和缺点列在白板上,然后用一个 7 分制来投票。这里最关键的,是「<strong>positive(5 分,正面)</strong>」和「<strong>enthusiastic(6 分,热切支持)</strong>」之间的那道分界线 —— 如果一个候选人<strong>一个 6 分都没拿到</strong>,就不发 offer。事实反复证明:那些拿了低分的候选人,最后几乎都会让你后悔。</p><p><strong>2. 「眨眼测试」(the blink test)。</strong><br>对于像「给产品起什么名字」这类问题,与其反复纠结,不如让大家凭第一反应、凭直觉快速表态,借此迅速把一长串候选项砍短。</p><p><strong>3. 高频投票(我们戏称为 "ouster-votes")。</strong><br>我习惯用大量快速的投票来感知群体的真实倾向 —— 小到团队例会,大到全公司大会,甚至上千人的行业大会现场,我都用过。</p><p>我记得有一次选公司 logo,一位员工一眼就看出某个候选方案「长得像一只羊的屁股」,一句话就帮公司避开了一个糟糕的选择。<strong>而且我发现,群体越大,投票的结果往往越好,大家的认同感也越强。</strong></p><h2 id="几个反面的例子"><a href="#几个反面的例子" class="headerlink" title="几个反面的例子"></a>几个反面的例子</h2><p><strong>1. 害怕反馈(Fear of Feedback)。</strong><br>缺乏安全感的管理者,会本能地压缩意见征集的环节,直接宣布结果,并且抗拒事后的任何批评。结果就是:又做出了糟糕的决策,又积累了团队的怨气。</p><p><strong>2. 暗箱决策(Stealth Decision)。</strong><br>管理者中途叫停流程,悄悄地把决定做了 —— 通常是为了<strong>回避一场公开的「推翻共识」</strong>。但消息总会走漏,大家会因为两件事而愤怒:一是自己的意见被无视了,二是这种偷偷摸摸的做法。</p><p>更好的做法是:把投票走完。如果你确实想推翻它,那就<strong>公开地推翻</strong>,给出解释,必要时道个歉。光明正大,远比鬼鬼祟祟好。</p><p><strong>3. 草率收场(Premature Conclusion)。</strong><br>讨论得含含糊糊,就宣布「好,那我们就这么定了,大家都同意吧?」—— 结果很多人一脸懵,事后才发现自己「被同意」了。</p><p>正确的做法是:先把选项理清楚,然后用<strong>直接的提问</strong>去快速确认大家是否真的达成了一致,而不是靠模糊的氛围去「脑补」共识。</p><h2 id="这套方法什么时候管用,什么时候不管用"><a href="#这套方法什么时候管用,什么时候不管用" class="headerlink" title="这套方法什么时候管用,什么时候不管用"></a>这套方法什么时候管用,什么时候不管用</h2><p><strong>管用的场景:</strong></p><ul><li>组织文化鼓励<strong>建设性的分歧</strong>,大家愿意把话说开;</li><li>成员之间<strong>共享同一个组织目标</strong>;</li><li>组织规模<strong>较小</strong>时,契合度更高。</li></ul><p><strong>不管用的场景:</strong></p><ul><li>高度<strong>政治化</strong>的环境 —— 投票会沿着「团队 / 派系」的边界站队,而不是就事论事;</li><li>一个<strong>不欢迎批评</strong>的组织 —— 对此我的建议很直接:离开这样的组织。</li></ul><p>另外,这套相对「重」的流程,最值得用在那些<strong>重要的、影响面广的、或者难以逆转的决策</strong>上。至于那些影响很小、随时可以改回来的小决策,快速拍板就好,错了再改。</p><h2 id="一种相反的风格:独裁者"><a href="#一种相反的风格:独裁者" class="headerlink" title="一种相反的风格:独裁者"></a>一种相反的风格:独裁者</h2><p>与「开放式决策」完全相反的,是「独裁者(Dictator)」风格 —— 极少征集意见,频繁推翻他人。</p><p>这种风格,只适合极少数拥有超凡直觉的天才型领袖,比如 Steve Jobs、Lee Iacocca。对于他们,我有两个一直没想明白的困惑:</p><ol><li><strong>他们到底是怎么获取足够信息的?</strong> —— 我猜,他们其实是在你看不见的地方,用别的方式默默地收集了大量信息。</li><li><strong>为什么那么多有才华的人,愿意留在他们身边受气?</strong> —— 大概一方面是「权力光环」的吸引,另一方面,是一个由单一意志贯彻到底的组织,确实有一种罕见的<strong>清晰感和一致性</strong>。</li></ol><p>两种风格(开放 vs 独裁)其实都能带来「组织内部的高度一致」。但我坚信:<strong>能成功扮演独裁者的人极少极少</strong>,因为那要求你几乎永远是对的 —— 这对绝大多数人来说,是不可能的。</p><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>开放式决策,依靠的是<strong>集体的智慧</strong>,以及一套<strong>非层级化</strong>的流程 —— 答案不是从上往下压下来的,而是从充分知情的讨论中自然生长出来的。</p><p>领导者并没有袖手旁观:他通过快速投票来感知群体、通过果断地打破僵局来维持效率。</p><p>而这整件事里<strong>最难的部分</strong>,恰恰是去学会<strong>信任这个流程</strong>:</p><blockquote><p><strong>管理过程,而不是管理结果;结果自然会照顾好它自己。(Manage the process, not the outcome; the outcome will take care of itself.)</strong></p></blockquote><p>最后,开放式决策带来的,远不止「一个更好的决策」而已。它还会反过来强化你的<strong>组织文化、社群归属感,以及那种「这是我们共同的事」的责任感</strong>。</p><hr><blockquote><p><strong>译者后记</strong>:从一个 Go 的语法提案 issue,顺藤摸瓜摸到 John Ousterhout 这篇写于多年前的博客。我们写代码时讲究「为什么这么设计」,其实「怎么做决定」同样是一门需要刻意打磨的工程。下次当你想推翻一个已经定下的方案时,不妨先问自己那句话:<strong>我,掌握了什么新的信息?</strong></p></blockquote>
同分类推荐文章
- Seven Player:Windows上播放115网盘视频的增强工具 (2026-06-09 00:06:47)
- SmartPerfetto 2026.05.17-06.04 更新:Smart 模式、证据规则和四条 Runtime (2026-06-04 12:00:00)
- 一个冷门的速查日历方法 (2026-05-27 16:22:00)
建议继续学习
- 看源代码那些事 (累计阅读 10,589)
- 介绍几个QQ开源项目及协议下载 (累计阅读 10,215)
- MVC演化史 (累计阅读 5,532)
- 程序员不是包身工 (累计阅读 4,993)
- 用Unix的设计思想来应对多变的需求 (累计阅读 4,905)
- 多些时间能少写些代码 (累计阅读 4,843)
- 还记得这些 Linux 发行版吗?(四) (累计阅读 4,525)
- 周末闲谈:C and C++, why use c++? (累计阅读 4,473)
- 为什么GPL是更好的开源许可证? (累计阅读 4,474)
- 程序员如何保持优秀 (累计阅读 4,374)