【聆听·微光】003:一位对工作迷茫的程序员的觉醒时刻

【来访者个人档案】

  • 身份: 工作1-2年的后端开发工程师。
  • 自述: 我觉得现在的工作没有价值,时而感到迷茫。

今天通话的伙伴是 L 同学,刚毕业工作了一两年,在银行做系统,稳定的同时又备受煎熬,在工作中找不到意义和价值。同时又有自己的创业小项目,有现金流,但还无法全职的程度。L 同学是公众号的老粉丝了,看过我不少文章,他自己的创业小项目也是受《实时语音交互场景下RAG的机遇和挑战 | 长琴》这篇文章的启发。

L 同学的困惑主要是工作相关和 AI 时代如何提升性学习。从问题表面来看其实是比较容易解决的,不过在聊的时候发现,其实这些问题只是 L 同学在探索和找寻自身意义和价值过程中的自然表现,这才是根源所在。

工作的意义

关于工作和公司,我在《【聆听·微光】002:一位普通院校硕士研究生的毕业之际 | 长琴》稍微提过一下,简单来说就是,每个公司只是我们成长路上的一段合作经历,重要的是提升自己。其实,对于这一主题,我在很早之前的《AI 工程师养成记(上) | 长琴》中也有提及,文中提到三个心态:创业心态、成长心态和当下心态,其核心也是以自我发展为基准,努力做好工作。

围绕着这个中心思想,回到 L 同学的工作:没有价值、感受不到意义,而且还有各种内部“糟心事”。这是环境在告诉你:“走吧,走吧,你已经不再适合这里了”。所以,首先我非常明确地表达了这个意思。

不过同时,鉴于这个工作非常稳定,大概率可以做到退休,我给 L 同学描绘了另一种可能性:“维持现状,同时搞自己的创业小项目”。对,成年人就是什么都要,而且很多时候也并不是非此即彼,完全可以兼顾,只是彼此进展不同而已,比如有段时间忙 A,过一阵再忙 B,但整体都在往前推进。

如果确定要换工作,接下来要考虑的就是换到哪里去。我的意思是,尽量换到一个自己喜欢或者感兴趣的产品。如果可以的话,优先选择大厂。前者无需多说,大厂的考虑则包括:履历、规范性、背书、结识更多大佬,等等。不是说小公司没有这些,只是遇到的概率没有大公司那么大。而且,开发岗位相对算法岗位来说还没那么看学校和背景,也相对容易些。

但是,无论去哪里工作,我都建议 L 同学不要停止自己的独立开发活动,能自己完成从产品设计到开发,再到销售得到收入,这种能力其实是非常难得的,至少我自己就不具备(销售能力)。L 同学担心自己做了一些前端、产品相关工作,会影响自己找工作。我觉得恰恰相反,懂些前端和产品能让后端更好地做好架构设计,更好地和前端、产品沟通,这点是很多后端开发不具备的,这是 L 同学的优点。

最后,补充一点关于工作的意义。最近一些年流行提前退休,好像工作是非常痛苦的事情。确实,做一份自己不喜欢的工作,那一定是痛苦的。L 同学说羡慕我每天开开心心去上班(我在发刊词《聆听·微光 | 长琴》中提到过),其实我在转行前,也会时不时地有不那么开心的日子,但转行后好像就再也没有过了。所以,必须找一个自己喜欢做的工作(或者大部分内容是自己喜欢的),我觉得这很重要。

其实,工作本身应该属于个人“事业”的一部分,工作可能是短暂的,但事业是伴随我们一生的。在每个公司的工作经历,都应该能够为我们的事业添砖加瓦。一旦把心态从“做工作”调整到“搞事业”,可能大部分人都和我一样,没有退休计划。

AI冲击下如何学习

第二个聊的话题是 AI 大环境下的学习问题,L 同学的表现是:“难以像以前一样静下心来啃某个技术”,这不禁让我想起了《【聆听·微光】001:一位研究生在读的”reward hacker“关于学习的困惑 | 长琴》中的 F 同学,看来这是一个相对比较普遍的问题。

其实,大家可能不知道,我自己也很焦虑,前一阵子还刚写了《所爱隔山海,山海亦可平 | 长琴》给自己打气。F 同学的问题很直接:“AI 都会写代码了,而且写的那么好,那我还学什么?”是啊,相比知识那边,Coding 这边的冲击更大。其实,我自己心里早就隐约有这种意识——编程学习的方法得变了,还得赶紧变。此前,对这个问题也做过一些思考,正好 L 同学问到了,我就跟他谈了我的观点。

首先,如果想要更好地使用 AI,必须学习,而不是完全交给 AI。这个大前提明确后,剩下的就是学什么、怎么学的问题了。我觉得有两个方面是必须要学习的。

第一,架构设计。我曾经写过一阵子前后端,也负责过不少复杂项目的架构设计,我可以很明确地说,不懂架构 hold 不住复杂项目。你可能可以写一个简单的网页应用,甚至稍微复杂点都行,但更复杂的项目以及大部分的企业项目,要是不懂点架构设计知识,可能用自然语言描述都描述不清楚。这点我在《以 AI Coding 之管窥探世界之变 | 长琴》中也提到过,AI 是替代了人的双手,而不是脑子。

第二,如何用 AI 编程。对于这点,大家都是新手,以前的编程高手不学习的话也不一定能用好 AI。我自己有一些实践经验,比如写好需求文档、接口文档,分模块完成,让 AI 在不同模块下放一个设计文档,并在更新代码前先修改设计文档等等。很多 IDE 也会根据你的描述给出 Task 让你 Review,做完后还给你 Walkthrough。最近比较推荐的一篇是腾讯技术工程团队发表的《认知重建:Speckit 用了三个月,我放弃了——走出工具很强但用不好的困境 - 知乎》,里面提到了大量关于 AI 编程的认知和最佳实践,非常值得借鉴。

除此之外,最好还能懂一些通用的编程知识,比如设计模式、并发和异步编程等等,能让我们更容易看懂 AI 的设计,以及更好地和他沟通。至于特别底层的(比如操作系统这个层面)那就看个人兴趣了,能学肯定是最好的,不学看起来似乎也影响不大。

至于怎么学,架构设计方面,我建议 L 同学去找一些已有的成熟的架构设计案例,比如 donnemartin/system-design-primer 就有不少。其实仔细研究那么几个就差不多了,剩下的就是自己工作慢慢积累了。毕竟,像编程这种需要动手的,看和做还是很不一样的。

而用 AI 编程其实也一样,最好的方式就是“在实践中学习”,具体来说,是在与 AI 协作编程的过程中学习。我们可以在不懂的地方问他,也可以让他讲讲他的设计思路。

最后来说说如何静下来学。调整心态就不多说了,我觉得从操作上来看,把要学的内容分成“需要深度理解和掌握”的和“只需大致了解即可”的两类会比较好(当然你分的更细也可以)。前者毕竟是少量,那我们就必须得一点一点死磕,找自己精力最好的时候去学习。至于其他的,快速过一下也无不可。另外,在学的过程中要尝试逐步构建自己的体系,这种“构建”带来的成长感也是极为愉悦的体验,尤其是很多知识点融会贯通的时候,个中滋味诸位只能自我品鉴了。

尾声

后面慢慢聊到了我的一些经历,比如降薪转行、放弃高层管理到一线算法研究、放弃大厂职位入职初创企业等等。其实,这些看似不可理解的行为背后都有一个共同的源头:“你真正想要的是什么”。对于我来说,保持赤诚和热情不断探索技术是排在第一位的,不到万不得已的确是不想妥协。至于以后,谁知道呢。可未知,本身不也很有趣么。

也祝愿 L 同学早日找到自己“真正想要的”,那一刻,请务必告诉我。


💡 共鸣时刻

我们大多数人为了生存,不得不参加工作。
有很多人不喜欢自己的工作,每天充满痛苦。
但请别放弃探索和思考,去找寻自己内心所爱。

这是一条荆棘之路,充满痛苦和挣扎。

但我们相信已经启程的 L 同学定能找到自己内心的满足。
心有所爱,一路生花。