首页 > 人工智能 > 机器学习 > 你见过最差的算法工程师能差到什么程度?
先歪个题,从反面回答一下,我碰到什么样的算法工程师会认为他/她是优秀甚至是卓越的大佬,并选择紧紧抱住大腿不松手。之前与
学长还有很多来自不同公司的前辈们讨论过这个问题,本文很多观点也是来源于他们,这里也感谢大家的指点。总得来说,以下几个特点是我特别留意的,如果碰到了我就会认为这位很厉害:相应地,这些也是我要努力提升的地方。如果我是面试官,我想我也会从这些方面去考察算法工程师的候选人。当然了,以上几点不一定要面面俱到,例如很多大佬不一定工程能力很强,但仍然可以做出很好的东西。换言之,上述特点的precision应该很高,但recall不一定特别高。不过,在我看来,与以上描述相反的算法工程师,即基础不牢、工程差劲、不做测试、不怎么考虑场景、在搭建起pipeline之前过早地沉迷于某一步的优化、不学习新东西、拿所有实验当黑箱炼丹等等,这样的算法工程师(其实就是我了)在我看来就比较一般。 而差劲的算法工程师,在我看来,是不仅这些方面做不好,还瞧不起这些方面的人。
==============================================
这周面试了一个候选人,面CV/DL/AI的TechLead。简历很牛逼,做过很多CV的工业项目,涵盖detection, OCR, face recognition, fire/smoke detection等好多项目. 给我们讲了45分钟做得项目,讲得很自信。我挑了一个大项目,我说你在这个项目中的贡献是什么?他说整个项目的所有算法部分都是他实现的。
OK,我开始进行深度学习的技术面。
我先问了两个深度学习的中等难度的问题,他都说不知道。有点冷场,那我赶紧问点简单的吧。我说,深度学习网络,进行分类时有哪些loss?他犹豫了一下,回答: relu.
瞬间把见过大场面的我还有同事都震住了。
==============================================
我们组一个年轻的印度小哥,UCSD毕业的,按说教育背景也不错,写model serving过程中的一步。每个request开20个线程计算。
我说你一个m*n复杂度的过程,m和n还都小于100,有必要开20个线程计算吗?你那线程开销绝对比并行计算收益大多了好吗。不听,给我说(大概意思):
行吧,不听不听吧,自己折腾去吧。
过两天给我说load test的时候server的latency翻倍,我一看线程数都超过JVM上限了能不翻倍吗。
讲这个倒不是想取笑这小哥,而是跟大家讨论一个问题,就是什么是比“技术上最差”更糟糕的情况。
如果你只是基础差,但总体上是一个严谨的人,其实到不那么麻烦,就是按部就班的学习,按部就班的积攒工程经验,无论是哪个领导还是老同事应该都是乐于帮助这样的年轻人的,因为总体来说你还是在解决问题,哪怕速度慢一点,你总归在成长,而且是让系统整体混乱程度降低的。
最差的算法工程师其实是什么呢?是自己对技术的感觉很差,但对自己的感觉挺好,试图用一些比较fancy的手段解决问题,但实质上引入了更高的系统复杂度,增加了系统潜在风险,这样的人,其实对整个团队是负能量的存在,始终需要更senior的人帮着擦屁股,这无形增加了整个团队的工作量,这就是最差的算法工程师。
我特别喜欢的一句话是:
希望刚入行的算法同事们能够知道这句话的意义,其实公司不急于让每个人都发表意见,在自己技术能力不那么足的时候,不带评论,不带主观情绪的去学习一段时间,好好思考一下别人为什么要做出这样的技术决策,好好积攒一下自己的技术感觉,这是最重要的。相信度过最初的积累阶段之后,你能够为团队做出,为整个系统做出“熵减”的技术决策。
https://www.zhihu.com/question/347545092/answer/1212688723
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946223/viewspace-2692454/ ,如需转载,请注明出处,否则将追究法律责任。