Datawhale 2024年09月21日
算法岗和开发岗有什么区别?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文探讨了开发岗和算法岗在互联网公司中的区别和联系,从职责、能力、面试和未来发展等方面进行了分析,并结合一些案例说明了二者的工作特点和挑战。文章认为,开发岗和算法岗在本质上都是解决问题的工程师,但算法岗更偏向于数学关系,而开发岗则更偏向于逻辑关系。在技术栈方面,开发岗相对宽泛,而算法岗则更细分。最后,文章建议程序员要立足本职工作,同时也要紧跟技术发展趋势,不断完善自身知识结构,提升职场竞争力。

💻 开发岗和算法岗在职责上存在明显区别,开发岗更侧重于搭建和维护线上模块,根据具体需求进行功能开发、测试和代码上线,工作目标明确且可量化,工作确定性强,产出也比较确定,通常会以时间换取工作量。而算法岗则更注重通过各种手段提升指标,例如提升推荐系统的点击率、转化率、用户停留时长等,工作目标和工作量难以量化,工作的不确定性更大,需要不断尝试和优化,往往是“心累”。

📂 在能力要求方面,算法岗需要掌握机器学习、深度学习算法知识、策略、前沿算法模型等,同时对工程能力的要求也越来越高,需要熟悉架构、开发基础、数据开发等。开发岗则需要对架构知识、开发基础等各种知识比算法同学更深入,具体的技术要求取决于具体的开发岗位。

📃 面试方面,算法岗由于近年来AI的火热,竞争更加激烈,尤其是CV、NLP等偏研究性质的算法岗位。开发岗的种类比较多,每个公司都需要,数量也比较多,竞争相对较轻。面试主要考察以往项目经验、基础知识和刷题等。

📄 未来发展方面,个人努力固然重要,但时代潮流更不可忽视。选择一个好的平台和团队,比选择开发岗还是算法岗更重要。

📅 除了以上几点,算法岗和开发岗在工作类型、技术栈、岗位需求和难度方面也存在区别。算法岗有纯粹的research和算法工程师,开发岗则相对更宽泛。算法岗的细分领域更多,技术栈更深,岗位需求更少,难度也更大。

📆 总结来说,开发岗和算法岗都是重要的岗位,各有优劣,选择哪个更适合自己取决于个人兴趣、特长和职业规划。

📇 重要的是要不断学习,提升自身技术能力,才能在未来竞争中立于不败之地。

2024-09-20 22:01 福建

开发or算法?

 Datawhale干货 

整理:小白学视觉,来源:知乎


问题来源:https://www.zhihu.com/question/490150407

01

作者:如雪

围城外的人,可能会以为开发岗是工地里搬砖的,而算法岗是类似建筑师指导别人搬砖的。但实际上,这种感觉肯定是不对的。互联网公司发展到现在,算法岗和开发岗本质更像是两种不同型号的螺丝钉,只是处于流水线位置不同而已。并且,很多算法岗需要做的工程量也越发像开发岗看齐,已经远不是当个“调包侠”就能过关的了。

先说下开发岗和算法岗在职责上的区别,以一般的推荐/广告系统为例,有数据库 -> 召回 -> 粗排 -> 精排 -> 混排 -> 前端等上下游模块。

在能力上,算法需要了解很多算法领域的知识,但是对工程能力的要求也逐渐与开发岗看齐。

最后谈下这二者面试情况,大体上说算法岗有一定泡沫,内卷比较严重,开发岗位置更多。

至于未来发展,个人努力是比不过时代潮流的,碰到好的业务好的领导算法能够很容易带来业务增长,那么个人上升速度也会很快。开发岗也是同理,选择一个好的平台,好的团队比选择开发岗还是算法岗更重要。

上面主要是以互联网公司中推荐/广告算法岗位和开发岗进行比较的,其他还有偏研究类型的cv、nlp等算法岗,这里就不再多说了。

02

作者:AI蜗牛车

有这么几个维度的不同,其中有我个人的总结,以及和周围一些做开发的同学聊的。

1.薪资待遇

前几年的时候算法岗可能要比开发岗位薪资待遇更多。

这几年逐渐趋于平齐,但是还是有很多公司依然是同等级情况下,算法>开发。

并且可以参照很多人才计划,例如阿里星,美团北斗,快star,还有腾讯大咖。

大多数都是给了算法类,其实也有一些给了所谓的“开发”,但我个人觉得那些不算开发,应该叫研发,就是里面其实有很多高并行,以及调度算法在,比如分布式存储方向等等,但是这类方向在学校很难接触到(然而是目前企业稀缺的)

2. 工作类型

算法岗有纯粹的research,那种就是读论文,搞模型,写论文的,偏向高校的学术研究。

这种工作可能和开发类差距非常之大。

但是如果是算法“工程师”,其实所谓算法工程师的理解其实就是用算法工程解决问题。

而开发,一般来说就是用开发逻辑解决问题。

本质上都是解决问题工程师,然而算法可能算法的环节,思想更多,开发亦然。

可以看看这个回答:

https://www.zhihu.com/question/485065074/answer/2109345799

3. 技术栈

这个区别我个人感觉很关键。

开发的话本身技术栈相对来说宽泛,比如只要我后端学的牛,我可以去面很多核心部门。

然而对于算法来说,方向偏细分,比如你想拿到不错的offer,最好的前提是方向match,match的话可能事半功倍,但是话说回来,这其实是相对来说很难得,比如时空序列,也有气象背景和交通的,细节还是有差距的,比如cv的细分领域更多了去了,推荐也分文本的,视频流的等等,所以总体面试可能就较局限(相对开发来说)

4. 岗位需求

开发无疑是更多的,算法无疑是更少的,并且这两年早已没之前那么大泡沫。

这个其实也能理解,比如做一个app,如果是一个软件首先你需要把这个开发系统构建起来,就需要很多开发的人,而算法可能是之后的事情。

5. 难度

算法无疑是更难的。

会发现周围在大佬中比率更高的方向都是AI,最终从事算法岗工作的基本上大多数都是在周围眼中相对来说优秀的,当然开发也有很多大佬,这里只能用相对来说。

并且各行各业中的高学历(这里指清北),很多学习数学和经管,以及物理专业的都来从事这个方向,别看他们也是非科班,但是有的学习能力足够强,再加上学习AI其实大家都是从头开始,还不像开发需要知道那么多计算机基础知识,只需要英文以及数学过关,其他就是看自己的学习和理解能力了,所以他们并不会弱势,反而很多人学的很牛逼,导致整体占坑多了。

03

作者:Ambersky

本人工作title是算法工程师,实际工作中大约是50%的算法+50%的开发,平时也会和朋友讨论何谓算法,何谓开发。

从我一个入职不到一年的菜鸡算法角度来看,算法岗玩的是数学关系,开发岗玩的是逻辑关系

开发岗的职责是搭建一个产品的所有逻辑,从底层的到顶层的。前端页面之间的跳转逻辑,后端与数据库之间的交互逻辑,前后端的交互逻辑,这些是开发岗需要做的。比方说我的产品是某视频平台,那么打开呈现的界面,点击视频进入到播放页面,注册账号修改信息等操作,都是开发岗完成的。

算法岗的职责,顾名思义就是算法,算法分很多种,机器学习,数据挖掘,NLP,CV,推荐等都是常见的算法领域。算法岗很多情况下是某个产品的核心,在产品中负责某个非常细分的点,或是为某个关键功能提供支持。回到视频平台的场景,每次刷新推荐页都有新的视频出现,如何确定刷新过后推荐给用户什么视频,是推荐算法做的事。一个算法会经历很多轮迭代,会有很多算法工程师抓着头皮想着怎么优化,多做些特征工程?参数再调优一下?换个更合适的模型?等等。这些操作,更多的是数学关系,比方说需要关注数据集的分布情况,相关性矩阵,模型损失函数等。

当然也有很多算法是研究方向,我举的例子不过是一小部分。

毕业不久眼界也比较狭隘,如有不准确之处也望大佬们指正轻喷。

04

作者:kuadoh

在目前大环境下,从收入方面出发,算法和开发基本没有啥区别。(17年前后随着深度学习爆火,起薪上一开始是算法岗更高)

下面从算法岗的角度谈谈自己的理解。算法岗主要针对的是无法通过直接编程进行解决的问题(主要是非结构化的输入,如图像,语音,文字等的识别。如果通过人为地写if-else规则去处理这类输入,程序将变得繁琐冗长且不一定能够覆盖所有情况),需要将它转化为一个数学问题进行建模后,结合标注的数据进行该数学问题求解,用得到的数学模型(某个函数y=f(x)一般是个概率函数)。

而开发岗负责的就是能够结构化的输入了,需要处理的情况也是相对固定的。以一个人脸识别接口为例,开发岗负责的部分可能会包括,将需要识别饿图像进行压缩,然后通过网络发送到服务器上解压缩,然后将图像输入算法模块得到的结果通过网络传回客户端。如何承受短时间大量的人脸图像输入同时服务器不宕机,客户没感觉到卡顿,就是常见的后端开发岗需要解决的问题了。

像别的答案提到的那样,开发岗往往是身体累,而算法岗是心累。开发岗面对的问题往往是比较明确的(怎么更快地处理输入并保持准确),能通过代码分析和debug找到问题所在,然后通过扎实的CS基础知识解决或者堆机器解决,举个简单的例子,比如说我有一份几十pb的数据需要找到top100,但是我内存放不下,可以通过堆排序的思想进行处理;或者有钱的直接使用很多机器进行分布式处理快速解决。

但是对于算法的一些问题,因为目前常用的算法模型是一个黑盒,往往是难以定位和解决的,没有一套所有情况都适用的方案。比如说一个动物识别程序将某只哈士奇识别成了狼,这种bad case的原因是没有一个明确的理论另外分析的,解决的方法一般也只是对这类情况增加更多的训练样本或者尝试更先进的网络结构。总结就是算法面对的不确定性更大。

05

作者:关建淳Arvin

先来说说算法岗,通常涉及到算法的岗位有两个,分别是算法设计和算法实现,现在有不少团队把这两个岗位进行合并,做算法设计的同时也要负责实现。但是也有一些团队是分开的,做算法设计的不管实现过程。从工作的复杂性上来说,算法工程师的工作强度还是比较大的,但是算法工程师的职业周期也比较长。

很多算法工程师最终成长为企业的首席科学家,或者是首席技术官等岗位,可以说算法工程师的发展前景是非常可观的。

再来说说开发岗。其实软件团队的大部分岗位都是开发岗位,有前端开发、后端开发、移动端开发等,可以说大部分程序员做的都是开发岗的工作。与算法岗位不同的是,开发岗位人数多,占比大,而且大部分开发岗位的职业周期都比较短,一般开发岗位在做到一定年龄(比如35岁)之后都会转型。

一部分会转向项目经理等管理岗位,一部分会转型做架构师,还有一部分转型为行业咨询专家等,当然,也有一部分开发人员转型为算法工程师。

算法岗和开发岗哪个前景更好?其实只要技术到位,这两个岗位未来的发展前景都不可限量。

如何成为一名优秀的程序员,做好以下两点非常重要:一方面要立足本职工作,另一方面也要紧跟技术发展趋势,通过岗位提升和自主学习不断完善自身的知识结构,从而提升自己的职场竞争力。


一起“三连

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

开发 算法 互联网 技术 职业规划
相关文章