QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

2025 年,我的第一个建议是别当程序员了!但如果非要当,这些办法可以教会你如何提升自己

  • 2025-01-28
    北京
  • 本文字数:14518 字

    阅读完需:约 48 分钟

大小:7.02M时长:40:53
2025年,我的第一个建议是别当程序员了!但如果非要当,这些办法可以教会你如何提升自己

编者按:

 

比学软件更重要的,是理解软件行业发展趋势。放眼世界,软件和科技公司的影响力愈发显著,IT 行业已成为全球经济增长的重要引擎。去年年中,有报道称,美国七大科技公司创下了新的里程碑,总市值历史上首次突破 15 万亿美元,占美国 GDP 一半。与此同时,中国软件产业尽管还存在差距但也发展迅速,因此我们也要清醒地认识到,要想在激烈的全球竞争中脱颖而出,就必须不断学习,成为具有国际竞争力的软件人才。

 

此外,云原生是过去十年最重要的计算范式,而大模型则推动着云计算等基础架构以及工具层面的变革。云原生和大模型的快速发展,对软件工程师提出了更高的要求。作为软件工程师,我们不仅需要掌握传统的编程技能,还需要不断学习新的技术和工具,以适应快速变化的技术环境。

 

在这样的背景下,InfoQ 策划了这场圆桌对话,分享嘉宾视角下对 AI 时代下软件行业发展趋势及开发者职业成长路径的见解和心得,帮助开发者群体掌握未来技术发展趋势,树立个人技术竞争力,从而助力每一位软件工程师在未来的职业道路上走得更远、更稳。

 

嘉宾|黄东旭,PingCAP 联合创始人兼 CTO;李令辉,云原生数据库 ClapDB 创始人,前滴滴出行首席架构师;马驰,北欧 FinTech 平台工程师,瑞典马工(主持人)

 

马驰:数据库被誉为计算机领域的明珠,然而一个值得深思的问题是,为何中国厂商在技术软件领域尚未具备足够的国际竞争力。美国的 Oracle、PostgreSQL,瑞典的 MySQL 等数据库产品都具有强大的国际竞争力。反观国内,一些程序员被质疑能力不足,认为他们只会按照产品经理的要求编写业务代码,然而正是这些程序员打造出了具有国际影响力的小红书、TikTok、支付宝、微信等应用。作为技术精英,你们却在国际舞台上缺乏竞争力,这该如何解释呢?

 

黄东旭:我们确实是在做国际市场相关的工作。先说结论,再探讨原因。从 PingCAP 过去 30 年做国际化的观察来看,中国技术软件厂商是有竞争力的。在与海外竞争对手正面交锋时,我发现中国出海的这一波厂商,尤其是我认识的很多朋友,技术实力并不逊色。比如在数据库或开源数据库领域,像 Redis 刚出来时,只有一万多行代码,规模很小,难道中国人就写不出来吗?显然不是。再看 MySQL,其代码其实有些混乱,毕竟它是一个发展了二三十年的项目。从软件工程师水平来看,中国走在最前列的软件开发者他们自身技术实力是过硬的,他们开发的产品在实际应用场景中也具有很强的竞争力。然而,体感上会觉得美国有 Oracle、PostgreSQL、MySQL 等,而中国产品的声量和影响力似乎没那么大。这其实主要在于如何让别人知道中国产品产生的影响力。一方面,中国的产品已经在全球市场产生重要影响,比如 PingCAP 的 TiDB,它支持了 LBMB Pinterest 等海外应用,还支撑了日本的 PayPay,这是日本国民线上支付的重要应用,背后的数据存储全靠 TiDB,几百台服务器的规模相当庞大。

 

从宏观或客观角度看,过去中国技术软件开发者与世界交流脱节,中国有自己的生态系统,包括开源生态。像 PingCAP 和 TiDB 在国内已发展 10 年,很多人知晓并使用,但刚出海时发现,中国的开源社区与海外是割裂的。海外社区对中国的一些平台和内容并不了解。PingCAP 开始认真在海外做社区建设、品牌和知名度提升,也只是近两年的事。而像 MySQL 有 20 年历史,Oracle 有 40 年历史,这是一个客观的实践差距。另一方面,中国基础软件开发者参与国际社区的方式方法还在摸索。PingCAP 算是做得不错的,10 年前就开始在 GitHub 上开源,语言也用英文,但即便如此,这两年在与海外打交道过程中也踩了无数坑。

 

总结一下,第一,从产品硬核能力上,我们不用妄自菲薄,中国技术软件顶级人才与美国差不多;第二,我们现在刚出去,处于建立品牌认知阶段,还需要时间;第三,我们做事的方法有些不太对,也在不断摸索。

 

李令辉:马工刚才的问题里有你一贯的风格,就是偷换概念。比如把基础软件公司和小红书、TikTok、抖音去对比,这就好比不能拿美国的 ARM 和苹果对比。ARM 虽然是更基础的软件公司,但它的市值跟苹果没法比,苹果每天跌掉的市值可能都比 ARM 高。这说明越靠近消费市场、越靠近最终用户的产品,声浪越大、市值越高、收入越高。但这并不意味着底层的技术提供商和供应商不重要。苹果公司几乎全世界人都知道,但除了从业者,知道 ARM 的人并不多。

 

再来说说中美基础软件开发者对比这个话题。其实创业做数据库之前,我不算基础软件开发者,更像是使用者,也曾是 PingCAP 的客户。严格来说,这并非我们的问题,而是行业发展规律使然。我认为之前整个行业没有真正意义上的技术性公司。我曾在社交媒体上吐槽,中国之前没有所谓的科技公司,只是利用科技做传统行业的公司,如利用科技做电商、媒体、聊天等。在没有科技时,用传统方式不也能进行吗?所以科技是造福其他行业的,但我们没有真正意义上的自己的科技行业。严格来说,2010 年以后,随着 GDP 增长,中国大公司有钱投入,才有了真正的计算科技公司,像华为,早期也是通信领域的设备公司。

 

关于影响力的问题,我们不太擅长掌握规范、话语权,我觉得责任主要在教育。中国教育让学生都在做题,做题的人怎么去研发新试卷呢?Oracle 数据库诞生后,创造了数据库行业,这张卷子是谁出的?亚马逊做云之前连云都没有,这张卷子又是谁给的?如果把所有优秀的人才在 20 岁前都困在屋里做卷子,以此筛选人才,筛选出来的人将来却要开创,这不是开玩笑吗?这就相当于培养赛跑运动员去游泳,通过跑步选拔了你,但家里却没有水。现在你长大了要去游泳,这本来就是缘木求鱼。我觉得从业者要思考这个问题,更关键的是整个行业的上下游,上游是生产人才的学校,下游是招聘方和消费者,我们是中间环节,学校培养人才,我们生产商品再卖出去,形成闭环。美国大学靠校友捐款培养人才。

 

总结一下,如果在别人出好的试题和赛道上,中国基础软件的竞争力和美国差不多。但如果要开辟新赛道,或重塑客户认知、塑造新标准,中国整体差距还较大

 

黄东旭:我完全认同这个结论,虽然可能不是全部原因,但至少这是一个从宏观上看很重要的能力缺陷。就拿 Databricks 来说,大家都知道它最近融了一大笔钱。回顾其历史,在大概三年前甚至更早一点的时候,Databricks 推出了一款新的云端计算引擎叫 Photon,这个引擎并未开源。当时它原有的产品线还是基于 Spark 的批量处理云平台。但有了 Photon 这个新东西后,Databricks 做的第一件事并不是急着去卖,而是先定义了一个市场,叫做 Delta Lake,宣称自己的产品就是 Delta Lake,说以前的数据仓库已经过时了,它的 Delta Lake 最厉害。这么一宣传,赛道里就成了它一家独大,用户一试,确实不错。从技术层面剖析,它用的还是那些老技术,如存算分离、存储引擎优化等。我觉得中国在性能、数据量等方面很擅长“内卷”,但在像 Databricks 这样定义赛道方面,确实与美国差距较大。

 

马驰:如果我现在是一名程序员,我能出色地完成任务,做出很好的优化,领导交代的工作也都完成得很好。但你们说这还不够,因为不能定义标准。那对于一个已经年年拿 A 的程序员来说,下一步该做什么呢?从你们的个人经历来看,在这方面有没有突破呢?还是说你们也受限于教育、文化或惯性,难以突破呢?

 

李令辉:首先,我觉得这个问题还是得让教育来背锅,但咱们就不深入展开了,大家只要记住是教育的问题就好。我们太喜欢做题了,我有个朋友曾跟我说他孩子数学考试分数不错,但数学本质上不是算数比赛,而是抽象概念的比赛。真正的数学家一辈子没算过几个数,他们主要是推导公式。

 

其次,从我个人的创业感受以及在大公司工作的经历来看,我发现创业过程中我的抽象思维不断提高,这是一个被动的过程。核心原因是我手里的研发资源变少了,抽象能力就提高了。当我手下有 200 个程序员时,我就不想费劲去抽象,直接把子功能、子模块拆分给大家做就行。但当我发现手里只有两个人时,我就会想着要么写个代码生成器,要么写个编译器。所以我觉得很多时候创新是被逼出来的,我真的是这么觉得的。我自己创业时,公司研发人员很少,对外却宣称有百万大军,其实也就不到 10 个人。我觉得我们的代码其实就是个代码生成器,先生成一堆代码,再生成一堆代码,原因并非后来发现这样做有很多好处,起初完全是因为人手不够。如果我像华为那样有上万开发人员,我干嘛费劲写代码生成器呢,直接给每人分配一个 SQL 去优化就行。

 

我觉得美国人这么做也有一个原因是他们人力成本太高。这件事很可能在我们的人均 GDP 越来越高时发生变化,当大家发现与其雇 10 个人,不如让一个人闲下来,冷静下来,抽象一下更划算时,情况就会改变。有个很好的比喻,他说只要看中国什么时候洗碗机普及了,就说明人均 GDP 上去了,因为总有人算账,觉得让老婆洗碗比用洗碗机便宜。只有当洗碗机比人工洗碗更划算时,我们才会更愿意使用机器。想想大公司里那些年薪五六十万、七八十万的程序员,他们在做一些非常细节、具体的小优化,比如一个页面分给三个人,这三个人写了 10 年,这是真的。有什么必要把这三个才华横溢的年轻人限制在一个页面上呢?还是因为页面优化和人力成本差不多,差不多 1000 个页面,就分配 500 个程序员,每人两个;或者两个人一个团队,分四个页面。我觉得核心还是行业从业者应该提高要求,让工作更有挑战性,有更多的事情可做,这是一种被动提高的方法,主动提高我觉得挺难的

 

黄东旭:我每年都会回头看团队的效率,特别关注这个指标,即多少人能干出多少事。对我们这样的公司来说,大部分成本是人力成本,而人力成本里绝大多数是程序员。所以一个优秀的程序员,他产生的影响一定比很多人要大。我在做事时,倾向于不轻易说“给你 10 个人去做”。因为一旦给团队说 10 个人去做,团队就不思考了。加人是最简单的动作。有时为了防止大家陷入思考惰性,我会故意提出一些看似疯狂的要求,比如让系统性能提升 100 倍,成本下降 1000 倍。如果目标只是让性能提升 10%,大家就不会去思考和创新,因为 10%的小修小补很容易实现。但如果目标是优化 1000 倍,虽然你自己心里得先有可行性验证,但不能直接告诉团队答案,因为思考过程也是达成共识的过程。总之,优秀的程序员通过自己的思考,产生的影响是非线性的,一定要用好这种能力。

 

从刚才聊的宏观层面,如思考方式、抽象能力,单从程序员个人发展角度看,如何锻炼这些能力呢?我的经验是,程序员不要自己乱思考。世界上很多好东西已经发明出来了,比如 Unix 等,人家已经做出来了,背后的思考成果和过程都以博客、文章、访谈等形式存在。我的建议是,动手前先多看经典的东西,多思考,写代码并非关键动作。我会花很多时间看一些老东西,如 Unix、Plan9 等漂亮的设计,这个过程也是学习过程,思考人家为什么要这么做。

 

每天时间被榨干,国内开发者该如何自我提升?

 

马驰:很多创新都是在资源受限的情况下被迫发生的。以前我在国内华为做程序员,大家都了解华为的工作文化。后来跳槽到北欧公司,对比非常明显。在北欧,不可能像华为那样投入大量人力,比如给你 100 个人或 50 个专家,这种情况是没有的。北欧公司在做同样的事情时,更多地借助外部工具,大量使用工具来提高单个程序员的效率,程序员做的无用功也更少,所以总体效率并不比国内差,甚至从长期来看速度可能会更快一些,因为浪费率非常低。举个直观的例子,在国内我们也会用代码检查工具,工具检查后会给出一个 Excel 表,程序员就得拿着这个表一行一行对照。这项工作可能占工作量的 80%,真正编程的时间很少,大部分时间都花在了一些莫名其妙的事情上。但当我进入北欧公司后,发现那里的工具非常尊重用户时间,不会让用户在 Excel 里给 1000 行打勾,而是尽量提高信噪比。这导致了一个现象,同样是互联网程序员或基础软件的使用者、开发者,北欧同行的生活质量比中国同行要高很多。但从技能上来说,我不觉得北欧程序员就比中国程序员强,甚至我觉得中国天才程序员的比例可能会更高一些。

 

现在来探讨一个具体问题。对于刚毕业的年轻人,如果他们也想成为像你们一样的顶尖程序员,能从你们身上学到什么呢?他们肯定无法直接复制你们的经验,那么他们应该从哪里学习技术?看经典固然重要,但能在微信公众号上看到经典内容吗?另外,如果他们想去做市场营销,去改变用户的认知,又该如何培养这种能力呢?

 

黄东旭:微信公众号上肯定无法让你看到真正的经典,那上面的内容大多很表面。因为这世界上所有不花努力、茶余饭后花 10 分钟就能获得的东西,一定不是好东西,也不会让你有实质性的收获。比如看微信公众号,你能因此变成好的乐器演奏者或钢琴家吗?显然不能。所以,我觉得有两点很重要。第一,要去找到经典,从历史入手,追溯到最根源、最接近经典源头的地方,看第一手资料。不一定非要看具体代码,我以前就犯过这个错误,初中、高中时对 Linux 很感兴趣,一上来就看源码,但感觉没什么用,当时虽然看起来很努力,最后却没什么收获,看过就忘了。反而是去看一些访谈,了解设计思想、作者背后设计系统的哲学,先理解这些,再深入细节,这才是看经典的好方式。

 

第二,即使你理解了系统为何精妙、设计为何出色、经典为何是经典,也还不够,关键在于实践。实践部分其实更重要,就像成为钢琴家必须练琴一样。前面听音乐、了解好东西是在培养品位,不能只听低俗音乐,要听经典,培养审美。然后通过练习,让手形成肌肉记忆。我觉得知行合一,把这两者结合起来是比较好的。以前我和很多年轻人交流,他们说平时天天 996,没时间干别的。但我认为,现在大环境变差了,996 拿的钱也有限,不如趁这时候多提升自己,把心态放平,这也不耽误挣钱

 

李令辉:这个问题确实挺难回答的。东旭的观点我完全认同,他对经典的欣赏很有见地,比如 Plan 9 我也看过一些。不过,我们俩是殊途同归。我觉得他像个具有古典浪漫主义的艺术家气质的程序员,会从经典出发去实践。而我恰恰相反,我是个实用主义者,我所学的所有技术都是因为别人付钱让我去做项目。我从不免费学习知识或做项目。所以,我的判断完全不是从美感或品位出发的,在我看来,品位就是用最低的成本赚最多的钱。如果一个设计不能让我后续用最低成本维护、用最少时间达到效果并赚到钱,那它就不是好设计。

 

我当 CTO 多年,带过很多程序员,他们写的有些代码虽然在形式上看起来很完美,变量名、函数名起得很漂亮,注释位置也很讲究,但从实用角度来看,这些代码可能存在很大问题。因为它们没有从实际运行、维护以及最终效果等角度去考虑,所以在我看来,这样的代码并不好,甚至可以说是糟糕的。毕竟我们的代码最终是要运行的,要编译出来、解释执行,还要方便别人维护。如果只注重表面的美观而忽视了实用性,那么这种所谓的“美”只是主观的,并不符合业界的实际需求和标准。

 

在我看来,什么是品味?我从 Linus Torvalds 的观点说起。虽然我不太喜欢他的品味,但他讲的有道理。在庞大的 Linux kernel 项目中,保持简洁的代码,不搞魔法,用基础的 C 语言而非高级语言,是完全正确的。这样能有效维持项目的简单直白和可维护性,也不易被黑客埋后门。但这换到其他项目未必适用。很多程序员讲品味时,会引用 Linus Torvalds 的观点,但 Linus Torvalds 也只是在 Linux kernel 中如此。所以,我认为所谓品味,你应该问自己:解决这个问题该用什么方法最优雅?这包括几方面考虑:一是你面临的脑力负担,需不需要了解全貌才能解决;二是你要承担多大风险,作为工程师,首先要考虑的是项目会不会因你的选择而失败;三是收益。

 

不同项目的品味是不一样的,但核心是,如果你不能量化为什么做这个选择,那这个选择很可能是人云亦云。中国人其实很谦卑,我面试时喜欢问程序员都看什么技术文章和博客。如果他列举超过 3 个,我就不太想要;超过 10 个,我觉得这人肯定有问题。因为中文媒体没什么可读的,有那么多时间看中文媒体,不如去干别的。这也说明他品位差,看不出哪些是垃圾。更可怕的是,他很可能被这些垃圾影响。我最害怕的是,一些程序员在项目讨论中搬出大名词,却不知道这些人的真实水平。你放着权威的教材不看,去看中文博客,如果你要相信权威,就找最权威的。东旭读经典的做法是对的,因为经典被那么多人筛选过,你获得营养的概率远高于垃圾,时间不会白费,比订阅一些不靠谱的博客强多了。

 

黄东旭:我觉得品位这种事,最终体现在你做选择时。作为一名 CTO 或资深程序员,设计众多系统,每时每刻都在做决定,比如这个接口设计成什么样,或者这个地方要不要抽象成一个模块。品位就是在这些决定中的一种行为准则。你会觉得某个地方需要这么设计接口,虽然当下看不到收益,但相信未来你会感谢自己当初的决定。

 

有意思的是,现在我回头去看 PingCAP 系统,至少是我参与决策的那些部分,发现大多数正确的决定在当时看起来都非常反直觉。如果当时按照那个环境下所谓的大 V 或主流设计方案去做,最后回头看你会庆幸自己没听那些微信公众号或主流人士的说法。尤其是当你的组织变大后,作为技术掌舵人或决策者,你做出反直觉的决定,就意味着底下的人会问为什么要这么做,眼前的利益明明应该这么做,为什么不做呢?所以我自己在做重大决定时,第一个倾向是能不做就不做,能晚点做就晚点做,保持系统的简洁,也就是所谓的品味。作为古典程序员流派,我更倾向于以简单为美。

“把问题解决好,你就厉害了”

 

马驰:作为仍在一线写代码或看代码的 CTO,我想问一个比较尖锐的问题。国内很多高级技术人才,如高 P、大 V 或技术专家,他们早已不再从事一线工作,主要转向管理岗位,但仍以技术专家的身份去指导年轻人。我想知道,你们觉得自己和他们最大的区别在哪里?在对外输出方面,你们有什么不同?如果年轻人想要超越你们,他们应该怎么做呢?

 

黄东旭:程序员并没有绝对的优秀与否之分,评价标准并非线性。写代码比我快一秒钟,或者接口设计比我好一点点,都不能简单判定谁更出色。不存在这样一个明确的标准,每个人都可以从他人身上学到东西。如果真有值得学习之处,交流其实更为重要,而不是纠结于谁更优秀。这涉及到自我认知的问题,我建议就是放弃所有这种自我优越感,每个人都能从对方身上学到东西。不用总想着超越,没有什么超越不超越的。若要谈超越,我觉得现在的年轻人学习环境比我们当年学计算机时好太多了,但这也可能带来选择焦虑。当信息过多时,反而容易让人失焦,这或许是一个挑战。

 

李令辉:我给他的第一个建议是别当程序员了,因为程序员很可能是末代职业,现在加入这个行业并不是一个很好的选择。第二个建议是我自己也可能要转行了,因为随着行业发展,“打不过就加入”似乎成了常态。我认为“超越”这个词用得不好。这是因为我在中国参加技术大会听了几年之后,后来不太愿意参加了。我发现大家讲的内容都类似,比如在前端领域,四场演讲中有三场都是关于 React 的四种场景应用,其中 80%的内容都是重复的。我觉得大家没必要都讲一样的东西,一场就够了,或者大家事先沟通一下。后来我当了演讲人,发现大家还会对稿,这就更夸张了,难道没发现和别人讲的内容一样吗?既然一样,为什么还要重复说呢?

 

我觉得程序员这个职业和传统职业最大的不同在于,我们不需要做前人做过的工作。传统工作比如做面,你做不到别人做的面,所以你要不断练习,做到接近那碗面的水平,才能成为好厨师。但程序员不是这样,别人把一个库放到 GitHub 上,你拉下来就能用。TiDB 开源了,你直接用就好了,何必换种语言再写一遍呢?大厂最喜欢做这种事,他们喜欢把别人的东西换种语言再写一遍,然后证明自己更厉害,评完级就把项目扔掉。我觉得这是考核机制的问题,一个人把别人做过的事再做一遍,这没什么了不起,甚至在这个行业是可耻的。如果所有人都重复做一件事,我们就不会有现在的计算机科学和互联网。我们是在前人的肩膀上再走一步,才形成了现在的巨塔。Google 那么厉害,它重写 Nginx 了吗?它做的 GFS、BigTable 等都是以前世界上没有的东西,它需要这些东西。至少一开始,Google 的初心不是为了考试。我觉得不存在超越,你可以做最好的自己。看看世界上需要什么,有什么问题需要解决,把问题解决好,你就厉害了。你不需要和任何人比较,你就是最厉害的。

 

我们应该庆幸现在的年轻人比我们那时候卷多了。比如东旭他们刚创业时,用 Rust 写的 Raft 应该是市场上的第一家。现在你知道市场上有多少家吗?大厂几乎人均一套 Raft。有什么必要每个年轻人都写一遍?写完了又怎么样?也没有发明 Raft。为什么要把别人的工作再做一遍呢?如果你觉得这就是一种超越,那我觉得你永远超越不了,这就是最大的问题。

 

在我之前两三年,经济还没这么差的时候,我面试了很多大厂的年轻人,人人都擅长 Raft,每个人都精通。我不知道我们为什么需要这么多精通的人,硅谷可能都没有这么多精通的人。Google 也就一个组在做这个事,Meta 也是一个组在做,而且那些组也不是专门做这个事的,我觉得没必要这样。

除了 AI,还有哪些技术值得关注

 

马驰:回到年轻人的视角,如果他们想做一些有趣的东西,肯定需要利用一些新技术和最近的技术进展。在 2025 年,会有哪些新技术能够帮助年轻人更好地解决一些旧问题,提出新的方案呢?我们知道 AI 肯定是其中之一。除了 AI,还有其他一些技术也值得关注,比如 Rust 语言和云原生技术。这些技术能否给年轻人一些探索的方向呢?

 

黄东旭:我觉得我做很多事情的出发点,不仅仅是公司业务上的探索,更多的是因为有趣,或者是因为我自己需要。比如我现在的助理不够智能,我想用人工智能来整理我的日历、邮件和个人数据。这可能看起来是一个有趣的挑战,或者是我自己需要的东西。在做的过程中,我至少会倾向使用以前没用过的那些技术

 

因为公司大了,我现在不需要亲自写代码赚钱了。现在我写的代码大多是框架型的,让团队成员把它重构为可用于生产的东西。虽然角色有所变化,但我写代码的核心依然是尝试使用以前没用过的技术和架构。我学习和做事的方式,不是看技术是否过时或新颖,而是看这个技术本身是否有趣,我能从中学到什么,或者最简单的就是觉得这东西很酷,能让这个周末过得开心。大概就是这样,不要太功利心重。当然,这可能也是作为创始人的一个特权。比如我特别不喜欢管理团队,作为创始人,我可以把这些日常管理事务交给我们的副总裁,我则专注于技术方面。所以还是要相信团队和分工。

 

马驰:因为东旭现在不需要面试了,但是作为要面试的年轻人,令辉老师有哪些建议给他们呢?

 

李令辉:在面试这个问题上,我始终秉持着初心,我是一个实用主义程序员。我的第一个建议其实和东旭有点相似,那就是跟着兴趣走。人活几十年,社会上现在也没到饿肚子的地步,尤其在咱们国家,吃饭是不用担心的。所以,在这个前提下,没必要逼着自己做不喜欢的事。我觉得这是最重要的,因为你不喜欢的事,很可能你不擅长,或者这件事本身就有问题。不喜欢一定是有原因的,要么违反你的人性,要么违反你的道德。不做自己不感兴趣的事本身就是一个加分项,你会更有意愿去钻研,不会觉得累比如我过去三四年,每天工作十四五个小时很常见,虽然赚钱也不多,但核心是开心,因为做了自己感兴趣的事,就不会觉得累

 

第二个建议是,我也面试过很多人,曾帮大厂主持过校招。记得有个年轻人过来跟我说:“面试官,我有想法了,可以吗?”我反问他:“你觉得我们公司缺想法吗?我们公司领导们想法多得很,缺的是干活的人。”我觉得年轻人不要太好高骛远,第一件事是把手头的问题解决好。你对技术感兴趣没问题,对什么感兴趣都可以。倒退 30 年,那些获得图灵奖的人做的事也是非主流的。科学这东西谁知道呢?你感兴趣什么就去做什么,任何感兴趣的事都值得投入时间。人生就是用来浪费的,花在自己感兴趣的事上就结束了,没关系。至于哪个东西能中彩票,这个不知道,知道了也没用。将来我们知道搬砖特别挣钱,但身体又搬不了。

 

马驰改变了我的一个观点。我以前觉得抬杠很没意义,虽然我自己以前也爱抬杠,后来反思觉得挺浪费时间,就不怎么抬了。但后来我发现抬杠有两个好处:一是去魅。你不抬杠,容易在我们这个文化体系里把位高权重人的话奉为圭臬,觉得他说什么都是对的。其实你抬抬杠,会发现没人总是对的。在这个过程中,你能了解对方是怎么想的,想想这个想法对不对。如果这个人连思考过程都没有,就是拍脑袋,你不用听了。抬杠的过程有助于去魅,并且强迫自己找证据、了解真相。拍人马屁时你不需要时间,只要付出点尊严就行,但抬杠不一样,你不学习就不能抬杠。敢于抬杠是一个挑战权威的过程,并且强迫自己学习。对很多想从事真正有价值事情的人来说,这是有意义的。无论是创业还是做科研,其实都是挑战别人的共识。没有跟一万个人抬杠的勇气和决心,很难做成事。无论做什么创新的事,都是这样。

 

我记得当时有很多自媒体说中国有多少数据库公司、软件公司。他们没去看国外的情况,只是看到国外成功的几个,就觉得国内的不行。我做过竞品调研后才知道世界上有多少奇奇怪怪的数据库。数据库真的很多,只有足够多才能产生好的。如果大家都做一样的,那确实没意义。但如果大家都做不一样的,剩下的那个可能就是好的。所以,年轻人要想办法做和别人不一样的那个人,无论是做人还是做事。别人都做得那么好了,你还有什么希望?你要做点自己感兴趣,觉得还没人好好做的事。

 

黄东旭:我觉得“去魅”这件事在程序员或软件开发行业里特别重要。老实说,编程本质上是个手艺活。编程语言其实没那么了不起,无非就是那几个关键字。程序这东西,你写多了,自然就熟练了,大家水平也差不多。所以,没必要因为谁说过什么就觉得他特别厉害。这种盲目崇拜权威的做法其实不太好。

 

我也不是完全反对抬杠这件事。抬杠更多是一种心态。现在我年纪大了,有时候会说“你说得都对”,但心里其实会想一遍抬杠的过程。这种内心的质疑很重要。我回想一下自己,编程能力最强、精力最充沛、头脑最开放的时候大概是在初中和高中。那时候我学编程比较早,正好处于叛逆期,又赶上了开源运动的浪潮。90 年代中后期的开源社区,大家的共同“敌人”是微软,一提到微软大家都嗤之以鼻。大家都觉得自己是民主战士,这种氛围让我在各种论坛里很活跃,也让我对权威有了更多的质疑。但后来我发现,真正重要的不是怼天怼地,而是完成“去魅”之后,能够发自内心地欣赏曾经的“敌人”做得好的地方。比如以前我觉得微软的东西都不好,但后来才发现,微软的 IOCP(输入/输出完成端口)在并发和异步处理方面做得非常好。这就是我想说的最后一个建议:当你完成内心的质疑和“去魅”之后,能够真正欣赏对手的优点,这就是一种成功。放弃自己的自我优越感,你会发现无论是朋友还是曾经的“敌人”,都有值得学习的地方

 

马驰:我觉得在很多领域,我抬杠都能抬胜,但这并不是因为我经验丰富或能力超强。我觉得有一点特别重要,尤其是在中文圈子——就是要和国际上最先进的技术和社区保持接触。开源社区就是一个很好的例子,它不分国籍,是世界上最前沿的圈子。如果你能融入这个圈子,就能站在巨人的肩膀上。当你再去看一些封闭行业里的所谓权威、老师傅或大 V 时,就会发现他们其实已经和时代脱节了十几年甚至几十年。

 

李令辉:对于年轻人的焦虑问题,我可能不知道具体该做什么,但我清楚不该做什么。首先,不用再花太多时间去研究传统的 CRUD 架构。一方面,云计算的发展导致存算分离,这一趋势将带来巨大变化。我坚信未来业务代码会全部运行在这种分离架构上。大约在 2020 年,我在飞书群里和人争论过这件事,甚至愿意赌上 10 万美金。虽然目前还没完全实现,但我相信这只是时间问题,因为网络发展实在太快了。旧时代的经验可能反而会成为束缚,所以不要再去研究那些所谓的“企业 Java 架构”,那些东西已经过时了

 

其次,传统软件工程在未来也会因 AI 的加持而发生重大变化。过去,软件工程是在全人工条件下保证可靠性,但我一直是这套流程的反对者,尤其是反对其中 20%~30%的教条主义,比如严格的测试覆盖。我觉得有些地方没必要那么严格。虽然我反对这些,但我仍然接受并使用了 70%以上的内容。我发现,代码工具虽然看起来很方便,比如自动生成代码的功能,但可能会带来很多问题,让我陷入无尽的 bug 排查中。所以,我建议大家谨慎对待这些工具。总之,如果你擅长的都是那些特别边缘的技术或经验,那么在未来一两年内,这些可能就会被完全替代,变得毫无价值。

 

黄东旭:现在很多工具可以自动生成代码,比如 Cursor,它在局部生成代码可能还算可以,但如果一次性生成几百行代码,我觉得这种做法完全不可靠。现在很多人还在鼓吹 Coding Agent 之类的东西,但在我看来,除非你只是开发一些简单的系统,比如食堂管理系统,或者做一些前端的简单功能,这些工具或许还能用。但如果指望它们能替代一个优秀的工程师,那我觉得还差得很远。

 

说到学习建议,我还是觉得要回归一些万变不离其宗的基础知识。比如现在大家都在讨论 Serverless、Lambda,包括我们自己也在用,TiDB 的云服务也很快会完全运行在 Lambda 架构上。但你会发现,很多基础的东西其实并没有变。比如,一个系统的性能瓶颈在哪里?吞吐量和延迟受什么影响?在这个快速变化的时代,我对年轻程序员的期望是不要丢掉基本功。举个简单的例子,最近大家都在说云原生对象存储,S3 是新的磁盘。很多年轻人看到这个结论,就觉得 S3 很厉害,是新的存储方式。但如果你真正去设计系统,会发现当 S3 遇到瓶颈时该怎么办?S3 本身也是一个大型的分布式系统,可能需要扩容。你不一定非要自己做一个 S3,但你得了解这个系统是怎么工作的。所以在这个日新月异的时代,我还是要建议大家去看经典的东西,这些才是根本。

 

马驰:我想再提一个问题,眼界是不是也很重要?我觉得程序员其实不应该仅仅追求成为中国最优秀的人,从一开始就应该立志成为全世界最优秀的人。我们的年轻人应该一开始就应该朝着“我要做到全世界第一”努力,而不是“中国第一”,因为“中国第一”可能只是全世界第 100 个。我也注意到,很多年轻人其实受限于语言、文化和网络接触的限制,在接触世界一流技术时有很多障碍。在这方面,你们有什么具体的建议吗?

 

黄东旭:我觉得这个问题其实很明确:如果不会英语,那就去学。现在全球化是大趋势,英语不仅是语言,更是一种思维方式,尤其是技术领域,它已经成为了全球交流的通用语言。如果你想进步,就必须克服语言障碍,融入全球化的交流中。中国年轻开发者确实需要提升眼界。有一个简单的方法就是多看像 Hacker News 这样的国际知名技术社区,并积极参与其中的讨论。

国内外开发者之间的认知差异

 

马驰:东旭,你们公司是一个国际化公司,在美国、新加坡和中国都有开发者。那你们有没有注意到,这些不同文化背景的程序员会有一些比较明显的区别呢?

 

黄东旭:我觉得不同文化背景的程序员确实存在一些明显区别。比如在美国,我发现程序员们会花更多时间去思考问题,他们在产品设计、宏观规划方面表现得更好,通常会在想清楚之后才动手。这是美国程序员的一个好习惯,美国程序员在产品设计和端到端体验驱动做事方面,比中国程序员做得更好。

 

而中国的那些优秀的程序员,编码速度非常快,但很多时候会出现返工的情况。比如做到一半发现方向不对,需要推倒重来。这是一个很有意思的现象。最近我跟很多国内外的同事做一对一交流,发现中国同事往往会直接跳到产品缺什么功能、某个地方要怎么改这种很具体的事情上,跳过了思考过程。相比之下,海外的高级工程师在面对同样的事情时,思考顺序是不一样的,他们会从为什么要做这件事、路径是什么、资源如何分配,最后才得出结论。简单来说,思维方式的不同是我体感上最大的区别。

 

我发现国内很难找到好的技术软件产品经理。之前国内有一些说法“人人都是产品经理”,“人人又都不是产品经理”。这两年我在做基础软件和产品化的工作,发现这是一个非常专业的工作,有很多方法论值得认真对待。但在基础软件或云产品领域,中国确实缺乏优秀的产品经理。

 

李令辉:我曾经做过一个无代码(No Code)项目,当时我们在招聘产品经理时,找了一些曾在无代码平台上实施过项目的人来面试。当时我有个比喻:这就好比把一个手动挡汽车司机找来开无人驾驶汽车,结果他天天问离合器在哪里,没有离合器怎么开车?这就是问题所在——最终用户并不一定能成为好的产品经理。要成为一名优秀的产品经理,需要非常有悟性的用户,最好是那些对整个产业链上下游都有深入了解的人,或者说是“天才”。毕竟,第一个产品往往是天才创造的,他们才有可能胜任产品经理的角色。

 

我也特别反感“人人都是产品经理”这种说法。我面试过的产品经理至少有几百人。因为在上次创业时,我主要负责产品和技术,发现很多时候是产品拖了技术的后腿。所以我们在招聘产品经理时,发现了一个现象:在互联网最火的时候,全北京能学会编程的人都去当程序员了,而那些学不会编程的人则都去当产品经理了。

 

马驰:我观察到在云计算和技术软件领域,很多产品经理有一种“低幼化”的倾向。他们会把一些很严肃的生产力工具,比如数据库、操作系统或对象存储,设计得过于可爱、甚至做一些布偶。这其实是一种非常独特的中国现象。在欧美,这种情况很少见到。我认为这种做法其实显得很不专业。

 

黄东旭:在美国,一些基础软件创业公司,尤其是近几年的小公司,也出现了类似的“低幼化”倾向,这其实随着“开发者关系”岗位的兴起而逐渐显现。你会发现,这些公司大多处于早期阶段,可能只有三五个人。他们这么做,一方面是为了招聘,因为这个群体大多是年轻人,公司需要打造一个酷炫的形象。但你会发现,这些公司一旦发展到一定规模,有了企业客户,他们的形象就一定会向更严肃的方向转变。举个例子,大家都知道的小强数据库(CockroachDB),其实有不少企业客户因为名字的问题而不喜欢它。当然,他们的 CEO 个性也比较强,但我个人认为,如果面向企业客户或做严肃的基础软件,还是应该更严肃一些。

 

国内的情况又有所不同。国内所谓的运营人员,我觉得很多时候是因为自己没有想清楚,就去参考海外比较火的开发者关系是怎么做的,然后无脑地照搬过来。因为大公司预算多,老板也愿意花钱,而花钱做事总是最容易的。比如搞个布偶之类的,又是花钱方式中最简单的一种。所以,归根结底还是缺乏思考。如果各个行业都处于互相内卷、不思考的状态,就会卷到一些稀奇古怪的方向上去。

 

李令辉:发公仔至少有两个好处。首先,它好歹是有用的,毕竟有些事情更没用。其次,中国作为生产大国,是公仔的原产地,公仔的成本比美国便宜多了。在北欧发公仔,成本至少要乘以 20,而在中国发公仔几乎是白送,几乎没有成本。比如阿里和腾讯每年都要做很多公仔,可能根本不用加预算,直接拿其他部门发剩的公仔来发,就能完成一个 KPI,这不挺好的吗?

 

我觉得运营和产品营销手段不存在唯一正确的方式。很多公司做完之后,别人怎么做我们就怎么做。比如开源,前几个靠开源起家的公司对微软来说也是“大逆不道”,微软当时觉得这些人靠免费倾销,简直不要脸但实际上,只要有效就行。我倒觉得,只要有效就 OK,关键是无效。所以,无效才是原罪。

 

我参加过很多大会,也被发过很多公仔,甚至曾经拥有全中国所有互联网公司的公仔。但公仔和公仔也不一样。如果公仔做得好看,放在家里确实会让人天天看到,对公司的印象也会加深。从这个角度看,公仔的成本可能比在分众传媒打广告更划算。我觉得更好的推广是做包。你看程序员们都背什么包?发包就是活广告。我觉得中国公司在运营上确实有一些独到之处,我们重新发明了一些外国人觉得无效,但我们觉得有效的方法。比如“砍一刀”,把美国人都搞晕了。

 

我觉得核心还是产品本身的问题。如果产品不好,怎么卖都不行。你不能怪营销不行,而是产品本身没做好。但如果产品真的很好,你也不知道是产品好还是营销厉害。比如当年 ChatGPT 刚出来的时候,一用就知道这是好东西,谁用谁知道,甚至有人愿意花钱去淘宝买账号,每个月多交钱去用。如果产品不好,怎么营销都没用。但如果产品很好,怎么卖都能找到办法。现在的问题是,老板给你一个烂产品,你用尽所有办法都卖不动,那该怎么办?最后发现送公仔可能还算便宜的。

 

我也看到很多中国软件公司的困境,比如花 5 美金买一个 GitHub Star,这种事到底图什么呢?核心还是产品不够好,需求不够刚性,产品不够核心。对我们所有创业者来说,创业者首先是个产品经理,产品到底给谁用,为什么用户要用,这才是关键。

2025-01-28 11:5562
用户头像
李冬梅 加V:busulishang4668

发布了 990 篇内容, 共 594.8 次阅读, 收获喜欢 1150 次。

关注

评论

发布
暂无评论

AI 编程助手 Amazon CodeWhisperer 使用(持续更新中)

亚马逊云科技 (Amazon Web Services)

人工智能 亚马逊云科技

ARTS打卡第四周

穿过生命散发芬芳

ARTS 打卡计划

Mojo语言:AI的新编程语言

3D建模设计

编程 AI

低代码+AI:拖拉拽构建漂亮活动页面

码上跃见

AI 低代码 网页设计 AIGC 低代码前端

IT办公云化:云桌面解决方案是大势所趋

青椒云云电脑

云桌面

规范预算编制,打造企业全面预算管理新章程

智达方通

企业全面预算管理 预算管理 预算编制 全面用预算管理 预算预测

文心一言 VS 讯飞星火 VS chatgpt (88)-- 算法导论8.3 1题

福大大架构师每日一题

福大大架构师每日一题

如何使用PyTorch训练LLM

3D建模设计

人工智能 LLM 大语言模型

万字全面评测(上篇):文心一言 vs ChatGPT

豆哥

评测 ChatGPT 文心一言 大语言模型

设计模式系列文章

菜皮日记

设计模式

云桌面好用吗? 选购云桌面前必看的产品对比

青椒云云电脑

云桌面

华为Mate60负一屏升级快捷服务 同程旅行、猫眼等入驻

最新动态

私有云是什么?有哪些优势?

青椒云云电脑

公有云 私有云 云桌面

Blender中的高级边缘控制和纹理映射

3D建模设计

blender UV贴图

LlamaIndex:将个人数据添加到LLM

3D建模设计

LLM 大语言模型

重磅!python自动化办公,终于支持 Mac下载了

程序员晚枫

Python 编程 Mac

Paimon+StarRocks 湖仓一体数据分析方案

StarRocks

数据库 大数据 数据湖 湖仓一体

云桌面办公解决方案有哪些优势

青椒云云电脑

云桌面

如何部署教育云终端

青椒云云电脑

云终端

如何部署教育云终端

青椒云云电脑

云终端

ARTS打卡第四周

穿过生命散发芬芳

ARTS 打卡计划

生成式 AI 中的风险认知

3D建模设计

生成式AI

Go Struct

小万哥

Go 程序员 后端 开发 Google

C++的纯虚函数和抽象类

芯动大师

HarmonyOS创新实训营深圳站收官,美图秀秀、邮储银行、中信银行等20余企业积极拥抱鸿蒙生态

最新动态

创建型设计模式-工厂方法 Factory Method

菜皮日记

设计模式

2025年,我的第一个建议是别当程序员了!但如果非要当,这些办法可以教会你如何提升自己_生成式 AI_李冬梅_InfoQ精选文章