有关算法工程师工作的理解

       目前找工作的本科童鞋,目标肯定是算法工程师、数据工程师、数据挖掘等,研究生毕业的童鞋都会去做自然语言处理、深度学习等工作。既然大家目标都是与数据算法相关的职业,那么推荐大家看一下这篇文章 为什么“高大上”的算法工程师变成了数据民工?

       如今的程序世界,出现了很多种语言,如一开始的C、C++,后面的Java,乃至现在十分火热的Python。这些语言变得越来越高级,代码写的越来越少。Python就有一句slogan,“人生苦短,我用Python”,能够很好地说明这一现象。很多人都在往代码或程序的方向上努力,程序员的门槛也随着语言的高级也变得越来越低。有的人为了使代码实现功能且代码量较少,把自己写的东西封装成模块(也可以称之为“包”),使程序员更好入门。例如,谷歌的研究人员把深度学习的相关代码封装成TensorFlow,使得大家不会过多的考虑TensorFlow内部的东西。

       这是百度百科对于算法 的解释,即算法“是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出”。严格的算法工程师就是利用算法处理数据的人,类似现在的深度学习算法、NLP算法工程师。他们更多的是做研究,思考如何提高数据在模型或算法中的性能,同时不会产生过拟合问题。

       学过计算机的朋友们肯定深有体会,自己在本科时期被各种老师逼着写各种课程设计,其实这种课程设计就属于开发。开发的朋友因为常年做开发,开发的技术了然于心,碰到相关的要求,不需要太长时间就可以做出来,除非是客户或产品经理频繁改需求。而现在一部分算法工程师,不光要写有关算法的东西,而且还要做一些开发,比如开发可视化界面、开发API接口等。两者不能兼得,虽然能够依靠自己两方面的能力在公司立足,但两者都不如专业人员精通,每天写开发文档,写可视化程序,算法方面的研究也不是很深入,出现一个模块或一个包调用一下,使用调参出来的东西去优化系统,虽然可以实现功能,优化结果也还可以,但调什么参数、调用模块中的哪个函数,这些轮子前面封装的人都已经想到了。近期在招聘网站上看到“调参侠”、“调包侠”,就很好地说明了这一类算法工程师的存在。

       在这里我想说的是,“存在即合理”。我们不能否定其存在。不过我们还是要精进自己的技术,让自己在代码的路上越走越远。毕竟这个时代需要的是领域专才,即某一领域有“专才”的全才,不能是各个领域的全才。为了成为领域专才,一起加油咯。

 

你可能感兴趣的:(心得感悟)