心法利器
本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。
2024年新的文章合集已经发布,获取方式看这里:再添近20万字-CS的陋室2024年文章合集更新,更有历史文章合集,欢迎下载。
往期回顾
- 心法利器[130] | RAG效果调优经验
- 心法利器[131] | 盘点踩过大模型多轮对话的坑
- 心法利器[132] | 大模型系统性能优化trick
- 心法利器[133] | 为什么我的大模型效果不好
- 心法利器[134] | 算法工作6年经验分享:把活干得漂亮
前几条做了一个问题收集:提问收集-0612,从评论区反馈的问题来看,更多是成长角度,可以看得出大家的焦虑还是挺严重的,我在和大家交流的过程其实也有很多反思,在这里和大家分享一下我自己的想法吧。
- 破除几个误区
- “大厂”误区
- “流行”误区
- 技术成长思路
- 35岁危机问题
- 后记
补充,下面的一些观点更多是基于自己可能不太成熟的理解,如果有什么问题,欢迎大家在评论区里讨论。
破除几个误区
类似的说法其实我在很多文章里穿插过,这些思维误区可能会很大程度影响我们对自己、环境和未来的误判,此处我比较直接的点出来,方便大家理解和交流。
“大厂”误区
比较极端的观点是,“我是不是进不了大厂就废了”,甚至是所谓的“中厂”也很焦虑,“小厂”就更不用说了,对此我的评价更多是,不要把“大厂”与否当做自己目前状态好坏判断的因素,这个问题不像“考不上985/211”就不太好那么简单。
首先,回到大家在选择上比较关心的点,从工作本身出发(排除掉城市、通勤之类的因素),不外乎就是薪资、技术成长、团队氛围,很多东西看起来和大厂高度绑定,但实际上仔细分析下来,这几年其实已经没那么明显了。
- 薪资这个事,大厂也分很多种,有些厂就是相对会保守一些,有些会激进一些,比较保守的公司,其实相比其他的公司,就不会那么有优势,反观一些小的创业公司,可能会在人才上非常愿意花钱,如果真的在意薪资,小厂的薪资待遇未必差到值得一票否决。
- 技术成长,也是有倾向的,维度也可以分很多。首先按照团队内的技术进展来分,早期的开荒阶段,中期的迭代阶段,后期的发展阶段,所需的技术模式是完全不同的,早期开荒倾向于快而稳,这时候更多选择比较经典已经被反复验证可行的方案,中期则会开始尝试当下比较新的技术,到了后期,基本已知的招数就有了后,就要开始探索了。不同阶段对人的技术成长倾向性不同,开荒能力、迭代能力和探索能力,大厂更容易有中后期状态的团队,能做的技术就比较潮,或者说做出来的东西就能被认为是“前沿”,但不代表大厂这种类型的遍地都是。无论是小厂还是大厂的心团队,开荒因为选择比较快而稳的方案,都会显得比较low,这不代表没有成长。
- 团队氛围上,大小厂的差别更加小了,更多适合遇到的团队风格了。有的团队比较鼓励分享,有的团队比较卷,非常不好选择。
然后需要说的是,大小厂的分工差异。大厂中团队的人数通常会比较多不少,分工就会比较细,在这样的团队内工作,培养的更多就是更加精的能力,简单的说,深度,相比之下,小团队在小厂会比较常见,但是仍然要完成一个项目的开发,所以分工就会比较粗,这会培养出广度比较强的能力,此时大家的视角下,就是隔一会就有个新活到手里,变化比较多。形成的技术栈是粗还是细,是深度还是广度,没有优劣之分,都是成长。技术层面,广度和深度都有应用场景,继续是小团队更喜欢技术广度高的人,大团队分工细的,更喜欢技术深度高的,当然如果深度广度都有的,肯定就香饽饽了。从这个角度看,大小厂真没什么优劣。补充一个细节,大团队的容错率相对高,所以对新人会更加宽容,给出更多空间给新人成长,如果是小团队,工作紧任务重,上来就要干活,而且要求还不低。
再者,是大小厂内部整体的技术状态。越是大厂,越有技术沉淀,甚至形成完整通用的技术方案,对于高频出现的同一个问题,在多个技术积累下便能提升效率,好处是效率真的很高很快,但缺点是,在封装足够多以后,很多人可能就接触不到底层技术了。于是会有这个现象,在业务部门,要用比较通用的某个框架,直接拿来用即可,最明显的例子就是大模型,大模型的微调、强化学习之类的工作都是交给特定的团队完成,对于业务部门而言更多就是直接调接口,微调的工作肯定就少很多,这种知识,如果你是想学的,那就会比较难,不见得说去了大厂,就能学到你想要学的东西。
体面。这绝对是大厂的优势吧,具有“让别人觉得你很强”的能力。无论是父母家人,亲朋好友,还是面对HR,大厂的标签总能让别人觉得你很厉害,生活上其实是更有面子的,工作上,找工作会相对容易,自己也会觉得比较舒服,至于福利,这跟大不大没关系,和公司福利政策有关,大小厂都有开水和不开水的区别。
避免二极管,还是要捞一手,并不是大厂一无是处,顶多只是说,大厂并不是那么绝对的优秀,小厂不是人生就完了,不过相比之下大厂肯定是优先级更高的选择。大厂中遇到比较好的前辈、团队概率还是比较高的(注意是概率),政策啥的也比较完善(纠纷比较少),也比较稳定(可能会有人说隔三差五听到大厂裁员,我的回答是,小厂裁员甚至倒闭是悄无声息的),只能说,大厂有着比较适合成长的土壤,有机会,而且能去比较好的团队的话,还是可以的,但不应该因为自己去不了而感到难受,而是进一步通过观察了解环境调整心态,寻求机会破局,从内部自己找机会突破也是一个很好的选择。
“流行”误区
作为一个经历过多个NLP版本的老人,对所谓的流行感觉真不明显。比较关键的里程碑,机器学习->深度学习(word2vec)->动态表征elmo->预训练模型(bert)->大语言模型(LLM)->推理模型(deepseek),每次都有很相似的说法,“XX后面就不用做了”,“XX已死”,此次技术更新都确实很大,每次更新都有新的热议话题,但是每次在发展的过程都能发现很多缺陷需要突破,但一旦看清了本质,对这个其实就会很淡然了,与其说是压力,不如说是机遇。
我想在这里传达的观点是,不需要为新技术感到压力,不需要追求“自己在做什么技术”,不用为自己“自己正在做的不是最流行的”而感到焦虑,说白了不要轻易觉得某些技术比较“low”。
总会有新技术,总会有新活。前沿的技术变化,突破性技术在大家视角里通常是骤变,一个新东西出来和老的差异巨大,一般就是突然出现的,但是日常工作中面对的工作并不是,需要众多的后续验证,技术设备需要跟上,再者除了技术人员本身,还有产品、老板、投资人、用户需要去适应和接受。一时的没有做有关技术,并不需要焦虑,更多是需要有时间看清形势。
完成任务是核心目标。在技术选型上,我是比较结果导向的,不论使用什么方案,最终只要完成任务,最好还是低成本,便是可以的,在这个思想下,在技术选型上,完成任务是最核心的要求,对新技术并非排斥,但并不能因为尝试新技术而影响了核心任务的完成。当然,如果任务里有需要“增加外宣价值”、“对新技术进行探索”的描述,那新技术肯定就得提高优先级。
学和做要分离。我们要把学习和具体应用两个事分开,学习在现在的版本下是需要持续做的,技术日新月异必须跟上,但做事,我们要根据实际需求来选择,不要感到懊恼和焦虑,再者,我们可以在工作过程对新技术进行尝试,但不能孤注一掷,不能“务实”,做好planB。
主动寻求空间对新技术尝试。我的视角看挺多人的困境是,领导对有关的工作有安排,包括一些具体的方案,但这些方案可能在本人看起来不合适,或不适合个人成长,或不符合前沿技术,所以感到焦虑,这点我也曾经遇到过,我的解决方案主要是这两点:
- 主动和领导以及前辈交流,该方案选择的背景,理解背后的意图,这是弥补信息缺失的部分,同时也能学到大量技术选型之类“模型以外”的知识。
- 按照自己的理解,腾出时间,自己去尝试一些自己认为还不错的方案,前提是不耽误正常工作,尤其是自己还算是新人的时候,很扎心,领导的建议可能更可靠。当我们测试起来真不错,那可以拿出来大家一起学习交流,这个氛围是非常好的。
当然,如果没有给足够的空间去尝试新东西,那确实可能会对成长有所影响,此时要考虑解决这个问题了。
综上,希望大家尽快对“流行”有一个比较理性的认识,我们可以去学和尝试,但是和日常工作需要有所区分,我们可以对目前的一些在用的技术产生疑问,更多的,我们需要去尝试和破局,多沟通和分享。
技术成长思路
从新人到老鸟,自己也走了很长一段,我按照我的视角总结一下我自己的经验吧。
先提一下在很早之前写过一篇算法新人的成长,在这里:心法利器[30] | 算法新人如何在工作中成长,这里的建议至今仍然比较有用,此处我就不赘述了,我说一些新的想法。
首先,对新人而言,尽快熟悉工作,并逐步成为这项工作甚至这类型任务的“一把好手”。算法这种工作在分工中重合度通常不会很高,不像一条条的流水线或者销售那种模式,要不是算法任务类型,要不是具体的业务场景,总有一些区别,这导致其实自己的工作总有独特性,此时如果这个事做好,便能具备一定的不可替代性。我们先从最简单的一个活做完,然后基于此去做有关的调研和尝试,了解整个任务的研究现状、常用方法等,然后去尝试,对各个方案都有很扎实的把握,加上你本身就是做着活的,所以有良好的实践场景,干中学,不矛盾。这跟要学前沿的知识不矛盾,前沿知识是需要关注的,好不好用,把东西准备好就能实验,快速落地尝试。
第二,从点到面快速突破。从“一把好手”到“多面手”,一个事能做好后,开始做更多的事,这样步步为营,逐步突破,便能逐渐成为一个领域的专家,在一个范围内形成影响力,而且是技术层面实打实的能力。早年我的经历,文本分类做完,我开始做实体抽取、语义相似度,逐步便把整个NLU领域的核心问题给做明白了,随后便开始拓展更多的任务甚至到了预训练模型,说不上专家,但是NLP的任务基本能搞得定吧,包括一些常见的系统工程也能搭建起来,这非常有好处。至于深度,也是要的,但不是要一个任务做的很深,而是从面到体,光一个任务的深是深不下去的,得把坑挖大才好挖深,否则沙子又会填回去,当你的知识成体系了,例如搜索query理解的,例如推荐召回的,或者更大,例如搜索领域的,那在持续深挖前沿和内在逻辑,自然就会深入了。
然后,开始关注事,什么事是有价值的,什么事是感兴趣的,从技术的局限视角脱离出来。这个阶段,通常大家都可以在给定一个任务的时候,选择合适的方案快速解决,这甚至是一个完整的,覆盖上下游,覆盖迭代周期的技术方案,然而技术出身的人通常会有个幻觉,觉得自己的技术很厉害,很实用,很潮流,但无人识千里马。技术是依托于事才能体现价值的,他帮我们、帮用户完成某个任务,他才有价值,多么炫酷、困难的点,脱离了实际应用,价值就要大打折扣,至少在商业环境,在企业公司,价值才是一切,可能会比我们想象的还要功利,甚至,得是短期价值(很多公司和团队压根活不到长期价值兑现的时候),对长期价值的耐心也不会很高,至少这个环境下是这样的。在这个观点下,技术只是支撑事做好的途径,哪怕现在视角我们要用单行,更多是为了更好地PPT,一旦小模型、传统模型能以更简便、更省钱地就把事做好,是不介意挂羊头卖狗肉的。因此,把事做成,产生价值,才是这里的关键,此时,我们学会去观察业务,了解价值,找到自己对事的兴趣所在,可能更加重要。
这里,一直有个关键词贯穿其中——主动。作为新人,要主动学习,主动沟通,主动尝试,主动突破,主动发现新的机会,主动形成自己的核心价值,这里一直都需要自己主动,诚然我们每天都在那被要求干活,但我们要在这里面主动寻求机会寻求改变,而不是随波逐流,我们要时刻有个意识,我要做什么事情,明确好,然后和现实情况做好权衡,一步步尝试执行。
35岁危机问题
之前的我可能还很自信,只要自己技术好,35岁危机就不是大问题。现在的视角看,我的想法更加成熟了,中年危机客观存在,但不会全都抛弃,会有一部分老师傅被稳定地保留下来。
我目前发现,随着技术的进步,技术门槛确实在降低,持续地有新人来,技术还很先进,尤其是现在大模型环境,很多任务甚至都不需要算法就能搞定了,但是但是,此时需要的角色是指挥大模型干活 ,大模型诚然很聪明,但得知道人的需求是什么,而大模型也不那么聪明,不是产品经理的“一句话需求”就能轻松做好,难听的说,技术的迭代并非淘汰掉一个行业,尤其是新兴的AI行业,而是淘汰掉一些初级,负责技术执行,重复工作的人。老师傅对数据、对算法、对工程逻辑等有丰富的经验的话,反而并不那么容易被淘汰,甚至能发现很多潜在的技术问题,提前规避风险,这点是老师傅特有的优势,这便是专家的必要性,而且是堆叠年轻人所完不成的事,哪怕是应届生,现在也越发倾向于往“精”去走,HC减少但是薪资提高是这几年的趋势。
因此,拥有技术优势的人,反而能更加稳定,但相反,年龄增长后技术成长缓慢的人,会因为年龄带来的成本增加而被应届生淘汰。如果自己没法做到更好的东西,和应届生没什么差别,在残酷的森林法则下,自然要被淘汰。如果还要生存,那不外乎是这几个角度。
- 如果还想留在这个领域,卷,努力提升自己,形成团队甚至是行业的影响力,体现价值,让大家“舍不得让你走”。
- 如果想走,那多考虑未来的方向,尽早打算,尽早安排,新领域很可能更要吃经验,毕竟你是期望用这个方案来解决35岁问题的。
- 两手准备,毕竟狡兔三窟。
(听起来就像是多喝热水)焦虑是正常的心理现象,但也只是一种情绪,并不能帮助我们解决问题,而我们要解决焦虑,真正要看的是焦虑背后的问题,解决问题,执行计划,才是关键的。方案随便想可能有很多,但哪怕是去了解的人都寥寥无几,停留在“35岁危机”的思考,时间长了真没什么意义,更多是开始考虑“XX有没有搞头”、“考XX合不合适”、“烤XX又合不合适”。
后记
在这里,我继续叠甲吧,都是一些自己不太成熟的观点,觉得有问题的欢迎在评论区里友好讨论,我也一起学习。