马佳 matta 游埃及的时候,在金字塔前碰到当地人,对方说她戴头巾方式不对,给她解开重新戴,当地群众很热情是不是?这个过程这位大哥一再声明是“免费”的。戴好之后,大哥开始讨要 100~200 元的“服务费”。这时候大哥对他之前一再声称的“free”似乎失忆了。可以看出来,从“免费”到“收费”的切换,对他来说内心是毫无波澜的,可能他所理解的“生意”就是这么做的。马同学接着又走了一段路之后,迎面迎来另一个当地人,一边说着“free”一边给她解头巾。熟悉的味道熟悉的配方,这次马同学没有再上当。

遇到这种非理性的坏人,其实挺无奈的。曾经我在工作中也遇到过这样的坏人。

1. 大龄儿童

当时要做个数据分析,因为集团内的数据采集系统对数据安全设计了比较多的权限关卡,我们组找来数据仓库组和数据分析组的人一起开了一小时的会议,最后确定由他们提供数据,我们后端的 L 君根据需求输出分析报表。

两周后,要开始对接数据做开发了,L 君开始抱怨说很麻烦,没法做。L 君表现得对开会时确定的方案一无所知。实际上这段时间在对接群里拿过数据样本,了解过具体的需求。从满口答应到摊手摆烂对他来说内心是毫无波澜的。花费那么多同事的时间讨论好的方案,要推倒重新调整也不是不能,可是哪怕说一句“我的想法改变了”吧?他没有,他表现出来的是这事他头一天知道。没有基本事实作为上下文,还能怎么讨论呢?

另一回,关于 token 的有效期这件事,我说,不要给服务端的失效时间,因为客户端时间不同步,给有效时长就可以了。换个正常人能秒懂的道理,并且有微软和 Google 的现成样本可抄。这事跟他沟通了半小时,得到一句“微软和 Google 也不一定就是对的”。谁碰上这样的铁头不头疼呢?他只能理解自己内部的逻辑闭环,不能理解外界的状态。整个世界得围着大龄儿童转动才算对。

这就是一个非理性的坏人——协商好的事当作没发生过,客观的事实他无视。你无法用正常人的逻辑去推测一个大龄儿童的脑回路。

在此之前我已经跟 L 君在两个创业公司里一起共事过。这种缘分让我有机会两次亲眼目睹他跟两个老板拍桌子发火后愤然离职。至于为什么在我们项目组并入集团后,我还去把他招进来?那当然我自己犯贱了!当时的部长对我说,你招人不能光靠 HR,要自己想办法。于是,我在尝试拉过两个前同事失败后,不得已把他拉进了团队。

充满戏剧色彩的是,他两次跟两位前老板说过的话,在我和他之间又再度重现了。

跟第一个老板的对话:问到项目进度,L 君的回答是:“我给你们写了这么多代码?……”。然后离职。

跟第二个老板的对话:当问到“你写的代码都不测试吗?”L 君的回答是:“谁能保证自己写的代码完全没 bug?” 然后离职。

拿代码量说事很幼稚不说。一个对社交礼仪有意识的人,会尽量避免浪费与自己合作的人的时间,尽量不麻烦别人,有问题尽量在自己的环节中解决。bug 被别人发现难道不是一件很丢人的事吗?代码一提交就说“改好了”,一发请求就报错。甚至 log 都不看一下,一问就说“改好了”,打开 k8s 的 log 一看就是已经清楚明白地报错了,只要眼睛没有失明就知道已经抛出异常了。这种不可思议的事情几乎隔几天就要经历一次。我感觉自己在跟一个实习生打交道,而不是一个工作了十多年的老程序员,甚至不像一个具备基本逻辑思维的成年人。

前两份工他都只干了一年。在第三次共事时,他在面对我的时候有进步了,他学会了 N+1,他不主动提离职了,他说“要不然你 Fire 我吧”。对,这是原版复制的原话。哈哈哈!我在他失业一年多 + 美股亏掉 7 万美金的时候,把他内推进二线大厂来工作,这就是我得到的回报。

2. 又蠢又懒

另一个非理性的人是安卓端的 K 君。刚来的时候主动要求“代码审核”,似乎对代码质量要求很高是不是?当你审查他代码时他的反应是“满足需求就可以了”。

比如一个需求是这样:每次新版本要显示一个小红点,用户点击后消失。

他的做法是:每个新版本用版本号作为 key 去保存是否点击过红点的布尔值。我说这样不对,你再想想。我没有直接说理由,我认为一个工作了十多年的人很容易想到:

  1. 当发布了 100 个版本之后,之前版本保存的 99 个 key-value 都是冗余的,不必要存在的;
  2. 只需要把用户点击过的版本号作为 value 保存就可以了,一对 key-value 就可以解决问题。

只需要多花 10 秒种思考,工作量接近 0,一个初中生级别的智力题很难吗?既满足了需求又优雅地实现不好吗?

其实打工是无风险的获利方式。老板承担了投资风险,打工人每个月稳定拿薪水,同时给自己积累解决问题的经验。如果抱着“满足需求就可以了”心态,表面上是无脑省事了,换个对代码质量稍微认真一点的团队就呆不下去了。这都还没走到谈责任心的边上,就是纯粹的又蠢又懒。无数次“满足需求就可以”之后,毫无疑问会留下一堆屎山代码。如果干了十年跟干了一年的经验是一样的,就不要抱怨社会淘汰中年打工人了。

3. 软弱的人

从业以来,由于是技术岗,其实没什么机会接触到坏人。如果是企业主或者销售员角色,他们可能一天所见识到的坏人比我一辈子都多。在大部分合作过的同事中,即使有争吵,至少是有道理可讲的,是基于现代文明的,多少能够换位思考的。在大家都是理性人的情况下,能够避免低效的沟通。不过只要职业生涯拉得够长,又或者因为我司的段位不够,加上我自己足够蠢,就有机会遇上不具备正常逻辑的人。仔细地想了想,纯纯不讲武德的坏人也就这两位了。上天可能为我安排了人生中应当有次一劫。要认清真实的世界,好的坏的都要经历过才算完整。

另一方面,我是个软弱的人,不擅长跟坏人打交道。

很多次,我在对方明显说假话的时候不敢当面撕逼。比如开会时 K 君说内部处理 EWS 邮件的 C 包没有做编制 XML 文件这件事。我压下嘴边的话“跟你之前讲的不一样”,我心里有个声音“让他赢,停止争吵吧”。为了让团队合作关系表面上不那么难看也好,为了保持团队不瓦解,凑合着有份工作就继续保持工作继续混饭吃也好。两个人都是我招进团队的,如果他们不行,那当然是怪我自己当初识人不慧,入职评价表上我给他一顿猛吹不是打自己的脸么?

本来就是很微小的团队,基本上算是个失败的项目,在主体一千多人的背景里没什么话语权,招人换人都是很费周折的事,不如初创小公司灵活,那时候跟老板打个招呼就可以了,不需要走办公流程。我进集团半年后才招到一个后端开发,不到半年把他开了,重新招入后面这位“一开始就明知很难搞后来果然很难搞”的 L 君。

为了停止精神内耗,最后我选择了主动离职。给公司的离职理由是,项目做了四年半做累了,只字不提真正的原因,给已经支离破碎的团队关系留下一点体面。作为一个躲避冲突的人,我也不想费心过多解释。团队在我离开半年后解散了。

4. 一点经验

网景的创始人 Marc Andreessen 在一篇文章中谈到“如何招聘优秀的人才”。换句话说,我愿意与什么样的人共事?

除了足够聪明,具备必要的业务能力之外,他认为以下三个要素很重要:

  1. 驱动力 - 能够自我激励去克服困难,在不被要求的情况下达成摆在面前的任何目标
  2. 好奇心 - 对自己所工作的领域有强烈的好奇心,保持更新知识
  3. 道德感 - 诚实,在不知道的问题上不会胡说八道(我的补充拓展:)
    1. 在已经协商一致的事情上保持意见同步,而不是假装失忆以闹取胜
    2. 避免写糟糕的代码应付了事,不给继任者挖坑
    3. 尊重客观事实,不说谎,不试图掩盖错误
    4. 尊重其他同事的时间,不要希望别人体谅自己的困难和错误,这很幼稚

如果说从坏的事情中能够得到什么经验教训的话,我希望是以上这些。

5. 逃跑的人生

Xikang 发过一个 vlog。他说,“回顾自己的一生,别人一欺负我,我就跑了。好像一直都在逃跑”。在外企的时候,遇到空降的新领导及其带来亲信,因为受排挤,离职走了。因为对国内内容审查和洗脑教育的担忧,移居海外;因为泰国为难中国人的签证,不愿意多花钱和受气,离开了。继续前往大马和坡县寻找新的目的地。

他说躲避冲突是自己“混的一般般”的原因,但也找到了自己喜欢的自在的生活方式。我相信当他有一天达到了自己的目标后,也仍然会有不如意的地方。但是,人生不就是朝着自己理想的生活状态不断追寻的过程吗?也许“不满意”是一个长期的状态,区别可能只是“有点不满意”和“很不满意”。

不管是躲避的方式也好,迎头猛击的方式也好,只要能和自己的内心自洽,那就是对的。目标可能永远无法到达,但前往目标的过程,也许就是人生的全部。

有些困难,如果不能打败,那就躲开好了。