工程师与算法工程师的区别是什么?

  • # IT技术
  • # IT行业
3677人阅读 2021年12月09日

合格的工程师

工程师在一个团队中的角色是problem solver,也就是为了达到产品或者系统设定的目标,去把设想变成现实的人。除了扎实的专业能力之外,要进阶还有以下几个我觉得重要的方面:


项目中的全局观


前面提到工程师在一个大的项目和产品中往往需要和不同角色配合,那么主动思考技术怎么能贡献于整体项目目标就尤为重要。以项目目标为指挥棒,而不是自顾自地考虑所谓高大上的技术方案。用*简洁的技术解决问题这恰恰是内功的体现。甚至很多时候,由于各种客观条件限制,没法去选择技术上*合理的方案来执行。在此时如何取舍来达成目标,就更考验工程师的智慧和全局观了。


定义问题的能力


在工作中,我们遇到的问题会是多种多样的。不像在学校,往往解决的是一个定义得非常清晰的通用问题。在工作中,由于产品和项目需求多样,我们要解决的是一个特定场景中的细分问题或者是一个可能不复杂但是全新的应用。虽有各种公开的论文或者代码可以参考,但生搬硬套往往都不会是*优方案。在解决问题之前,我们要先考虑清楚这个问题的输入输出是什么?和已有的通用问题区别是什么?有什么样的先验知识可以利用优化问题或者简化问题?来自产品的问题是怎样抽象成一个严谨的描述?准确地想清楚要做什么事情项目就已经成功了大半。


独立解决问题的能力


在解决问题的基础之上,还有重要二字:独立。学生时代以上课学习为主,非博士的同学可能很少能有独当一面来解决问题的机会,过程中往往也多有指导。工作中,要解决的问题可大可小,但切记做一个让同事和领导放心的靠谱的人。我们经常会谈到一个词,管理成本。这并不是指一位同学具体解决问题的技术能力如何,而是在解决问题的过程中,你的leader和同事需要花费多少精力。管理成本越低的同学,在解决问题过程中需要的指导精力越少。理想状况下只需要leader交代清楚要解决的问题,便可在解决问题的过程中独立规划,自主沟通。如有困难,也可以整理好并及时主动提出需求。要达到这一点,其实是需要综合以上所有的能力。


合格的算法工程师

最后的最后才会到算法工程师,这毕竟是*细分的环节。每个公司对算法工程师的定义不尽相同,所以就不谈具体的技术细节了,只能从个人角度谈谈。有以下觉得比较重要的三个点:


优秀的实现能力


这一点其实已经老生常谈了,算法工程师哪怕是算法科学家都需要有能力把想法变成runnable code。根据团队分工和项目不同,有的需求是只需要证明想法可行,有的是需要一个prototype,有的也可能需要直接推到产品或者上线系统中去。无论是哪种情形,有优秀动手实现能力的同学都会占有巨大的优势,哪怕就算是算法不可行,实现能力强的同学也可以快速试错快速迭代。这样的能力无论何时在何团队都会是宝贵的。


除此之外,实现能力不仅仅局限于写出来,写的快,还应该包括写得好,写得美。把代码写得简洁易于维护,可能并不会直接帮助到算法研发,但是从长期来说,这是在一个周期较长的项目中保持效率很重要的一点。


对前沿进展保持追踪


算法工程师不同于其他职位的工程师,*起码在现在这个阶段技术迭代的速度是以月为单位的。所以保持前沿的追踪是非常有必要的。但不同于做科研,算法工程师了解前沿的目的不一定是要在此基础上继续开拓创新,而是能对已有的技术深入理解,去伪存真,以便更好地在业务中为我所用。当然对待新技术也不应该盲从,而应该看清想清之后再动手。*好能有同事朋友针对paper进行讨论和critique。


扎实的计算机原理基础


不了解算法部署的平台谈研发高效的算法就像是空中楼阁。虽然这可能在初级算法的研发中并不明显,但是会成为很多同学进阶中的一道坎。这一点对于非科班转行来做算法的同学尤甚。相比于应试教育式的学习,更重要的是理解系统为什么被设计成了现在这个样子,在这样的过程中做了什么样的取舍,以及作为上层用户这样的取舍对算法设计意味着什么。所以不用担心,补习工作中所需要的知识,这个工作量是远比学习一遍本科计算机专业课要小很多的。

查看剩余内容
收藏
0
loading
Hi,我是教育宝平台顾问~ 添加我的微信,在查找或下载资料时,我会随时为您解决问题
+加微信
喜欢此内容的人还喜欢
教育宝 > 计算机技术培训 > 工程师与算法工程师的区别是什么?