当一位35岁的算法工程师决定辞职读博

“我叫TrancyWang,我在互联网行业工作近10年,进过外企,也去过大厂,主要从事算法研发工作。站在程序员35岁的岔路口上,我正在马来西亚读PhD,这是我所选择的道路。”

从一个企业的算法工程师,再到高校的PhD转型,在大模型时代程序员转型与发展方向这一问题上,TrancyWang也许能给我们一个参考答案。

大厂工作10年,“出走”在大模型的黄金时代前

我之前在国内工作了差不多十年,硕士毕业后陆续在Pwc、阿里巴巴、百度和平安待过,主要做算法研发方面的工作。总体来说,我的工作可以分成两块:一块是做数据挖掘,另一块是做医疗算法,像是医疗领域的持续学习(continual learning)以及自然语言处理(NLP)相关的内容。

2017年之前,AI 还远没有现在这么火。那时候行业里最热门的还是“大数据”,大家都在谈数据仓库、推荐系统、用户画像这些东西。真正让AI进入大众视野的,是2016年AlphaGo战胜李世石那一战,再加上2017年谷歌推出TensorFlow框架,我一直觉得2017年是AI的“元年”——从那以后,整个科技圈正式进入了“算法为王”的时代。

也正是在那个时间节点,我开始正式转向算法研究。因为之前在机器学习和数据挖掘方面打下了基础,所以转起来也比较自然。后来我加入平安,开始做和医疗相关的算法项目,比如利用算法模型分析医疗数据、做辅助诊断等。这一阶段让我感受到AI在实际行业应用中的潜力,也让我对算法与行业结合有了更深的理解。

从2018年到2022年,我的主要工作重心放在对话系统的研发上。那几年,NLP(自然语言处理)刚刚进入快速发展期,但和现在完全不同。当时的对话系统、知识图谱、自然语言处理、计算机视觉(CV)这些领域还是各自独立的,各有各的技术路线,基本没有现在这种统一的大模型生态。那时候的NLP效果也比较有限,模型大多是基于规则和检索的,还没有像现在这样能理解语义、生成自然语言。

回过头看,那段时间其实挺有意思的。虽然技术没现在成熟,但正是那几年打下的基础,才让后来Transformer、GPT这些大模型有了成长的土壤。可以说,我是见证了AI从“大数据时代”一路走到“大模型时代”的人,也是在那个过程中,慢慢摸清了AI技术与行业落地之间的距离和可能性。

当时的我觉得对话系统可能没有大的发展了,所以我在2020年开始就有读PhD的念头,于是我在大模型即将火热那一年也就是2022年开始读PhD,算是阴差阳错地错过大模型发展迅猛的时期。

辞职和读PhD的挣扎时刻

是否读PhD,我主要考虑到三点。第一点是35岁的年龄危机:程序员基本都有一个35岁的瓶颈,哪怕是在AI没有出现的时候,35岁就是程序员一个绕不开的槛。程序员到35岁时,如果没有做到公司的管理岗,或者没有在一定领域有一定话语权,基本就会面临被裁员的危机,这是很现实的事情。而且现在市场环境也不好,所以裁员是必然的事,可以说如果你不是公司的核心人员,那么你一定会经历裁员或是找工作的困境。

因为对大龄的程序员来说,基本上年纪越大,你的机会就越来越少,像我后面工作基本上都是内推,如果我选择去招聘网站投递简历,基本不会有就业的机会——年龄对程序员来说是一个非常大的限制。

第二个是我觉得人不可能一辈子做技术,技术都有到头的时刻,而在2022年年底GPT的出现基本验证了我的想法:从2023年到现在,AI确实在很多方面替代了人做的事情。无论是设计师、创作者,或是程序员这个行业都受到了AI的打击。所以我虽然错过了大模型的黄金时代,但我觉得我的判断没有错,我正好趁35岁之前读一个PhD,为后面的转型和从事AI相关的工作做准备,之后我可能会做一些AI产品营销相关的工作,那么我的角色可能就不仅是一个研发的人员,而是能做一些营销、运营、市场的复合岗位。

最后一点也是对我个人而言最主要的一点:我还是比较喜欢做研究,正好给自己一些时间去深度做一些研究和探索。所以在2022年,我32岁的时候,我选择了去攻读PhD。

读博期间的所感所悟

2022年我开始读PhD, 现在我主要的研究方向是做技术和商科的一个交叉研究,包含一部分技术和一部分商业化内容,23年开始我一直都在关注大模型领域的一些进展,而现在我主要在研究基于大模型的微调,多模态以及agent这几个方向。

读PhD让我的学习方式有了比较大的改变。以前的我不太喜欢读论文,但因为读博期间的学术训练,尤其是读论文的技巧的学习,让我养成了读论文的爱好。不仅是现在专业的论文,对于技术论文也养成了比较好的阅读习惯。

我从职场回归校园生活发生了一些变化,一方面是心态上:我发现我已经没有像学生时代那种按部就班的单纯,我在做研究的过程中能带着我自己的思考和目的性,让我的工作更好地开展。另一方面是圈子的变化:我之前的圈子比较封闭,我在工作中接触的人基本都是一个行业的,读了PhD之后,我认识了来自不同的行业的同学或是高校的老师,我跳出了之前的圈子,得到了比较多的行业交流分享机会。

而在工作内容上对我来说其实没有太大的变化,因为PhD相对来说是一个比较独立的研究,我在公司里基本是在自己的工位上做一些研发的工作或是研究,我现在读PhD也还是自己的空间里做一些研究,只是从工位转到了教室、读书馆、宿舍……并没有很大的区别,算是延续了我多年的工作习惯。

当然职场和高校还是有一定的区别:我现在做研究可能是非常纯粹的,不用去考虑太多,而我在公司就会背负工作和KPI的目标,会想着这个事情做不好怎么办,承受着相当大的心理压力。可以说,读博的这几年让我有更多时间去沉淀思考这个大模型的相关知识和演变,让我对过去大模型技术的发展,以及对未来的技术趋势的展望都有比较深刻的思考。

等到PhD的学习结束后,我可能还是会回到工业界,因为我本身并不是学术出身的,没有高校的工作经验,而且我对高校里面的工作也没那么感兴趣,所以毕业以后我可能还是会先去工业界,做一些大模型相关的事情,先把这个事情做好,至于以后能不能去学术界就随缘了。

无心插柳柳成荫的自媒体创作

做知乎这块纯属偶然,我和刘焕勇老师比较熟悉,刘焕勇老师是一位在人工智能领域具有广泛影响力的专家,他做的知识图谱在业内非常有知名度和影响力。

他有一个非常好的习惯:他每天会坚持写一篇技术公众号的博客,我经常在他的社群里看到他分享最新的大模型、Agent、Graphic或者多模态等最新的技术和论文,受他影响,我也开始也在知乎上写东西,分享论文。后面我也长期从事论文的写作工作,所以我就有更多的时间去进行知乎的创作,我大概是从去年10月份开始都一直在写技术分享相关的内容。

但阴差阳错的是:我写的技术内容其实没有太多人关注,但是我写的职场生活内容却得到了非常大的曝光。我有几篇文章的单篇阅读量达到了40多万,算是无心插柳柳成荫了。

后面我可能还是会把写字作为一个长期的工作。因为写作一方面是在表达自己的这个观点,另一方面也可以得到跟更多的人交流探讨的机会,可能你写的文章会不经意间对别人有一定的帮助,我觉得这是个非常有意思的事情。无论是别人的观看、点赞还是评论,都是我创作的动力来源。

我目前创作的主要目的还是去做免费的这种技术交流和分享,获得自我的成就感和价值感,我希望我能保持做内容型的账号,而不是让它变成商业化的赚钱方式。因为一旦开始商业化我就会背负一定的压力,目标也变得没那么纯粹,这是我不太想做的事,我希望让它变成一个纯粹的交流学习平台。

Trancy Wang的账号

大模型时代对程序员的影响

大模型时代对程序员的影响非常大。第一个是工作方式的转变,以我自己为例,如果我现在如果要去实现一个功能或做一个事情,我首先第一个想到的就是AI协作。以前需要写一个小的功能,程序员都要手动编码,现在AI可以帮我生成大量的重复性代码。我更多的工作是把我的想法写成prompt,类似一个审查者的工作。我会审查AI出的结果,虽然可能它输出的结果不是我理想的内容,我会做一些审查再整合,让我从代码输出者变成AI操作者角色。

因为AI可以快速生成原型,测试优化,可以让迭代更快,实现成本更低,程序员可以在几分钟内测试多种方案,可以用更小的成本和更短的时间去验证这个想法合不合理,那整个决策链路和创新节奏都会被加快。

还有很重要的一点是我觉得程序员变成了一个全栈工程师。以前后端程序员可能只管后端,现在后端程序员需要从前端的页面,到后端的开发,再到算法都要懂一些。换句话说就是程序员的基础是一个全栈工程师,在这个基础上程序员还要让自己变成一个业务架构师,因为AI生成的代码比较冗余不一致,程序员需要一个统一的架构规范和模块化管理,以保证代码的可维护性。

程序员不仅要在技术圈内成为一个全栈工程师,他还要跨出这个技术圈,了解更多的业务。你需要有更多的时间去加强对业务的理解,增强自己的产品思维和数据分析能力,因为这样的话你就可以和AI的输出结合出系统化的解决方案。我觉得这个倒是程序员相对AI的一个优势,程序员可以强化本身业务理解和跨领域的能力。因为AI是不懂业务逻辑的,你只有了解行业知识,用AI才能做出真正有价值的功能和产品。

这是从工作方式变化来讲,第二个是技能需求的变化。以前对程序员只有技术的需求,而现在对程序员的技能需求悄然发生了改变。第一个点就是prompt和AI协作的技能,这个比较关键,因为你只有设计出高质量的prompt,才能让AI生成符合需求的代码、文档和测试。很多人觉得AI不聪明,其实就是prompt文档写得还不够详尽和细致。第二个点是系统设计和架构能力,虽然我觉得AI未来一定会完善这一能力,但目前来说它还不具备非常强的系统设计和架构能力,对程序员来说,目前也可以打一个时间差去学习。程序员可以学习整个系统的架构,把这个架构里面的大模块,小模块,子模块功能拆分清楚,然后让AI一点点去实现,最后整合AI生成的零散模块,保证整个项目的性能、可扩展性和安全性。当然, AI 可能会生成一些漏洞错误或偏差的代码,所以程序员还必须掌握安全编程、数据隐私以及模型偏差矫正的一些技能。

最后一点是快速学习和适应能力,现在AI工具框架模型更新太快了,掌握新的工具比掌握技术或某种语法更重要一些,此外,程序员还要多关注开源社区和行业动态,保持一个敏捷的学习能力。程序员需要不断的去快速上手新工具,理解模型的原理,跟AI协作去把东西把一些业务场景快速搭建起来。

总的来说,程序员要从写代码转向成驾驭AI、整合系统、解决问题的人,要从单纯的编码能力扩展到系统设计、业务理解、AI协作、安全和快速学习能力。

AI是危机?机遇?还是挑战?

对我来说,AI带来的压力其实比机遇更大。去年开始,我慢慢尝试用AI来帮我读代码。不得不说,它刚出现的时候确实挺有用的。像我们做算法的,常常要处理各种矩阵变换,特别是在计算机视觉(CV)领域,向量维度一多就容易绕晕。没有实际的输出例子,很容易在细节里打转。读一些深度学习的论文也是一样,光靠自己啃那些公式和推导,常常要花好几天。

后来我开始用一些AI工具,比如腾讯的 CodeBuddy 或阿里的通义灵码,让它帮我一行一行解释代码,还能顺手生成示例。这样一来,很多以前不太懂的地方就一下子明白了,也更容易看出算法的逻辑。久而久之,我甚至会让它帮我整理知识,把散乱的技术点串起来、做对比。可以说,它在学习和工作上确实给了我很大的帮助。

但也正因为这样,我有时候会觉得有点不安。AI 太方便了,很多思考的过程都被它替代了。久而久之,人会变得懒,遇到问题第一反应就是问AI,而不是自己去推一推、想一想。对我来说,这种被“喂养式”的学习虽然高效,却也让我更清楚地意识到AI的帮助越大,我们被它取代的风险可能也越近。

在马来西亚

虽然前期AI帮我解决了很多问题,但之后我的代码阅读能力却在下降。比如写大段代码的时候,我第一个念头往往是AI能不能帮我写,这样一来,我自己的思考能力和编写代码的能力都在不断下滑,就我个人来说,相关技能明显退步了,这给我带来了不小的危机感。

而且AI的替代性太强了,我有时候会问自己:以后程序员还能做些什么?无论是程序员还是其他职业,有很多事情AI已经可以帮你做了,而且AI还比大多数人做得更好。我有时候想起来这个事情非常有无力感,因为AI帮我解决了很多事情,那么我很多事情可能就不需要再做了。可是不需要再做的话,这个岗位又该何去何从?我想起来这一点就有点绝望,但技术的趋势又是不可阻挡的,虽然AI不能解决100%的问题,但是AI可以解决99%的问题,剩下的1%后面AI可能也能解决。所以说我觉得AI对个人,对整个社会的分工,职业的影响,或者是对行业的颠覆,都会起到一个非常大的催化剂作用。

未来大模型的发展趋势

我认为未来大模型的发展趋势总共有五点。

第一点是模型会更强更通用。大模型会越来越大,越来越智能,现在大模型处理文字处理得非常好,而某些多模态的模型对图像的理解也很好,今后大模型一定会具备更复杂的感知能力,因为大模型在文字和图像的处理已经做得很优秀了,后面它一定会在视频、语音等方面实现突破,越来越多的跨领域任务都可以靠一个模型完成,大模型会变成一个小型的通用智能助手,而且这种通用大模型最后一定会在大公司里出现。

第二点,我认为要关注垂直行业的电子化加速,包括医疗、金融、教育、制造,它都会有专门定制的大模型,未来五年行业不再是一个通用模型加一点微调,它肯定是深度嵌入各种业务流程做决策、做优化和辅助创作。

第三点是它的生成能力。生成能力的提升会导致辅助工具的普及,生成代码、文档报告、设计方案都会越来越高效,越来越准确,程序员、设计师,数据分析师都会大量使用这种生成工具,整个工作方式都会被颠覆和改变。

还有一点极为关键:AI 带来的安全管控问题不容小觑。必须要求 AI 输出的内容具有最终结果与解释说明的可审计性,以此防止出现偏差和不当应用。无论是企业还是个人,都应当重视 AI 的商业管理。最后要提到的是轻量化方向。轻量化的模型可能具备更高的效率,它能够在手机等边缘设备上运行,不完全依赖云端,更多任务可在本地完成,这相当于边测模型的计算。

未来的技术转化趋势,主要体现在以下几个方面。

首先,通用智能将不断接近现实,我们后续必然会迎来一个通用化的大模型,这一点毋庸置疑,它的出现只是时间问题。其次,行业化与深度化的定制将成为主流。无论是医疗、金融、教育还是制造业,都将拥有高度定制的AI工具,这些工具会深度嵌入业务流程,辅助决策与优化。

另外,我想补充一点,当前大模型的脑力,包括其感知能力与推理能力,均已取得重大突破。若将这两者与人脑对比,人脑具备强大的控制能力,而在此基础上,具身智能将成为实际可行的行动能力,就像如今大模型的涌现一样,我认为十年后,具身智能将成为一个极为显著且火热的赛道。

我觉得对程序员来说,接下来这几年其实挺关键的。AI的出现确实改变了很多东西,但我们能不能在这个变化里稳住脚跟,还得看自己。

首先,基础一定要扎实。算法、数据结构这些老生常谈的内容,其实一点都不过时。AI再聪明,也只是工具,真正理解算法的人才能看得懂它在干什么,甚至能发现它出错的地方。还有数学,别嫌枯燥,线代、概率这些东西到最后都能帮上忙。它们是编程世界的“底座”,越牢靠越好。

其次,要学会和AI打配合。现在的编程越来越像是“人+AI”的合作,而不是单打独斗。AI能帮你生成代码、写注释、查bug,但关键是你得知道怎么问它、怎么引导它,最后还得判断结果靠不靠谱。换句话说,程序员以后不仅要会写代码,还要会“带AI干活”。

再一个,跨界能力真的越来越重要。光会写代码不够了,你得懂自己所在的行业。比如做金融的得懂理财逻辑,做医疗的得懂一点医学常识。只有知道业务在干什么,写出来的程序才有价值。

最后,别忽视软技能。很多人觉得技术好就行,其实不是。能沟通、能带团队、能把复杂问题讲清楚的人,才更有发展空间。AI可以替你写代码,但替不了你做人、替不了你思考。

总的来说,未来最吃香的程序员,不是被AI替代的人,而是能用好AI、让AI为自己服务的人。这才是真正的本事。

25年在新加坡

如何保证AI生成代码的质量?

现在AI生成的代码可靠性还是比较强的,如果程序员觉得AI生成代码的可靠性不强,可能是因为程序员给AI的指令不完善导致生成的代码不可靠。比方我要让AI去帮我读某个代码,或者实现某个工作,他输出的东西版本不对,这实际上是我没有跟AI阐释这个功能或某个函数、某个包需要的版本,如果没有告诉它的话,AI默认会用一个比较新的版本,所以我用它的代码就可能会跑不通。prompt写得不好,AI可能就生成不了可靠的代码。

其实我现在不太喜欢用AI写代码,我反而喜欢让AI帮我读代码。因为我还是喜欢从Github上下载别人的源代码,或是自己写一些代码,让AI帮我纠错。一方面我是为了让自己保持编程的状态,另一方面我希望让AI回到它辅助者的角色,而不是主导者。

说到这个问题就涉及AI代码生成的定位。既然要让AI扮演辅助者的角色,那么就需要构建一个生成、测试、迭代的闭环。比如,当我自己要实现某个功能时,我会让AI先完成编写,然后自己进行测试,再让AI提供一些大的测试案例,让它对自己编写的代码进行测试。如果测试通过,我就会采纳它的代码;如果未通过,我就自己进行修改。

另外,AI存在一个很大的问题:如果指令给得不好,它就会生成一些不可控的代码。因为如果不给它设定编码规范,它生成的代码就会非常混乱。比如在Python中,它可能会把所有内容都写到一个函数、一个文件里,而不会进行方法重构。如果我不告诉它需要对某些方法进行重构,或者某个方法要实现什么功能、采用什么设计模式,它就会直接生成一段脚本,而不是一个完整的、规范化的函数代码。我觉得这也是一个非常重要的问题,即AI往往倾向于生成脚本,而非规范化的单元代码。

第三个方面,我觉得AI可能会对同一个代码、同一个功能生成多个版本,这是因为它本身就有这样的特性。如果给它一个指令,对于同一个功能,它会产生很多不同的想法,进而生成多样化的版本。然而,有些版本是我并不需要的,而且我觉得某些版本还存在问题,但AI自身可能并没有意识到这些问题,也就是说,它可能还不具备自我校验的功能。

所以,回归到这些问题,我觉得有几个关键点需要注意。第一个就是看代码本身,包括检查它是否存在语法错误和风格问题。当然,AI生成的代码基本上没有语法错误,但风格上可能会存在一些问题,还有一些潜在的bug。第二个就是,AI生成的功能必须要经过一些大型测试。也就是说,对于它生成的一个功能,必须要有一些输入输出的测试,以确保我的输出是符合预期的。第三个就是,AI生成的模块需要与应用系统整合起来,进行端到端的测试,确保接口、数据流、依赖等方面都能正常工作。然后,还有一个方法,就是对一些关键性的功能建立一个标准答案,将AI的输出与标准答案进行对比,看是否正确。

另外,我觉得虽然采取了上述一些措施,但还有一点需要注意:程序员还需要去检查AI生成代码的逻辑架构和异常处理,包括模板、数字异常值的处理、重复代码等问题。可能从长期来看,还需要统计它的bug修复率、回滚次数等指标,以保证代码的可维护性和长期可靠性。

大模型时代程序员的真正价值

我认为在大模型时代,程序员的价值与所需掌握的能力,需从短期和长期两个维度来考量。

短期内,程序员拥有AI尚未完全掌握的能力,这便是程序员的价值所在。具体体现在以下几个方面:

第一是问题理解与分解能力,AI目前还无法完全精准地理解和分解复杂业务问题。程序员的价值在于能够将复杂的业务问题拆解成AI可处理的小任务,这就要求程序员懂得如何提问,以及怎样把业务需求转化为AI能够执行的指令,这比单纯让AI写代码更为重要。

第二是AI协作与产出管理能力,程序员不能仅仅让AI去写代码,更要引导AI跳出常规,提供最优的解决方案,并将这些方案组合成多个产品矩阵。这就如同打造一个“AI驾驶舱”,把模型当作得力助手,而非简单的替代品。

第三是前面提到的系统架构能力,AI在系统设计和架构方面尚未完全具备相应能力。因此,程序员在模块划分、接口规范制定、存储安全措施规划以及安全策略制定等方面,仍大有可为。此外,AI虽能执行已有模式,但设计新产品方案目前仍是人类的强项。

与传统的编程能力相比,大模型时代呈现出以下变化:其一,AI可以替代常规代码的编写,但这些代码并非高质量的成功代码;其二,大模型时代更加强调系统设计和任务理解能力;其三,创新和业务理解能力成为程序员的核心竞争力,程序员需要深入了解业务,或者长期借助AI辅助来实现业务目标。

从长期来看,上述这些能力或许也可能会被AI取代,因为它们大多是可以被量化的。

所以,未来十年到二十年,许多行业消亡或许将成为必然趋势,就像如今的自动驾驶领域,虽然目前还存在各种各样的问题,但未来十年这一趋势将不可阻挡。我认为,具身智能和自动驾驶在未来十年一定会得到广泛普及。届时,人们能做的事情会相对减少。

技术的飞速发展会带来诸多问题,也会给人们的心理造成影响,比如社会内卷加剧,以及因AI替代人类工作导致岗位减少,人们可能会产生各种心理问题,能做的事情少了导致无所事事,进而引发更多状况。因此,从长期来说,我认为人类需要回归内心的本真,追求真善美。

未来很远,但也很近。但这并不意味着程序员在大模型时代将失去立足之地。相反,这为程序员提供了转型与升级的契机。

=故事征集=

《开发者说》是程序员客栈推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台。

欢迎大家推荐朋友或自己来参加我们的节目,分享与对话是一件利他又利己的事。主持人木木:s15139

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值