喜欢写代码、讨厌内卷:一个37岁中年程序员的开源故事

2021-11-10 12:06:18 浏览数 (1)

“我马上就要 37 岁了,我也不清楚自己到底还能坚持奋斗几年,指不定再干几年突然就失去动力了,所以我不想把时间浪费在大公司里和别人拼看谁更能熬。”

2021 年 4 月,张铎在自己的知乎上发布了一篇文章《关于离职的一些复盘》,官宣自己从待了 5 年的小米离职,加入神策担任首席架构师。文章里,张铎详细回顾了自己离职的原因和得到的教训,并非常直白地指出了小米组织架构和管理人员存在的问题,直白到让人好奇“这真的不会被公关找过来?”的程度。

这篇文章在知乎上收获了近千赞同和 100 多条评论,很多知乎网友在评论中直呼“铎神真性情中人”。毕竟敢于直接跟公司领导“掀桌子”的人很少,敢把“掀桌子”的过程记录下来并公开发出来的人就更少了,何况这公司也不是什么没人知道的小公司。但其实,这只是张铎习惯的一种复盘和表达方式而已,他经常提到这样一句话:“成功的经验难以复制,失败的教训则可以避免。”

不管是工作经历,还是参与开源的经历,张铎认为自己都还没有所谓的最有成就感或最有挫败感的事情。前者,他觉得只有等到真的决定说这个事情不做了,比如退休了,才能盖棺定论,看最有成就感的事是什么;后者,对他来说只要没做成肯定会想各种办法去做,最后实在做不成的,只要分析了原因也就认了。“比如 16 年我去了小米没有去头条,这个事情你怎么看都觉得很亏,对吧?但是我后来分析过,如果把我放回到那个时间点,根据我当时已知的信息,你让我选 10 次,估计 9 次都是选小米不会选头条。所以选错了就错了,没什么好执念的。”

近日,InfoQ 有幸采访到了张铎,目前他在神策还处于适应阶段,不过也已经开始着手推进将开源项目 Impala 的内部改进梳理合并回社区,以及公司内部开源文化培育等工作。在两个多小时的交流里,我们聊了他待过的几家公司、他在开源社区做的事情、他所看到的国内开源发展现状,也聊到了他写的离职复盘文章。对于到底选大公司好还是选小公司好,他也基于自己的亲身经历给出了非常实在的建议。

1 “每个人都会有自己的人设”

张铎在知乎上有 2.5 万粉丝,回答过的问题数量一共有 145 个。翻一翻张铎在知乎上回答过的问题,就能很容易看出来,“直白敢言”是他一直以来的风格。虽然笔者在采访前对此就有所耳闻,但采访中仍然好几次因为他的回答之实在而惊讶。

当被问及“在神策是否不会像在大公司那么折腾”时,张铎表示:

“本质上来说,大公司有很多时候会出现人比事多的情况。这个是没法避免的,即便整个大公司看起来事很多干不完,但因为大公司很大,在很多局部总会出现人比事多的情况。人比事多怎么办?你怎么证明自己比别人强?这个时候靠做事就不够了,因为反正事不够,大家都能做,那怎么办?就开始拼别的方向,比如你是不是向上管理做得更好,或者加班时间更长、文章写得更漂亮,又或者做 PPT 你做 5 页我做 50 页,最终就发现开始卷起来了。 你在小公司,反正在神策目前这个阶段,互相补位都补不过来,业务发展很快,客户越来越多,产品和技术一堆活干不完。没人会去想着搞什么向上管理,老板也懒得让你向上管理,你别出篓子就行。所以在这边就不存在要费神想半天汇报关系、要单纯地证明我做得比你更好等这种情况,没有功夫考虑这些事情。

而关于“选大公司还是选小公司”的问题,张铎的回答同样十分直白:

“反正所有年轻人问我的时候,我永远都是建议年轻人,你刚毕业的时候去大公司看看,不要先到小公司。大公司各种事情都比较正规,会有很正规的流程框架来培养你,你能看到整个公司正常运转模式下应该是什么样的,你也能知道比较规范的代码是怎么写的。首先得把这些基本的东西练好,把整个技术品位培养好,然后再去小公司,你才能知道小公司很多做法是不得已的,因为它资源不够,人的能力也不行,很多事情就只能糙着来,但并不代表这些做法就是对的。 年轻人进小公司发现各种乱糟糟的,最后可能觉得好像就应该是这样,一旦品位坏了之后,整个思维就很难转过来了。当然有一类人例外,就是本身在学校的时候就很有想法,想着要自己出来创业,不想搞技术的,那就可以直接去小公司。因为这类人最需要的是摸清楚一个创业公司、自己当老板,需要懂些什么、有哪些事情需要管,这些去大公司肯定学不到。大公司很多事情都有人帮你做好了,只有在小公司才能发现当老板有多少麻烦事情。不过这类人很少很少。对于大部分想要走技术路线稳步发展的年轻人,我还是建议先去大公司。等整个品位都建立得比较好了,知道做事应该怎么做,技术也练得不错了,这时候再按照你的喜好,看是换个大公司继续做,还是换个小公司,都可以试一下。”

张铎认为,每个人都会有自己的人设,这也对应了他怎么说话、怎么做事。而他一直维持的人设就是比较“敢说”,所以一直这么说话,大家也不会觉得奇怪。他特别强调,虽然“敢说”,还是会遵守一定的底线,比如前面那篇离职复盘文章里,一不会提具体的人名,二不会用很明确的主观评价来给人定性。不过他不确定这种发言风格会持续多久,“或许等哪天所处的位置更高了,就不能这么说话了。”

“开源”也是张铎身上非常重要的一个标签,而这于他同样是一个“人设”。早在 2015 年,张铎就成为了大数据领域知名开源项目 Apache HBase 项目的 Committer,2016 年成为 Apache HBase 项目在大陆的第一位 PMC 成员;2019 年成为 Apache HBase 项目的主席,同时也是 Apache Hadoop 项目的 Branch Committer;2020 年成为 Apache 软件基金会 Member。其中,2018 年在 Apache 软件基金会全球近 7000 名 Committer 中,张铎的贡献数量排名第三,全年一共提交了 1956 次 Commits。

当时外媒专门对 2018 年 Apache 软件基金会贡献数量排名前五的 Committer 做了一个采访

来源:

https://techmonitor.ai/techonology/software/apache-top-5

对张铎来说,开源最吸引他的地方就是能够尽情地写代码。

“如果没有开源,公司里面我这个级别以上的人,基本不可能再写代码了。因为一天到晚各种各样的事情缠着你,一天到晚都是会。原来在小米的时候,后面我也不太敢写公司的代码了,因为可能写不了几行就被人拉走了,然后其他同学也不知道该拿我负责的这块代码怎么办,是接着写还是重新写,肯定会 block 大家的进度。这就导致非开源的代码我基本上不可能再写。但开源的项目我还是随时可以写,只要下班以后有一点空闲时间,我就可以写。”

张铎喜欢写代码,而且他认为一直写代码对于维持自己的技术感觉很重要,“但凡很长时间不写之后,对于整个架构设计之类的敏感度肯定会变低。”

对于普通开发者 / 工程师来说,参与开源也有非常实际的好处。张铎表示,如果真的说得功利一点,参与开源肯定是能够打响自己的名声,很多时候如果真的能够参与一个开源项目并且做得很好,比如成为 Committer 或提交了多少 PR。面试的时候只要把这些往简历上一列,基本上面试官就默认你不会很差,可能聊一聊就给发 Offer 了,但如果没有参与开源的这些经历,就得花费很大的精力去证明自己的能力到底怎么样。

而对张铎而言,参与开源还有一个很大的好处,就是能继续维持“还在一线写代码的工程师”的形象,这会让带一个工程师团队变得比较容易。在他看来,管理最重要的一点就是要让大家信任,大家愿意听你的、愿意去干这是第一步,这个搞定之后才好说别的;如果事情都推进不下去、团队没有人信任你,这个团队就很难管。“我能继续维持我工程师的人设,大家天然就愿意相信我,因为他们觉得我也是工程师,而不会认为说我是一个老板、完全不懂技术,天然对于我管理上就是有好处的。”

张铎补充道,如果不花精力在开源上去维持住工程师人设,就得把这部分精力花在各种管理理论、管理方法之类的培训上。“如果我没有打造好工程师这个人设的话,管理学这边我就得花好大的劲,反正都要花精力,我还是更喜欢写代码,在这边多投一些精力也挺好。”

2 “我和小米是互相成就”

张铎第一次接触开源是在 2007、2008 年左右,那时候他还在清华读硕士,为一个名为 open64 的开源编译器编写了 ppc32 后端。但据张铎自己说,当时他其实对开源并没有太大的感觉,只是得把项目做完才能拿到硕士学位。

后来真正开始进入开源的圈子,还是在接触 HBase 之后。最早在网易做底层存储的时候,张铎照着谷歌的 BigTable 论文自己写了一套代码实现(当时 HBase 已经开源了,但网易内部很多底层技术都是自己写的),一开始还能比较容易地打败 HBase,但是慢慢他发现自己写的这套东西越来越难赶上 HBase 增加新特性和改进的速度,因为 HBase 是开源项目,参与贡献的人明显更多。所以后来张铎离开网易加入豌豆荚的时候,就选择了直接使用 HBase,而不是自己再从头写一个。

张铎为 HBase 提交第一个 Patch 是在 2014 年 9 月,当时他在工作过程中发现,HBase 有时候会丢失数据,确认自己的代码没问题后,他开始怀疑是 HBase 的 bug,定位问题后就立即对该问题进行了修复。当时小米的冯宏华已经是 HBase 的 Committer,也正好是张铎的学长,在冯的鼓励下,张铎把自己发现的问题提交给了官方。提交后很短时间内,这个修复就被 HBase 方接收了,中间张铎只对代码说明的格式做了非常简单的修改。这次比想象中简单得多的第一次提交,正式开启了张铎在 HBase 开源社区的闯关之路。

从第一次提交 Patch 到成为 Apache HBase 项目的 Committer,到成为 PMC 成员,再到成为项目主席,张铎花了 4 年左右的时间。在这期间,张铎离开豌豆荚加入了小米,当初鼓励他提交 Patch 的冯宏华则成了他的直属领导。在逐步深入参与 HBase 开源社区的同时,张铎也成为了奠定小米在开源领域和 Apache HBase 江湖地位的核心人物之一,后来他又担任小米开源委员会主席,总体负责小米开源工作的规划与推进。

虽然从小米离开的时候并不是太愉快,但总结过去几年在小米的收获,张铎坦诚表示:“我和小米算是互相成就。”他认为自己做开源是跟着小米一起成长起来的,而小米集团副总裁、集团技术委员会主席崔宝秋也是对他参与开源影响最大的人。

小米开源团队成员(左一为张铎,右二为崔宝秋)与 Apache NuttX 创始人、开发者的合影(照片由张铎提供)

在张铎眼中,崔宝秋是开源的狂热爱好者,一直对开源抱有坚定的信念。“他是比较有理想的人,一直觉得开源这个事情很多时候不光是为了一家公司,也是为了整个行业,甚至是为人类做贡献。而且他本身确实是比较中立的,目前国内能够真正把大家牵起来一起做点事情的,只有宝秋总,其他谁都不行。”

在小米的时候,崔宝秋一直非常支持张铎搞开源。一开始张铎单纯只是写写代码提交给开源社区,后来是在崔宝秋的影响下,他才真正深入去学习和了解开源背后的原因、开源的模式运作机制和开源的历史等等。

反过来,张铎在开源社区中做的很多事情以及整个成长的轨迹,也佐证了崔宝秋对于开源的很多观点是对的,即,只要能够狠下精力培养工程师参与开源,中国企业也能够真正深度参与到国际开源社区中去,并且在这个过程中,工程师个人和企业在开源社区的影响力也会不断提升。

不管是在小米工作期间(即便崔宝秋并不是张铎的直属领导),还是离开小米之后,张铎跟崔宝秋都有很多直接交流。但其实张铎跟崔宝秋的第一次照面早在 2012 年,那会张铎离开网易的时候就面过小米,只是当时他选择了去豌豆荚,没有选小米。其中有一部分原因是因为在面试的时候受到了“惊吓”,当时他发现小米的一位面试官年纪明显已经不小了,但还在面动态规划的题目(一般只有还在一线写代码的人才会用这类问题考别人)。当时他吓坏了,心里犯嘀咕:这个公司这么压榨人吗?这么大年纪的人还在一线搞技术。后来张铎才知道,那位面试官就是崔宝秋。

而正是因为有崔宝秋这样一位非常支持开源的公司高层,过去这几年小米一直大力投入开源并全力支持工程师搞开源。从商业视角和小米自身利益出发,张铎认为小米参与开源的出发点大概有三方面:

首先是通过参与开源打造公司的技术品牌,对吸引技术人才加入公司有好处。

其次是为了避免云时代的技术绑定,即便是小米这个体量的公司,要建设和维护好自己的 IDC 也是有一定难度的,因为体量比起云厂商来说差太远,自己做的优势没有那么大,但如果上云,肯定不可能都放在一家云厂商上。多云融合这个方向,大家目前探索出来的一条路就是开源共建模式,企业可以用开源和为开源项目做贡献,而开源的东西在不同云厂商上面都能用,不会出现被某一家绑死的情况。本身云厂商内部也会有一群人在做开源,开源项目很多都会放到云上支持,虽然各家云厂商可能会用替换掉开源项目里的部分东西以实现更好的性能等,但总体来说 API 还是会跟开源版本保持一致。

最后一点是小米要推自己的物联网软件平台 Vela,而做平台类软件只有按照开源的模式来,才能吸引更多人使用,而有足够多人使用才有可能最终成为标准。很多基础类型、平台类型的软件都是这样的思路。

3 “大厂如果跨不过这道坎,开源肯定做不好”

当下开源在国内热度空前,但与此同时,国内企业做开源也经常引发争议,尤其是几家头部大厂。

在张铎看来,大部分大厂做开源有个问题,他们最关心的是这个开源项目自己要能完全控制,想让它怎么样就能怎么样。这个事情国内常见,国外其实也有,谷歌决定不把 Istio 捐给 CNCF 就是一例。最初 Kubernetes 由谷歌捐赠给 CNCF,但后来随着越来越多企业加入社区参与贡献,谷歌已经无法完全掌控 Kubernetes 的发展走向了,所以前阵子谷歌折腾了半天,决定给 Istio 单独搞一个新的基金会,而不是按照原计划捐给 CNCF,其他企业意见就很大,微软马上跳出来说做了一个跟 Istio 差不多的开源项目,让大家都来用。大厂在这方面确实会摇摆,张铎认为,“但凡大厂放不下这个负担、跨不过这道坎,觉得项目就必须得自己掌控,这个项目开源肯定做不好。”

站在别人的角度看,如果某个项目一直是由单一企业控制,那自己投入的工作很可能因为这个主导企业的一个想法全部白费,它肯定不敢对这个项目投入很大精力。这种做法也不是开源的打法,肯定是不 Work 的,开源最重要的是要吸引别人来用和参与贡献,而不是把源代码开放出去给大家用就完事。张铎表示,一个开源项目最优的状态还是有一个主要的公司在支持,但是这家公司并不是对这个项目完全掌控,而是有很多人和企业都能参与进来发表意见,都能影响这个项目的走向,这种状态下大家才愿意投入;同时这个公司也能保证一定的支持力度,保证这个项目有足够的开发人员支持,这是比较好的状态。

“还有一点就是不要把开源当成 KPI”,张铎直言,曾经有一段时间阿里在这方面就做得不好,扔出来很多项目其实是在内部竞争失败的,然后扔出来了就不管了,这种情况也不可能指望别人好好去用这个项目,而且还会败坏公司的名声。“有很长一段时间,甚至到现在,还是有一些人觉得阿里开源的项目不敢用,因为过两天就不管了。这个名声一旦搞坏了,后面想扳回来很困难。”

不过张铎认为阿里现在新的开源项目其实都做得很不错,比如他们主导的 Dubbo、Flink,基本都是按照开源那套玩法来,社区活跃度也很高。他表示,现在阿里相当于找到了云和开源结合的点,一边支持开源,一边支持自己的商业模式,找到了能把开源和公司利益结合在一起做好的一条路,这样就挺好。“开源不能太阳春白雪,你不可能希望大公司都做慈善吧?像小米支持 Nuttx、支持操作系统,也是因为有利益在里面。你总得让大家能用开源赚钱,对吧?只是得遵循开源基本的规律,能把开源玩起来,然后再把自己的诉求放进去,而不是只考虑自己的诉求。”

张铎始终认为,“开源项目的成功,技术只占很小一部分。”同样的,国内开源要健康发展,只靠写代码的人也不够。谈及国内开源发展现状,他的感觉是“偏科偏得很厉害”,在他看来,中国做开源的开发者并不少,但是在开源生态建设、开源社区运营和开源合规法务这些方面,国内明显偏弱,相关人才也特别少,非常不平衡。张铎作为开放原子开源基金会的 TOC 成员,非常希望基金会能成为培养这方面人才的平台,不过现阶段基金会运转显然比国外成熟的开源基金会差很远。

在他看来,目前基金会运作得最顺畅的主要就是 TOC,还是一帮搞技术的人,很多非技术的事情也是这帮人在搞。基金会的法务这块,明显还是按照公司法务的玩法,而不是开源基金会的法务的做法。特别明显的一点就是,做事情的时候不是考虑说这是一个开源项目应该怎么做,而是说跟这个开源项目签协议的时候要维护基金会的利益,把基金会当成了他工作的一个公司。公司法务的工作职责就是要维护公司的利益,会在协议中埋一些条款把自己摘得干干净净,但换到开源基金会,同样的做法就会导致跟很多企业沟通开源项目捐赠协议时难度变大,因为各自都要维护自家利益,最终怎么也谈不拢。

不得不承认,当前国内开源发展确实存在一些短板,由中国开发者主导的开源项目中,真正做到在全球范围内形成一定影响力的项目还很少。但总体来说,张铎对国内开源发展的未来还是看好的,他认为只要中国本身以及中文在全世界的影响力不断变大,中国开发者做的开源项目影响力自然也会变大,就像原来根本不可能出现一个中国的 App 在全世界流行,但现在 Tiktok 就做到了,这个过程不可能一蹴而就,只能慢慢来。在他看来,在人工智能、自动驾驶等新兴技术领域,中国最终肯定会出来很重量级的开源项目,当然也有前提条件,“只要内部大家别跑歪了。”

0 人点赞