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

技术标签: 算法  编程语言  人工智能  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

智能推荐

6款 Java WEB应用开发工具(框架)_j2ee软件快速开发平台_国家二级残序员的博客-程序员宅基地

码云项目推荐1、项目名称:分布式敏捷开发系统架构 zheng项目简介: 基于 Spring + SpringMVC + Mybatis 分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位 J2EE 企业级开发解决方案。_j2ee软件快速开发平台

Spring Boot Vue Element入门实战 完结_beyondwild的博客-程序员宅基地

最近给朋友做一个大学运动会管理系统,用作教学案例,正好自己也在自学VUE,决定用spring boot vue做一个简单的系统。vue这个前端框架很火,他和传统的Jquery 编程思路完全不一样,Jquery 是事件驱动的,而VUE是数据驱动的。以前写页面经常是通过Jquery 操作各种DOM,而VUE不用对DOM进行操作,直接操作绑定的数据即可。接下来我会利用业...

oracle nvl函数3个参数,sqlite3 用什么替代oracle的nvl函数?_汤義喆的博客-程序员宅基地

nvl函数是什么,是oracle数据库里面一个判断是否取出的内容为空值的函数,使用方法为:nvl(a,b)其中a为要取出的表列,b为如果a为null空值的默认值。但我发现sqlite3并没有这个命令,那么sqlite3数据库用什么函数来替代它呢?在sqlite3中,可以使用ifnull或IFNULL来替代,亲测大小写都行。如IFNULL(a,b)其中a,b的解释跟前面是一样的。但有些数据库语言不是..._sqlite nvl

位、字节、字、寻址能力、编码方式、大端小端_数据类型字与字节地址分配_超自然祈祷的博客-程序员宅基地

CPU按照其处理信息的字长可以分为:八位微处理器、十六位微处理器、三十二位微处理器以及六十四位微处理器等。CPU最大能查找多大范围的地址叫做寻址能力,CPU的寻址能力以字节为单位,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因,再多的话CPU就找不到了。总线一般被设计来传输固定大小的一块数据,这块数据被称为字(word),一个字..._数据类型字与字节地址分配

借贷项订单创建BAPI_sd_object_type_determine_你说是什么就是什么的博客-程序员宅基地

SD_SALESDOCUMENT_CREATE用于创建销售订单。创建销售订单的BAPI,比较常用的是BAPI_SALESORDER_CREATEFROMDAT2,但是 BUSINESS OBJECT限制为 BUS2032。使用以下函数可以得到BUSINESS OBJECT:DATA:LV_OBJTYPE TYPE OJ_NAME .LS_HEADER-SD_DOC..._sd_object_type_determine

随便推点

蓝桥杯练习系统-杨辉三角形_Αиcíеиτеǎг的博客-程序员宅基地

基础练习 杨辉三角形 时间限制:1.0s 内存限制:256.0MB问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。   它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。   下面给出了杨辉三角形的前4行:   1   1 1   1 2 1   1 3 3 1   给出n,输出它

windows进入函数与启动函数_startf_useshowwindow_一只没有感情的杀手的博客-程序员宅基地

目录应用程序启动进入函数WinMain -- WinMainCRTStartupwWinMain -- wWinMainCRTStartupMain -- mainCRTStartupWmain -- wmainCRTStartupC/C++ 运行期启动函数启动函数功能调用wWinMain函数调用WinMain函数调用wmain函数调用main函数exit函数操作系统实际上并不调用你编写的进入..._startf_useshowwindow

Oracle 主外键约束_oracle外键约束怎么写_Zephyr Y的博客-程序员宅基地

一 主键(Primary Key)1 一个表只能有一个主键,作为主键的列具有唯一(unique)和非空约束(not null);2 对列创建了主键约束的同时,会自动对列创建一个索引;3 创建表时创建主键两种语法(以下为tb1表的id列创建主键约束):(创建主键列的时候声明)(所有列创建完后声明)4 对已存在的表增加主键约束二 外键(Foreign Ke..._oracle外键约束怎么写

ssh: Could not resolve hostname node1: Name or service not known_曹利荣的博客-程序员宅基地

执行ssh命令报错:ssh: Could not resolve hostname node1: Name or service not known解决方式:vi /etc/hosts_could not resolve hostname

hadoop简述集群搭建_WeiZhiQiang&xqp的博客-程序员宅基地

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed FileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(highthrou...

ubuntu连接路由器无线网络,却不能上网_ubuntu 不能上网路由器级联_Huang兄的博客-程序员宅基地

今天在实验室,开了ubuntu14.04,连接实验室的_ubuntu 不能上网路由器级联

推荐文章

热门文章

相关标签