@soyis_ 的这个困惑我觉得蛮有代表性的,所以专门拿出来说一说我的看法吧。我其实之前在和《枫言枫语》一起做的一个 Podcast 里,也简单地说过一下我关于这个事情的观点,不过那时候没怎么展开。作为一名在一线摸爬滚打十多年的老家伙,说不上什么权威,而且看事情似乎也是错多对少,但还是斗胆在这里给入行不久、道行还可能比较浅的新朋友们说一说我的关于新人们在 AI 时代如何生存和成长的看法和建议吧。
这个时代,我觉得对新入行的软件工程师来说,既是利好,也是利空。
先说利空,那就是初级工程师的岗位会变得非常少,企业对他们“上手就能战”的要求也会变得非常高。以前企业可能会找不少初级工程师来做相应的编码工作,他们可能一开始并不需要理解整个代码库,也不需要理解架构选择或者更高层面(比如商业逻辑)的问题,只需要在规定的时间内把分配的任务做完就可以。而初级工程师也能够在这几年内慢慢积累经验和视野,将他们在大学里接受到的、可能相对滞后或者理论派一些的软件工程实践(如果大学里真有教有的话),追到业界水平,并真正理解软件开发这件事情到底是如何运作的,这可以提升他们对于开发的品味。所谓软件开发,其实和很多其他事情也差不多,就是一个一个的选择。这些选择通常都基于某种约束和权衡,比如说:时间和人员是否充分,结构和功能是否匹配,对细节的投入是否能换来合理的产出回报等等,并在开发时依照情况,进行技术选型/架构设计/实现路径/测试覆盖/问题修复/功能细节等等诸多选择。具有这些品位,或者是能够理解这些选择的工程师,则会一步步走向 senior 的行列,去承担更多的任务。
在这一波 Vibe Coding 的浪潮中,我观察到的更多的是,不管是企业开发还是个人开发,都是很多已经是 senior 的老家伙们在主导(虽然这也算是必然...):他们在摆脱了实际编码的体力和时间束缚后,肆意地运用已经有的“品味”,将上面那些工程上的选择迅猛地灌给 LLM。对于这一拨人来说,实际上是一个非常十足的生产力的解放:因为他们之前的任务就是时刻做这样的选择,现在只不过从以前要把这样的选择传达给初级工程师,让他们去实现,变成了现在有一个能够时刻共鸣的叫做 LLM 的 soulmate,同时还是无休止不疲劳地实现他们的愿望万能许愿机。于是你看到了各种 10x 工程师 100x 工程师的出现,留给初级开发者们的活儿也就被抢掉了。
但是事物并不是一面的。AI 的出现,如果对于 Senior 来说是一个能力的放大器的话,对于 Junior 来说,它就是一种学习的加速器。
在我自己学习成长的道路上,其实有非常多的问题困惑我,让我想了很久都不得其解。特别是刚刚入门的那几年:搞不懂堆和栈的区别,搞不懂引用语义和值语义,搞不懂多线程为什么要加锁,搞不懂原子状态和事务的必要性,搞不懂单向数据流,搞不懂着色器语法,搞不懂为什么要 VIPER,搞不懂测试覆盖到哪儿算是OK,也搞不懂各种时区转换和字符编码,甚至一个 OAuth 或者 APNG 都要啃上一整周。但是在 LLM 之后,这一切问题都灰飞烟灭了。你甚至都不需要知道名词是什么,只要说个大概,自然会有大模型把所有细节给你解释清楚。你不需要自己再去记这些东西,也不再需要自己实现,需要的时候,这些信息甚至代码都是信手拈来。
以前一个资深工程师可能十年才能完成的成长,现在新入行的同学们,可能一两年就能搞定。而且随着模型的继续成长,有一些知识可能根本就不再被关心和需要了。除此之外,老家伙们通过多年的积累得到的经验和选择的方式,在新的约束条件下,有些可能也不再适用(像是避免过早优化,确保测试的稳定性等等,我认为其实多少已经过时),他们也需要自身知识的更新,如果跟不上变化,就很容易面临更加 AI native 的工程师带来的革命和冲击。
说了这么多,其实最核心的就是我认为初级工程师在使用 AI 的时候,一定不能只把它当作一个工具来使用。相反,你要把它当作一个真正的、和你一起进行 Pair Coding 的人。去向它请教,去向它学习,给大模型一个 SOUL,让它来扮演你导师的角色而不是代码机器。在向它许愿完成任务的时候,也让它教你如何在各种可能的实践中做出选择,让它讲明白其中的利弊得失,将它的“加速器”的一面用到极致。于是,你就可以用比前辈们更快的方式达到和他们同样的高度,然后去享受能力“放大器”的一面所带来的红利。虽然我也不知道这样的红利会持续多久,以及最终到底会为整个业界带来怎样的结局,但是如果你热爱这份事业,也热爱创造这件事情,那么一直 on boat,就一定能到达你理想的终点。
点击图片查看原图