查看原文
其他

心法利器[65] | 一些技术和成长的讨论【答读者问】

机智的叉烧 CS的陋室 2024-04-24

心法利器


本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有

2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里:CS的陋室60w字原创算法经验分享-2022版


往期回顾

前言

上周和这周五,我分别都收集读者们的提问,这次来统一回复一下大家的问题吧。对于大家问的比较集中或者比较接近的,我有做一些归纳整理,至于有些超纲的,我已经在评论区回复大家。

另外,很高兴大家问的问题都比较正常和严肃,一些比较歪的问题一个都没有,挺好的,感谢大家饶了我。

下面我把问题归纳整理为这几个问题,看看有没有遗漏的,有遗漏的可以继续评论。

  • 新人成长问题。
  • 日常学习问题。
  • 业务和深度问题。
  • 大环境问题。
  • 35岁问题。
  • 焦虑问题。

新人成长

有关新人的成长,其实之前我有一篇文章详细聊过:心法利器[30] | 算法新人如何在工作中成长,现在回头看,有一些遗漏了,这里重新梳理,展开回答吧。

新人知识学习

首先要明确一个点,就是学校学的再多,也不可能覆盖实际工作所需要的东西的。因为学校很难有这个视角,学生面对的绝大多数是老师和同学,而很少有老师了解实际工业界的工作,毕竟老师的工作和企业内的工作是有差异的,所以其实实习是很好拓展视野的方式,如果要学到实际应用中的东西,那就是用才是最快的,从这点出发,我自己是挺推荐自己在能保证毕业的前提下去实习的。

第二,是尽管不能学完,但是能尽可能学,类似最基础的常用计算机语言、linux的基础操作,至于算法能力上,根据自己未来想要进入的领域,多了解一些常用、基础、可靠的方法,在学校大家通常接触的都是最前沿的技术,相信大家已经比较熟悉,例如NLP领域的预训练模型及其使用(em..,如果不会的赶紧学了额),但是在实际应用中,预训练模型并非一家独大,很多场景其实不适合预训练模型,相反一些基础模型可能比较有市场,例如分类中的textcnn、NER中的bilstm-crf等,大家可以根据自己未来的方向,对1-2个任务进行深入学习并进行实验,了解各个方案的区别和优缺点,这个会更有意义。

第三,判断该学什么。这个其实很简单,就说一个点大家就能明白了——工作上需要啥就学啥。新人的技术栈很难是完善的,但是我们又不清楚该学什么东西,还可能学了当前工作下不太用的东西,效率会打折扣,因此最快的方式就是遇到什么学什么,学当下需要用的东西,这样能让你的工作快速上手,效率提升。

第四,学习手段,分两步走开展学习。第一步是模仿学习,第二步是系统学习。模仿学习在于结合当前的工作需要,通过模仿前辈之前写的代码的方式进行学习,这种方式的优点在于能让你很快开展工作,但是缺点是知识点容易缺失,而且会出现知其然不知其所以然的情况,容易在工作中挖暗坑;系统学习则是在自己的闲暇时间,针对特定知识点进行系统地、统一地学习,这种方式速度会比较慢,但是知识点完善后自己在日后也能独立承担这块任务。总而言之,学习是有必要的,而且是大必要,而且要持续学习,这个才是在技术上站稳脚跟的根本手段。

职业晋升

职业晋升这个,最近我也一直在思考,但是感觉又找到一些答案的苗头吧。

首先,前沿技术一定要会,这是一张自己重要的牌。这点众所周知,也是行业必须吧,前沿技术要掌握,技术深度要有,这是成熟的技术人必备的素质。

第二,上升到“解决问题”的层面,这其实是个广度的问题。要想解决一个问题,需要的是很多元化的综合能力,例如一名算法,逐步成长后需要独当一面,视角就要更加广阔,而不是局限在那个模型本身,你需要关注数据的来源和可靠性,你需要和前端后端合作,你需要解决性能问题,甚至还需要和产品沟通,和团队其他同事沟通等,这个就不是技术本身能解决的问题了。

技术瓶颈

首先,想说的可能有些逆潮流。前沿技术在企业里好像没那么被提倡。工业界大部分需求来源于功能和一定程度的调优,而并不是真正最最前沿的,至少大部分企业并不是,之前“人上人”的各大厂研究院现在的热度下降也一定程度体现,前沿技术是企业保持长期先进性的一个手段,但是其实这件事不赚钱(很俗,但是企业确实是以营利为目的的),一旦要开始开源节流,这种前沿探索工作就会被停止,甚至被砍掉。大家更关心的是事情做得好不好,而不是“牛不牛”,当且仅当这个东西要被推广,才会被需要,此时,领先技术只是一个“卖点”罢了。真正在乎的,是“解决问题”,前沿技术能解决问题,那前沿技术可用,但是如果解决不了,那这个东西就没有价值。不过补充一点,前沿技术不那么被提倡只是在应用过程中的,但是就个人能力而言,还是需要掌握这些技术,毕竟这些技术迟早会变成“主流”。

第二,深度觉得上不去,可以尝试提提广度,去看看和自己相关的人在做什么,在想什么,甚至是自己的领导,都可以去看看,看完成他们的工作需要什么素质,这是个比较功利但是确实是比较有效地找到行动项的方式。

第三,从紧跟前沿变成探索前沿。我们可能会乐于跟随一些行业大佬,做一些工作,而在逐步跟上他们后,其实我们要开始做的工作是,判断某些方向是否合理,自己根据自己的需要进行探索和学习,这个东西可能是现在不存在的,或者知道的人不多的,但是你可以判断他在未来的价值,这就是所谓的前瞻性,这也是要进一步学习所需要的一个视角。

小结

这里主要是给大家分享一些思路和视角吧,希望能对大家有用。

当然,这里只涉及学习,还有一些别的东西,可以在我的这篇文章里看:心法利器[43] | 算法工程师的晋升思考

日常学习

日常学习是一个比较有意思的问题,我都来简单聊聊吧。

学什么

学什么可能是一些老手常见的问题了,在很多知识都具备后,该学什么是一个比较尴尬的问题,我这里提供几个思路吧:

  • 现有技术的前沿方案:例如论文的跟进、企业的分享等,这些是常看常新的。
  • 拓展广度的学习:例如做NLP的,可以去看看CV的、推荐的东西,或者去了解NLP中更多其他任务的方案,例如机器翻译、阅读理解、知识图谱等。
  • 领域之外:有些领域之外,也是可以学的,例如经济学和管理学,我都有些涉猎,

怎么学

有关怎么学这块,看书这个相信大家都比较懂了,有自己的方法,这里我就重点讲讲论文怎么读,这里重点讲日常学习的论文。

  • 看摘要——谷歌翻译。如果没什么价值,就可以直接过掉——记录关键创新点。
  • 关注核心创新点,尤其是模型那块。
  • 如果对领域不太熟悉,可以看看introduction,里面谈的论文也可以拿来深入阅读。
  • 实验和结论也可以看看,里面很可能会有一些日常也可以用的东西,尤其是消融实验这里。

然后开始记录:

  • 论文基本信息。
  • 核心亮点——作者提的和自己提的。
  • 主要收获。
  • 个人评价。

笔记还是要记的,不要指望大脑把这些东西都记住,而且这都是虽查随用的东西,脑子里记住有这件事,细节都交给自己的笔记吧。

偶对,我之前有些过有关读论文的方案,大家可以参考:心法利器[55] | 算法工程师读论文思路

新技术的学习

我的习惯主要分几步走:

  • 是否着急用,如果着急用,直接找快速稳定的解决方案,能搬最好,否则选择系统学习。
  • 系统学习,有系统的可靠的材料,直接去学,例如NLP的话CS224N快速掌握基础,如果没有的话,从论文入手,看两种文章,一个是综述,另一个是前沿口碑不错的论文(尤其是其introduction部分)。
  • 第三步,找baseline和数据集,快速自己尝试,自己做出来。
  • 对各个方案进行对比和实验,包括一些case分析,了解可能遇到的难点。
  • 开始后续工作,必要的技术方案可以开始准备了。

业务和深度的问题

首先提一个问题,什么叫做深度。我对深度的理解,归结起来其实是对一些有关问题和有关技术的理解程度。

那么,业务和深度之间的关系,我的理解是层次是比较多的。

  • 业务是要求我们要有深度的,毕竟解决问题,要求的是我们对自己的手里的方案有理解,并能更具实际情况进行选择和执行。
  • 业务不仅要求我们有深度,还要有广度,因为问题的多元化,一个技术很难解决问题,所以对广度,会的技术点要更多。
  • 然而深度,对业务的提升是有边际效应的,太深的技术对业务的解决能力提升会变得不明显,很多有深度的东西,业务上无法使用或者没必要使用。
  • 对技术的要求上,无论是面试笔试,还是任职晋升,又对技术深度有很高的要求。

这里其实最矛盾的是后面这两点,我想也是很多人很迷惑的,就是业务上不用,但是技术上又有要求,于是有了“面试造火箭,工作拧螺丝”的问题。

我的观点是这几个吧:

  • 技术深度是对技术人解决问题上限的要求,从人力层面来看,对考察者的要求不仅在于解决当前问题,还有长期问题,甚至是一些暂未可知的问题,所以对技术深度有要求是不可避免的,这也反推我们,不能为了解决当前的业务问题而放弃对技术深度的训练。
  • 业务理解其实和技术深度并没有那么对立,日常的case分析和业务讨论,其实也在围绕着一些方案的优缺点进行的,这些讨论和思考也会让我们对模型的理解更加深入。

所以,这也就要求我们既要业务理解,又要技术深度,这两者要兼顾,我们可以做到的,有这些事吧。

  • 对自己所在业务,要有理解,尤其是场景下常见的case和常见问题,要了解并且能知道一些解决方案,这就是业务理解吧。
  • 自己常用的技术,要了解多个类型的技术点,这个属于知识型,平时多看看基本能获取。
  • 多试验,一方面是自己业务的数据,另一方面是开源通用的数据集,多用上面提到的常用技术进行尝试和对比,能明确多个方案的优缺点,这个就是所谓的深度。

说实话,会推公式,这个本身并不算深度,我自己本身比较实战派,重在解决问题,公式背后所体现的模型的性质,体现模型在解决什么问题上的优势,这个才是所谓的深度,这个离不开自己日常应用的观察,这也就是我为什么经常强调“case分析”的原因,模型为什么做错,训练集还是模型结构原因导致,什么时候该升级模型,升级模型有什么风险,如果能清晰地聊出来,我相信你的深度绝对不浅了。

很多人可能会关注原理,其实原理只是理解模型最简单的一层,很多人所谓的原理只不过是模型正向推理和反向传播的计算过程而已,这个只是理解这个模型最基本的一层罢了,我列个清单吧,可以用来验证自己对一个方案的理解程度,从易到难。

  • 具体的计算过程。
  • 使用该方案所需要的资源。
  • 方案的优点和缺点,缺点是否有什么方案可以避免或者解决。
  • 什么场景下,可以考虑这个方案。
  • 不用这个方案,可以有什么替代方案吗,和那个替代方案相比这个方案有什么优点。

大环境问题

大环境,好像是大家平时问我问的最多的问题,我来说说我的想法吧。

首先,我想说的是,我们这个领域没想的那么糟。一个关键点,我们知道互联网有关领域不景气,不仅因为这行不景气,还因为,我们知道这个领域,很多我们不知道的领域,来无声去也无声,已经悄无生息地走了,我们这个领域仍然受到关注,就意味着我们仍旧有机会,所以我还是对这个领域有信心的。

第二,裁员没想象的可怕,可怕的是被裁了找不到工作。前者并不一定是因为我们的技术不行,但是后者一定是,从这个点推下来,我们需要明确的是,我们最该做的是持续精进我们的技术,使我们更加有竞争力,能解决更多的问题。

第三,我们是技术出身,本身就是技术导向,我们的行业选项是宽广的,不局限在互联网,像我现在在的公司也并非是那种大家所谓的互联网企业,元素也比较多,另外还有银行等,也有很多需求,所以放宽眼界,自己多去了解,自己有哪些机会。

第四,持续有危机感,自己要一直保证自己的技术竞争力,这点算是个提醒吧。

第五,想转行的,也不是不行,但是不要冲动吧,仔细考量好自己目前的优劣势以及目标行业的情况再说,考量好机会成本,注意明确一点,目标行业的人也不傻,凭什么你就花了一些时间,就能赢过别人好一段时间锻炼的能力。

第六,焦虑是正常情绪,但是要找到根源,釜底抽薪吧,别被焦虑情绪带着走,也别因为焦虑而迫切地采取一些措施,自己想明白自己的策略后,坚定执行即可。

35岁问题

35岁问题这个事,其实没有大家想的那么新,依旧是因为互联网而被放大了而已,原来其实就已经有了,一个经典的名词叫做“中年危机”,危机很简单,因为大部分这个年龄段的人,理应升上管理层,但是因为管理层终究是多数,所以总有人升不上去,大部分解决方案也不需要太吃经验(例如医生就没那么严重,老了开诊所也能有人来看),而这部分人可能并不能竞争过新的年轻人,于是中年危机就有了,这是一个普遍的人力资源层面的难题,而在互联网,因为本身需要的技术没那么深(呼应前面),大部分解决方案也不需要太吃经验,上了管理层的其实对技术要求也不是很高,自然到了中年就会被淘汰了。

聊完问题,来聊聊思路吧。我自己本身是有自信但也有危机意识的,所以是在心理上做了一些建设和准备,行动上可能因为偷懒没执行,那另说2333。

  • 首先对自己的选择和自己的能力有信心,自己能上得去,所以自己愿意在这方面投入时间精力甚至金钱,自己在持续精进自己的能力,也在通过和前辈交流学习更多不在我视角但未来可能会面对的问题。
  • 其次是有找后路的心里建设,注意这里是心理建设,我暂时还不太想投入太多精力和时间,但是不至于到时候升不上去人太慌。很多人问我公众号算不算后路,我自己是不太抱希望的,因为自己现在写文章纯属兴趣,广告这事最近基本没有,指望这个吃饭几条命都会给饿死。

所以我也是建议大家这么去想吧。

焦虑问题

这是写完文章后新加的一章,这个章节本身是想聊但是感觉始终不合适,说到这了就展开说下。

我明白,现在很多人挺焦虑的,怕这个怕那个,我非常理解吧,我也有,但是还是能从中进行一些排解。

首先从根源上,要明白自己焦虑的根源,然后从根源处尝试解决问题,而不是去解决焦虑本身。例如我们怕被裁,怕找不到工作,那我们该做的就是好好努力精进自己的技术,坚持学习和总结就好了,我们要持续对自己的选择和工作认可,也就是“路线自信”,再确认自己的目标和计划后,坚定执行,问心无愧即可。所有的选择都意味着会有机会成本,设置有沉没成本,再决定之前我们可以纠结,但是一旦决定了,那放弃的就是放弃了,再可惜也没用的。

第二,还是要有一些反馈机制,让自己快乐起来,例如我的公众号写完了奖励自己玩会游戏,工作搞定了奖励自己一杯奶茶都好,这些事情能让自己更有动力把事情做好,生活中有些爱好甚至是嗜好,能让自己有些盼头,有些动力,甚至是让自己更加完整,其实挺好的。现在我就是原神的重度玩家,8级萌新(204809654),当做自己的一个和工作无关的爱好吧。

后记

不知不觉写了5k多字了,感觉有些乱,都是一些自己的想法,希望大家看着有些帮助。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存