我一直在思考一个问题,为啥国外的好工具/好实践到了国内就变味了。难理解,难使用,用不顺,效果差……总会有这样那样的问题。最近正好看到了一篇文章《离开谷歌的副作用:外面很难找到这么好用的开发工具》,越发觉得之所以用不好,效果差,源头上这些工具可能就不适合你。这里的「你」不是单指某一个公司,而是众多的国内公司。

很多谷歌出来的小伙伴感叹「离开谷歌之后,很难再享受到这些称手的开发工具了」。是的,世界上很少有公司能有谷歌内部那么多牛逼的工具,这是事实。在硅谷几家互联网公司横着跳也许落差没那么大,如果要是回到国内,环境的「水土不服」「难落地」可能是最大的问题,至于「工具不好用」我个人觉得倒没那么重要,顶多不顺手不好用,但不至于呆不下去。

国内的很多公司也都在向外看,这是很好的。之前的老东家也经常到硅谷去「开天眼」,主要是到互联网公司参观、学习、交流,顺便可以和一些大牛聊聊,如果能拉几位大牛入伙那就更好了。

国内外公司软件开发大环境上有很大的差异。主要体现在以下几个方面

「生存」阶段,先活下来再说

国内的众多企业还处在「生存」阶段,更注重商业目标,尤其是互联网企业,生存都是问题。小车能跑就行,至于轮胎是固特异、马牌还是米其林,生存期的很多公司考虑的并不多,即便考虑了,也不是第一位的问题。

国内的企业赚钱难度高

即便国内的企业度过了创业初期,千军万马中活下来了,很多时候赚的钱也都是小钱、辛苦钱,而不是像谷歌摇钱树「在线广告」那样赚得多赚得容易。也就不会长期投入大量的人力物力到基础设施底层工具的建设上。

整体上,我认为国内的很多公司在工具建设基础设施投入上是在上升的,尤其是BAT。简单说,腾讯赚钱了,tapd、工蜂、CoDesign等也对外服务了;阿里赚钱了招了很多牛逼的人开源了众多的框架、工具,比如Druid、Dubbo、RocketMQ、Nacos等等,阿里达摩院也在进行基础科学和颠覆式技术创新研究等;百度的自动驾驶 Apollo RT6 具备了L4 级别的自动驾驶。

如果互联网公司都赚不到钱,又有哪些公司能低成本地赚到钱,去做那些「长期而重要」的事情?我们要允许一部分人一部分产业先富起来,先富的带动后富的,逐步实现共同富裕。

国内的软件开发复杂度没那么高

2015年谷歌已经有20亿代码行,2019年达到25亿行,这在现在也都是很大的一坨。众所周知谷歌采用的是单根代码树,除了几个特殊的业务,比如安卓代码,几乎所有业务都在一个代码库中,且很少用三方代码,不重复。而国内的实情是1)国内没那么高的代码量,2)众多公司采用微服务,一个仓库一个服务,复杂度大幅降低 3)国内大公司除了 BAT,都是近些年快速发展起来的,历史包袱少。所以整体上说,我们是需要很多的工具,但是我们遇到的情况比谷歌简单的多,我们可选的工具列表要比谷歌多很多,我们有更多不错的工具可以选。

每个工具的背后都有大量基础设施的支撑

拔出萝卜带出泥。想引入一个工具,背后可能需要涉及众多的工具,可能需要众多工具的相互打通、数据流转,流程梳理固化,团队配合。另外就是单点、局部的工具优化优先级和重要性都比从根本上系统性地解决效能问题低。不要选择太小众的工具,对公司、团队和个人都没有好处,日后的维护和二次开发都会成问题。

工具的背后是企业文化

当你接受谷歌的工具时,某种程度上你还需要接受工具背后它的文化,这样才能把工具用对、用好。否则很容易「形相似,意有别」。比如在谷歌推广并发扬光大的 OKR,国内几乎成了另外一种形式上的 KPI。

国内公司的考核机制

国内公司的考核机制往往也不利于基础工具的发展。国外做工具升职加薪和做业务并无太大差别,而国内很多公司的考核向业务倾斜,同样都是 CRUD,为啥做业务的 6个月年终奖,做基础工具的4个月年终奖?做业务可以随着风口一起飞,业务增长奖金翻倍,做工具的呢?自己做出工具来,还要能「自举」。自己尝鲜、自己推广、自己运营、自己支撑。业务做不好,客户骂公司,绝对不会骂单独一个人;基础工具做不好内网直接找到人, IM 直接喷。所以选择做内部基础设施做工具链的都是心中有真爱的。

短周期小投入高产出的预期

上了这套流程或者工具,我们能省几个研发人员?或者说同样的人员一个迭代能多做几个功能点?按照我们刚才聊的全流程打通、状态自动流转,数据收集和度量,我们投入5 个人半年能搞定么?在公司人员一定的情况下,研发效能基础工具的改进能改善产研团队的工作体验、提高整体效率和质量在一个相对稳定的水平。在公司人员越来越多的情况下,它仅能保证效率和质量处于一个相对合理的水平,而不至于下降太快。公司人员越多,基础设施建设带来的整体业务价值提升也就越高。激进大体上看是好的,激进一点、着点急上点火才有动力有心思有想法去搞新的东西,但是太激进也待商榷。工具的建设非一朝一夕,需要长时间地积累和改进优化。

怎么才能做好呢

华为:先僵化-后优化-再固化

对于引进先进的管理体系和管理规则,华为花了20亿摸索出来的方法是:先僵化-后优化-再固化

  • 先僵化:一成不变地原样照抄。找准一个学习标杆,别人怎么做你就怎么做,不管自己理解不理解,先来个死搬硬套再说。
  • 后优化:在新制度实施一段时间后,根据实际情况逐步改进优化流程,使之更加有效,以期取得更好效果。
  • 再固化:一旦经过实践证明效果最佳,固定下来以后都按这个执行,不允许随意更改。

上面的方法需要1)巨大的投入 2)强大的执行力 3)恰当的时间点和决策。而且每一步都要经历一些阵痛,若非华为强大的执行力,真不是很容易落地下去。

公司内生

我觉得人员有限、资源缺乏的情况下,公司内生是一个比较好的策略。怎么内生呢?没有钱的公司就用开源软件,有一点的找商业软件,很有钱的自研;投入的资源多,得到的产品体验、功能、个性需求支持也就越多。不同段位的公司得找到与自己适配的策略和实现路径,搭配错了空生烦恼且同时浪费心智。怎么解决这个问题呢?找人吧,可参考《找到能做好研发效能的人》。

全文总结

有些时候不是我们用不好国外的很多工具,而是这些工具根本就不适合你。做很多事情都要结合现实去搞,不能一味照抄国外,当然也不能一味照抄国内的一线大厂,否则很容易造成「没有大公司的命,却得了大公司的病」。脚踏实地日拱一卒也是一种小确幸。