做算法的对编程要求有多高

谢邀
做算法也好,做研究也罢,编程都是必不可少的,当然需要一定的编程基础。但是说具体的要求有多高需要细细分析。

我不太清楚题主所说的算法研究具体指的是什么领域,不好妄言。不过就我相对熟悉的互联网领域,倒是可以谈一谈。希望可以给题主一点参考。

互联网圈子中的算法岗位中硕士居多,本科较少,少数基础算法和人工智能岗位博士居多。单单从学历上来看,算法岗位的平均学历要比开发高一些,但是方向更偏数学和统计一些,而少一些工程性,所以总体来说,算法和开发岗位应届生的编程能力至少是差不多的。

从我的观察和总结来看,影响一个算法工程师编程能力最主要的一点就是他从事的方向,越是接近实现层,对于编程能力的要求也就越高。比如有些大公司内有自己的算法平台和组件,阿里很多这些组件都是基于C++实现的。结合C++缺乏各种组件库以及指针的用法之灵活的特点,对于编程能力的要求可想而知。

而越是接近业务,接触到底层开发的机会也相应的越少。很多算法工程师甚至都没有写过Java等较常用的开发语言,对于操作系统以及网络等各方面的知识相较开发工程师来说也稍显单薄。甚至很多作为的数据分析师做着和BI一样的活,算法库都未必用过许多。

【做算法的对编程要求有多高】 但不管怎么来说,只要是技术岗位,编程能力始终都是一个非常重要的指标。即便现在算法的各类组件和功能库都非常完善,但依旧还有大量的数据处理以及定制功能需要自行开发。而更多的时候,动手写一段代码作为脚本或者是工具更是再正常不过的事情。

从工作性质来说,算法工程师能力更多的体现在对于数据的特点的思考以及对于算法模型的理解和运用,照这么来排序的话,编程能力只能排第三。只是编程角度而言的话,门槛的确是比开发要低一些的,所以也才会有很多数学、统计专业的从业人员。

但是从目前的现状来说,各大公司的招聘门槛这些年都在水涨船高。具体的反应就是身边人的学历,本科的越来越少,硕士越来越多。编程能力也越来越多地出现在了算法岗位的招聘jd上。我自己面试的时候就遇到过很多让我白板写算法的问题,没有一定的编程能力当场写代码,恐怕很多人过不去吧?

如果用一句话来总结的话,编程能力不是算法的主技能,但一个牛x的算法一定可以当一个牛x的开发。

■网友
我觉得有做开发的编程能力。

因为随着算法(深度学习,机器学习等等各种)发展,落地是必须的。要落地的话,就需要根据具体平台,有限的资源进行优化。当然这块可以理解为MLE要做的事情,衔接research和产品。在公司里面做researcher,我发现这些人的码力也是相当惊人,有了一个idea,代码很快就码完了。我觉得编程能力高对于快速验证帮助特别大,比如别人都已经验证了十来个idea了,你还在磨第一个想法,这个效率就很低下了。

在北美这里,我面MLE(machine learning engineer)白板写题我觉得要求一点都不比我面Google,Apple的SDE要求低。除此之外,还有准备机器学习,计算机视觉,深度学习,强化学习各种理论,同时有些问题也是很实际的工程应用,反正各种姿势的题目都有。从具体的数学题,MLE,MAP,梯度计算这些,到算法细节,再到系统设计,再到他们工作中遇到的实际问题。

在编程这块的话,我觉得最好是Leetcode刷到400+,基本都是自己想的,然后出现做过的,可以秒杀,没做过的可以很快有思路,我觉得就可以了。

所以总结一下,我觉得搞算法的,码代码不应该比SDE差多少,毕竟MLE也是专门方向的SDE。如果是一天到晚做research,大公司的researcher,也应该要有很强的工程能力,不是一天到晚看paper的,要做出东西来,还是要码代码,复现论文。当然,据我观察,去做researcher的phd,码代码能力应该是超强的吧。这些人是写出了MXNet,Caffe的,仰望~


推荐阅读