125|Facebook的黑客精神
文章目录
今天我们说到的 Facebook 黑客精神,并非是指 Facebook 培养了一堆黑客,有很强的黑科技,并在全世界各地研究各种安全漏洞,做出各种黑客应该不应该做的事情。在这里我们讲的黑客精神其实是 Facebook 对待软件开发的态度和方式。
Facebook 的创始人马克·扎克伯格有一句名言:“迅猛而动,突破前行”(Move Fast and Break Things)。这句话也成为了 Facebook 的座右铭。在 Facebook 的公司里,到处都贴着这句话。
这句话非常有名,它甚至深深地影响了整个 Facebook 对待软件开发的态度。那么这句话到底是什么意思,它带给 Facebook 的到底又是什么结果呢?
“迅猛而动,突破前行”的意思在扎克伯格看来,就是软件开发不要想太多,写出来的东西就发布出去,哪怕写出来的东西不太对,这里那里可能会有问题。如果出大问题的话,赶紧修好就可以了。
扎克伯格认为,让市场上见到东西的速度是很重要的。一个东西如果拖着,等久了可能就晚了,所以,他并不认同传统企业,乃至某些类似谷歌这样的互联网公司对待产品和代码的态度。
他觉得大家每个人就应该像黑客一样,在代码里乱改顺便把新功能实现了。然后可以快速地给用户用,这是一条正确的道路。
这是公司创始人的态度,并且是在公开场合多次强调的态度,所以它在内部的影响力可想而知。
于是 Facebook 内部有“Hack Everything”的传统,代码很多时候是怎么快怎么来,东西做出去如果有 Bug 再修,如果把已经有的功能搞坏了,修回来就可以了。这基本上在很长一段时间里面是整个 Facebook 公司的传统了。
这个传统是不是好,从软件开发的角度上来说,一个软件开发的团队,如果一直靠着“Hack Everything”的态度,不好好做架构,不好好测试一下软件,就直接把产品放出去,我个人是很难相信这样的做法是可以持久发展的。
因为软件代码的质量本身也是软件可以持续发展下去的基础。如果不好好维护,慢慢的,加一个新功能就会越来越难了。为了加一个功能付出的代价也越来越高了,有可能这个代价高到无法估计。
当然很长时间里,尽管业界很多人都认为这个想法做法是不对的,在 Facebook 内部这个做法一直大行其道。而这种做法也反映到了 Facebook 开源的产品的质量上。基本上,Facebook 开源出来的很多产品的代码质量是堪忧的。
比如说著名的 Hive,这是 Facebook 早年投了很大力气开发的 SQL on Hadoop 的产品,它的代码我看过,“快糙猛”绝非是一个谎言。Hive 这个开源项目的代码质量参差不齐,很多地方感觉像是从来没有在工业界正经写过代码的人写的,看起来真的有一种让人不舒服的感觉。
当然除了 Hive 以外,Facebook 的另外一些开源项目的代码质量也同样受到了质疑。这些代码质量差的开源项目,和谷歌极少数虽然开源,但是代码质量犹如艺术一般的项目比起来,我只能说,真的很难想象为什么这是两家齐名的公司,代码质量却大相径庭。
在很长时间里,我们其实并没有注意到 Facebook 内部是不是真的为这种黑客精神付出了代价。当然我个人是一直坚定地相信这个代价是迟早要付出的,而且等到发觉的时候,代价可能已经很大了,大到需要付出难以承受的成本才能够修复了。
不过,2014 年在 Facebook 的 F8 开发者大会上,做 Keynote 的扎克伯格,把自己说过的这句话改了。新的版本变成了: “迅猛而动,稳定架构”(Move Fast With Stable Infra)。简单一点来讲,整个基础架构需要足够稳定的前提下 Move Fast。好了,扎克伯格终于改变主意了,再也不说突破前行了。
当整个代码被无休止的“Hack”,天天“突破前行”以后,现在,整个 Facebook 面对的东西是没有什么不能被突破的。怎么办呢?老老实实回头该补的补,该修的修吧。不补不修,房屋天天漏水,还怎么装点门面迎接客人啊。
这种修补的代价是非常巨大的。我在微软的时候,见过一些开始写得乱七八糟赶时间赶进度赶出来的代码,代价就是这些代码要一个模块一个模块推倒重来,在上面修修补补是没有办法修好的,这需要很多的人力物力。我参与过的一个项目投入了 10 个人,做了 18 个月,做完之后总算是看起来能够看了。
我一直有一个困惑,到底是什么让扎克伯格相信他自己的黑客理念呢。只要发布产品足够快就不用付出代价吗?扎克伯格是一个非常聪明的人,而且他周围应该也不缺人告诉他,这个想法的问题。那么在这个背后,扎克伯格想的到底是什么?这个问题我一直没有太多的答案。
一个可能是早年创业的时候,刚开始运转的话,扎克伯格的想法是对的。一个公司如果连生存问题都不能解决好,那么代码质量到底有多重要,也只能是以后的事情了。
虽然说谷歌从一开始连生存问题都没想好怎么解决的时候,就对代码质量要求很高,但是谷歌毕竟是个例。无论如何,有可能是扎克伯格的创业公司的经验和梦想在 Facebook 变大以后依然在,并未与时俱进。
另外一个可能是扎克伯格从来没有在大公司实践过,所以他固然是一个天才,却不知道在什么样的时候,这种黑客做法会对公司造成伤害。
这种伤害可能还是非常巨大的,所以在 2014 年,他作为公司领袖,才必须再一次通过他自己的嘴巴告诉大家,他错了。
但是不管怎么样,我们必须看到,榜样的力量是无穷的。因为扎克伯格的观点,很多硅谷更新的创业公司做法都是快糙猛,当年的谷歌那样对待代码的精神,对于现在的公司来说,已经荡然无存了,这在一定程度上造成了开发人员平均水平的严重下降。
扎克伯格在 Facebook 倡导的黑客精神,如果只是影响了自己公司,那么破坏力还小一点。如果影响了周围后来的很多公司,这种破坏力,我有点不好估量了。所以,虽然 Facebook 今天已经强调一个稳定的架构是很重要的,但是很多后来的公司其实并没有听进去。
而且,从 Facebook 内部看,这个黑客精神其实仍然根深蒂固。比如说在 Facebook 的很多组里进行绩效考核的时候,会先看一个人到底写了多少行代码,行数多的人比写的行数少的人,绩效考核就会更高。这种纯粹以代码量来考核的做法,无疑是当年“迅猛而动”的遗留问题。
代码质量问题是每个大公司有效率分工合作开发的基础。很多时候,代码质量问题,也是从一个创业公司到一个成熟大公司的过渡过程中,一个巨大的挑战。不少公司都会选择严格对待代码质量问题。
但是 Facebook 却选择了一条截然不同的道路,它们提倡代码的黑客精神。这给 Facebook 自身的发展带来了很多负面影响,同时,也因为 Facebook 的影响力,这给整个互联网行业都带来了不好的风气。Facebook 的黑客精神所造成的负面影响,不容易消除。
文章作者 anonymous
上次更新 2024-02-08