以算法岗为例:我最想对入职前的自己说些什么?-程序员宅基地

技术标签: 算法  编程语言  人工智能  android模拟器  微软  

来自:机器学习与推荐系统

进入算法岗的正式工作虽然只有半年多,但从 19 年 1 月就在算法岗开始实习,算下来到现在都有两年多的工作经验了,不过正式参加工作以后还是有了很多新的感悟,这篇文章一个是总结自己的半年所得,规划自己的未来职场之路;另外一点也是为大家做个分享,给一些即将步入这个岗位,或者也刚刚步入工作岗位的同学做一个参考。希望对大家有用~

假如我可以给刚刚进入工作的自己说几句话的话,我想最主要的是三个 keyword:算法工程师的 pipeline、业务能力、软技能。

算法工程师的 pipeline

现在关于算法工程师需要重视工程能力的观点以及基本上成为主流,但是我认识的很多同学,受限于在学校的环境,并不太能够了解到具体工作中需要用到哪些工程知识,也不太清楚需要将工程能力应该锻炼到何种程度。

另一方面,学校导师的论文压力,也使得同学们在校只能专注于算法本身,而硕士期间的时间又远不够到秋招前就磨砺出优秀的算法能力(至少以我当初在的实验室为例,导师要论文,就要花费太多精力在前沿文献的跟踪上,但是以找工作为目的的话,其实无须跟踪太多的前沿工作,更多的是应该将主流的几大类核心 paper 玩转搞懂)

前段时间组里组织学习了谷歌的一篇对机器学习工程的实践总结,第一部分就是 pipeline 的构建,说的就是机器学习工程在应用中首先要做的是一个完整的 pipeline。同样的,我们如果要成为一名合格且优秀的算法工程师,也首先需要一个机器学习工程基本 pipeline 的构建能力。

但是完整的技术栈,我们不太可能都去精通,而且每个专业部分其实都有对应的职位,是算法工程师,你的未来重心可能就是在算法的设计与尝试上;是数据科学家,你的未来重心可能就是在数据的分析上;是 AI 架构师,你的未来重心可能就是算法工作的工程架构上。。。所以我们不可能精通这整条链路上的所有方向,但是打通这一个链路却是必须的。

所以要想成为一名优秀的算法工程师,你必须可以亲自下场完成任何一个环节的基本工作需求。简而言之数据+工程+算法,这三个方向你都必须有掌握。

其实这也和我之前一直与 mentor 探讨的一个话题一样:「技术的学习到底是宽度优先还是深度优先呢?」

他给我的一个答复我觉得很喜欢,分享给大家这个观点,希望大家也可以觉得有帮助:技术的学习不能是宽度优先或者深度优先的去做一个树遍历,而是应该宽度略优先,深度不能忘。判断的基准应该是,你在参与当前的工作时,涉及到的这些技术栈出现问题时,你可以和相关同学侃侃而谈,而不至于不了解人家说的是什么概念。简单的说你可以不具备该方向解决问题的能力,但是你不能不知道问题是什么。

讲个我自己的例子哈,我本科是电子工程学院的,但是由于对编程感兴趣,后来硕士就读了计算机专业。电子专业写 C 比较多一点,所以我从大四进入读研导师的实验室后才开始接触别的语言,然后硕士期间一直在写 python,后来靠着一篇一作的 SCI 一区和几篇 CCF 的水文,向导师争取到了实习的机会,研二中旬开始了实习之路。彼时我的技术栈是 C/C++ 和 python,基本的 git,Linux 等,然后去实习的工作是需要用到 Java。基本的 Java 语法还是很容易学习的,半天就可以带着 Ctrl C + V 开始先线上代码了,但是对什么 netty,什么 maven,什么 Tomcat,什么 dubbo 这些听都没听过,spark,Redis 这些也就是会拼字母~~

所以这就是典型的如果有相关的问题,根本连问题是什么都不知道~~当然,这也只是举个栗子,并不是说我们需要掌握到所有相关的内容,只是说这个 pipeline 需要有能力走通。

另一方面深度也应该一直保持,在自己专精的领域需要有钻研精神,成为一个方向的典型专家,可以做到某个方向的问题,身边人会第一反应来咨询你。至少作为一个算法工程师,算法的基础功力需要扎实,跟踪前沿「优秀」文献的能力不能丢。

真正优秀的算法工程师,甚至说任何一个技术人,都要做到一精多通。

业务能力

除了具备基本的技术能力,工作后和学校最大的区别就是业务能力,这也是在校生最难提高自己的一个方向。加了我微信的同学知道我前段时间去了一趟深圳,见了很多人(最多的还是腾讯的人,其中腾讯云监控负责人小熊,是我的好友,曾经给过我很多帮助,推荐一下他的公众号:机智的程序员小熊),说实话这段深圳之旅对我获益匪浅,包括一位前阿里大佬给我的教诲,这里做一下自己的总结,大家也可以取其精华去其糟粕,参考一下。

插句话:非常鼓励各位能向自己身边认识的大佬请教,不仅仅是具体的技术问题,包括职场规划,技术发展,甚至自己的业务理解,个人理财等等,都是可以的。有时候过来人的几句话,就可以对我们产生很大的帮助(虽然大佬们往往不愿意帮人做选择,但是会乐于帮助你把事情看的更透彻)。

回到正题,业务能力是你职场发展的主线,对应的业务方向往往一旦定下来,就意味着你在不短的一段时间里都会是这个方向,甚至整个职业生涯都很有可能一直在这个方向浸淫。对于业务方向的选择有一部分是很看重运气,能不能在最初的职业生涯进入一个业务方向大有前景的组,某种程度上决定了你未来职场的困难模式。

比如阿里做了电商搜索约二十年了,如果一开始参与到电商搜索方向的人,可能这二十年都值得研究,并随着相关领域的技术发展不断进步;但是有的方向可能同样是搜索,但是相关的业务可能没几年就没了。

所以在提高业务能力的前提是认真审视自己手上所做的方向是不是有前景,是不是具备作为长期赛道的潜力。如果是那自然最好,但如果不是也并不意味着我们就需要放弃当前的工作去寻找更合适的工作。人的精力是有限的,业务方向值得投入,我们就可以放更多的精力在具体的业务细节上;相反就可以将精力投入到技术能力上,或者注重更基本一点的方向。

比如如果我们做某个感觉没有太多前景的推荐业务,那么我可以将业务观点更多的放在推荐这个大方向上。

我当初本科毕业的同学,有几个都是 Java 开发,在同一家公司做支付相关业务,这就是属于可以作为长期赛道的业务方向,毕竟公司要赚钱就肯定要有支付。后来一个去了拼多多(如果不是今年拼多多的事情,春晚项目被搞没了,可能今年就会有望达到知乎平均水准),另外一个去了微众银行,大家做算法的可能会比较了解微众银行。看得出来,这两个跳槽都和自己的业务方向很是相关。

如果恰巧当前的业务方向不是很有前景呢?其实也无需过多担心,虽然适合最好,但是好在技术岗对业务并不是强依赖。相比之下运营,产品等岗位,可能换个业务方向,就会出现更长的不适期;但技术相关的岗位可能一半个月就可以融入到新方向中去。

另一方面,对于未进入工作的同学,可以在选择的时候更多的考虑这方面的问题,或许会有助于你做出更合适的选择。

软技能

曾经见到过这么一句话:任何一个公司,职位越往上技术能力越淡化,产品能力越重要。

这句话可能有失偏薄,但是毋庸置疑的一点是,职位越往上,职场生涯越发展,软技能的占比就越大。这里的软技能不局限于产品思维,运营思维,逻辑思维,人际交往,职场关系等。

最早期的时候,我想的是想 Linus 那样,专注于技术,任何的外在东西都是花里胡哨,只要你能力强就牛逼,就不可替代,就肯定被器重。但是人家在我们还玩泥巴的时候就开始编程了,我们得承认我们不过是泯泯众生的一员,就必须在社会的泥潭里打滚。

只专于技术会让我们饿不着,但是软技能决定我们吃的好不好。比如你搞个产品,只专于技术可能很久时间让指标提高了一两个点,但是优秀的产品思维,结合对业务的理解,或许某些策略干扰就可以瞬间提高好几个点。

此外,和领导怎么相处,和同事怎么相处,也决定了当机会来到你面前时,你能不能把握住。这些问题只能说我虽然仗着手上的两行代码没有吃到痛,但是的确是看到有人吃到甜。这不是教大家去溜须拍马,只是说写代码是低头走路,但也不要忘了抬头看看身边是不是有人能帮到你。

最后逻辑思维的锻炼也是很重要的,最常见的一个东西就是 PPT。一个好的 PPT,会让你在汇报时被另眼相看,这也是我自己的一个薄弱点。毕竟干了活儿要让领导知道,PPT 决定了你如何展示你干的好不好。优秀的逻辑力,呈现力,以及美感都是很重要的。

新年的展望

新年里也希望自己能通过这些总结,能走的更稳更快。技术能力上需要打通自己的整个 pipeline,在数据方面自己的能力还需要提高,此外工程和算法能力也不能放下,巩固好自己的技术栈,快速的成为相关工作上的核心力量。在这个过程中,保持公众号的周更,作为自己的技术总结,同时保证 paper 的学习。业务能力上需要慢慢打磨总结。软技能方面今年计划看完五本以上产品相关的书籍,外加逻辑思维和职场发展相关的书籍各一本。

公众号方面写了一年多了,之前更新比较随性,今年会稍微严格一点,保持周更的同时,每周会选两篇文章转载(我自己是公众号重度使用者,收藏夹也一堆吃灰的好文,现在公众号的质量的确很乱,但是认真原创的作者们的确质量也很好,我会筛选一些好文分享出来)。

然后保持好现在比较坚持的两个项目,力扣和 paper 学习。也墙裂建议同学们保持对力扣的练习,一方面是锻炼解题能力,万一将来跳槽,也避免来不及刷题;另一方面是锻炼代码的思维,免得业务代码写多了就成了 shi 山创造者。

最后给大家拜个早年,新年可能不会再有文章更新了,新年返工后会开始更新起来~~

大家新年快乐~~

已经工作的职场顺利,升职加薪~~

未工作或要跳槽的都 offer 多多~~

投稿的都是 accepted~~

表白的答复都是我愿意~~

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

推荐两个专辑给大家:

专辑 | 李宏毅人类语言处理2020笔记

专辑 | NLP论文解读

专辑 | 情感分析


整理不易,还望给个在看!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27590277/article/details/113812854

智能推荐

区间和重叠合并 python_【python-leetcode57-区间合并】插入区间-程序员宅基地

文章浏览阅读160次。问题描述:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入: intervals = [[1,3],[6,9]], newInterval = [2,5]输出: [[1,5],[6,9]]示例2:输入: intervals = [[1,2],[3,5],[6,7],[8,10],[..._python 多重叠和连续的区段合并

python目录名称无效怎么处理_NotADirectoryError:[WinError 267]通过Selenium Python调用Firefox时目录名称无效错误...-程序员宅基地

文章浏览阅读1.4k次。I'm trying to invoke a firefox browser using Selenium webdriver from below python code..from selenium import webdriver# Initializing the WebDriver for Firefox browserdriver = webdriver.Firefox("C:\\se..._python目录名称无效

matlab bar函数 bar3函…_bar(3)怎么调参数好看-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏18次。二维条形图 MATLAB中绘制条形图的基本函数为bar和barh,它们的调用格式为: bar(Y) 如果Y为矢量,其每一个元素绘制一个条形;如果Y为矩阵,侧bar函数对每一行元素绘制的条形进行分组。 bar(x,Y) 按x中指定的位置绘制Y中每一元素的条形。 bar(…,width)设置相邻条形的宽度并控制组内条形的分离,默认值为0.8,如果指定width=1,则组内的条形挨在一_bar(3)怎么调参数好看

关于eclpse java项目与tomcat jdk版本不一致的解决方法-程序员宅基地

文章浏览阅读205次。  最近,在eclipse中tomcat(jdk1.7)添加项目的时候,项目添加不进去,报jdk(项目中jdk1.8)版本不一致的错误。下面是我的解决过程:  选中项目按ALT+回车  一、选择替换jdk如下    二、选择java compiler   三、选择 project facets,然而我却犯难了,这里的java版本替换不了!!!!后来百度了一番,大家..._eclipse项目 tomcat版本不一样

史上最强Sublime 笔记系列---精选插件和UI主题_sublime ui 插件-程序员宅基地

文章浏览阅读4k次。这篇文章主要讲的是Sublime Text 3一些高效率的插件和漂亮的主题。* 史上最强Sublime 笔记系列—常用快捷键(持续更新中。。。) ** 史上最强Sublime 笔记系列—精选插件和UI主题(持续更新中。。。) ** 史上最强Sublime 笔记系列—我的常用配置(持续更新中。。。) *_sublime ui 插件

word文档太大怎么压缩到最小?_word压缩大小-程序员宅基地

文章浏览阅读2.6k次。word文档太大怎么压缩到最小?,网上关于压缩word文件的方法并不多,今天我就来教大家一个简单又好用的压缩方法吧,感兴趣的小伙伴跟着我一起往下学习。_word压缩大小

随便推点

十分有趣却有些遗憾的结对编程——两位女程序员的挣扎-程序员宅基地

文章浏览阅读95次。两人合作项目作业正式开始,一次真正意义上能够了解对方能力并互相努力互相鼓励共同进步完成项目的愉快的小型团队合作,本次合作我们两位女生的火花碰撞的很不错,打开了结对编程的新世界阅读目录题目要求关于驾驶员角色代码思想界面显示关于我的导航员个人感想题目要求要求:本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自..._遗憾就遗憾的编程代码

CPU压力过大怎么解决_cpu过压错误如何解决-程序员宅基地

文章浏览阅读704次。查看CPU压力过大的原因_cpu过压错误如何解决

第七章、python的变量、函数及其应用(7.1)------全局变量、局部变量与LEGB原则命名空间及作用域_python 类变量和全局变量-程序员宅基地

文章浏览阅读119次。文中主要论述python的全局变量,局部变量,变量引用与LEGB原则,变量命名空间,变量作用域,指向同一个对象的变量不一定是同一种变量类型。_python 类变量和全局变量

Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记-程序员宅基地

文章浏览阅读490次。公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群。话说,好想去捡垃圾,捡台8核16线程64G内存的回来,手动滑稽。3台笔记本的配置和角色分配:宿主CPU     宿主内存  虚拟机  虚拟机CPU/台    角色及内存双核双线程     4G    1台    双核双线..._cdh5.9.1 mainifest

35_张孝祥Java高新技术_为注解增加各种属性-程序员宅基地

文章浏览阅读62次。注解的作用之所以那么强大,就是因为它有属性 注解很像接口,属性很像方法. 什么是注解的属性一个注解相当于一个胸牌,如果你胸前贴了胸牌,就是传智播客的学生,否则,就不是。如果还想区分出事传智播客 哪个班的学生,这个时候可以为胸牌在增加一个属性进行区分。加了属性的标记效果为:@MyAnnotation(color...

python调用C语言动态库-程序员宅基地

文章浏览阅读1.1k次。python完美兼容C语言,有了ctypes 可以调用c相关代码 如果是c++代码 编译的时候加上 extern "C" 就可以了 ,如果是一些复杂类型比如结构体,类,联合一些 可以考虑用boost.pythonexp.c#include <stdio.h>int add(int a, int b){ return ((a) + (b));}编译生成...

推荐文章

热门文章

相关标签