热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

以算法岗为例:我最想对入职前的自己说些什么?

来自:机器学习与推荐系统进入算法岗的正式工作虽然只有半年多,但从19年1月就在算法岗开始实习,算下来到现在都有两年多的工作经验了ÿ

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

进入算法岗的正式工作虽然只有半年多,但从 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论文解读

专辑 | 情感分析


整理不易,还望给个在看!


推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
author-avatar
永欣慧娟766
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有