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


    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,不过任重而道远啊!

    总结

    一句话。

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

    1. 推荐阅读:
    2. 我的2022届互联网校招分享
    3. 我的2021总结
    4. 浅谈算法岗和开发岗的区别
    5. 互联网校招研发薪资汇总
    6. 2022届互联网求职现状,金910快变成铜910!!
    7. 公众号:AI蜗牛车
    8. 保持谦逊、保持自律、保持进步
    9. 发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)
    10. 发送【1222】获取一份不错的leetcode刷题笔记
    11. 发送【AI四大名著】获取四本经典AI电子书
  • 相关阅读:
    Vuex中mutations和actions的区别
    【JavaScript--React】本篇文章将带你体验不同于vue框架的eact框架
    日志中打印统计信息的方案
    Hadoop(林子雨慕课课程)
    什么是ReFi?
    java Spring Boot2.7写一个接口 提供图片预览 前端可以直接用接口地址当src为图片地址使用
    puzzle(021.1)挑选消除问题
    java计算机毕业设计web开发数码产品推荐平台系统设计与实现源码+数据库+系统+lw文档
    JS(第十课)JS中的对象
    SQL Server大量插入 Java
  • 原文地址:https://blog.csdn.net/qq_33431368/article/details/127780704