聊聊我的试用期总结(不知名公司算法工程师

b758301b606bd85b1ca171e3be3093d9.jpeg

作者:车

摄影:车

入职也有好一段时间了,前段时间试用期结束了。

在互联网公司的试用期一般都是三个月。但这个时间其实并不是严格的,可能提前就答辩了。

而我就是其中一位,原本打算三个月的工作,也被扯断了。最终两个多月的时间就开始准备答辩的事情。

虽然今年情况严重,但只要被招进来的,只要公司别太心狠,个人别太作妖,结果基本上没啥问题,自己和周围的年轻同事,普遍都担心过,但还没见过没过的。

聊聊试用期的一起总结吧。

背景

说下简单的背景,以防不适合的人错误的听取信息。

首先我的经历只适合互联网的朋友们,其他可以自行参考,目前就职一所互联网公司,toB业务。

其次我是算法工程师的岗位,并非研究岗,可以发论文,但论文都是工作的总结,论文也只是加分项。

我的工作内容并非都是模型设计,可解释性的解决方案十分重要(可解释性ML有限),还需要完成算法设计以外的工程任务,类似于机器学习平台的优化等等。

工作

试用期的工作,不管是在OKR还是KPI,我感觉都是在一个较为高要求的情况下制定的,基本上能完成已经算好得了。

我经手的工作,大体简单来说,就是在一个特定的问题下,构建算法系统,并因为整体算法架构的原因,需要把自己常用的python语言,整体迁移到GO语言,包含算法的设计和算法的工程化落地。

这里比较难的几点:

  1. 算法需要是通用的设计,并非特定一个场景点的算法,所以大多数情况都要考虑,让算法更加的通用化。(算法设计的难点)

  2. 需要在较短的时间内,完成算法整体底层到上层的迁移以及和现有框架的集成。(虽然从本科大一到现在 我从c语言->java->c++->python都写了一些,但都不太精湛,而最近两三年基本上都用的python,其他基本上忘没了),其中算法设计刚开始依然用的python,但要整体迁移成go(go没学过,要现学现卖),再工程化集成到现有的机器学习架构中去(这里的机器学习框架代码量巨大,需要看懂并能对应修改)。

  3. 考虑到2的难度,在1构建的同时也为了高可解释性(要让别人认可你的结果,这点尤为重要),我大多倾向在机器学习层面考虑问题,这样也让算法从底层迁移变得更加容易。

  4. 各种业务概念,各种基建要熟练掌握使用。

完成情况

最终把算法设计出来了,也做了一些对比实验,主要还是依照很多公开的数据集,但就是这些公开的数据集,其实和真实情况差距还是很大的,所以算法本身还是有很多需要优化的点。

其次,大概利用了两周的时间完成了python到go的硬核迁移,在迁移之前可以说的上go一窍不通,整个流程基本上也是现学现卖,大概装环境,看语法、例子一两天,其他就是开始直接写起来,刚开始三四天进度比较迟缓,后面基本上顺手了。

最终也完成了迁移和整合。

反思

  • 在我的工作当中,作为算法工程师,可能并不能算纯粹的算法工程师,某种意义上,要是0.1个产品+0.4个开发+0.5个算法,要有整体系统的概念。所以要尽可能的锻炼自己全方位的能力,虽然说技术要深耕,但整体的系统能力也要同时加强,才能不断的独立完成某个项目系统。

  • 代码能力需要加强,强的代码能力能让自己减少很多不必要的麻烦。像我的mentor,代码能力非常之强,语言广泛不说,最主要是代码写完基本上就可以bug free,而相反,我经常性的丢掉边界条件,写完还需要独立的一块时间来fix bugs,整体的研发时间就会拉长很多。(强的代码能力包括快速的实现能力,语言的掌握能力还有整体代码的设计能力,这块后面细说)

  • 需要良好的代码模块测试能力。之前自己并没有接触那么大的代码量项目,所以基本上测试都是全量代码测试,其实说这是全量其实也没多少代码量,但现在这么大代码量,不管哪种语言,都掌握了test模块的测试环节,这会让写代码测试提高很多效率。

  • 心态需要放平。很多项目都是持久化的项目,没有做完,只有做的更好,不断的优化,所以心态上要放平,慢慢做,学会记录,不断的学习和进步,心态上不能太浮躁,觉得自己做完美了,也不能太急躁,觉得自己太慢了,反而这样会延缓自己的项目进度,也不能太不自信,自己做的好的地方,可以在报告的时候重点讲。

  • 学会请教。在请教之前要自己尽量快速全面的调研,实在解决不出来,也不要闷头自己做,而是抓紧沟通,目标是更快的推进。如果在一个气氛还算不错的团队,其实技术极客类型的同事会不少,有问题沟通,其实同事都很热心。

强的代码能力

这里有个误区,很多朋友以为代码写的快,快速实现就是很强的代码能力,其实这是片面的。

当然快速的代码实现是一种很强的代码能力的体现,但这并不够更上一层楼,这可能更多取决于勤奋和熟练。

而我个人觉得代码的设计能力也是非常重要的代码能力的体现。

一个代码流程怎么去设计,怎么去抽象(抽象了之后才能很好的去做接口,面向对象编程),怎么能做到比较好的代码缩扩容,这也是非常重要的能力(可能更偏向于对于机器学习平台研发、机器学习算法工程化,偏研发),这个能力主要取决于代码的设计思想(设计模式)。

除了以上两点,毋庸置疑还有对语言的掌握程度,语言的一些底层和常用trick的掌握。

中心思想的理解,比如java面向对象,c面向过程,go我更愿意称为面向函数编程。

以上这些能力,可以从已经商业化的代码库中找找灵感,比如看sklearn的底层逻辑,pytorch的源代码,我也在不断的读ing,不过任重而道远啊!

总结

一句话。

时间过的很快,希望工作做的越来越到位,自己的技术能力也越来越强!

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总
2022届互联网求职现状,金9银10快变成铜9铁10!!

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)
发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>