【第二章:心态及定位】2.2 左边还是右边-如何选择岗位和平台

1 引言

  算法岗比开发岗好,开发岗比测试岗好。
  
  上面这句话,你认同吗?
  
  我在秋招的时候,身边大把人告诉我“我技术不行,能做个测试就不错了”、“算法岗竞争太激烈了,我比不过大佬,能找个开发就可以了”,我相信你身边也不缺这样的同学。
  

图片说明

  本文就来分析一下这些常见的技术岗位究竟有什么特点,它们之间又有什么联系和区别,帮助你作出适合自己的最佳选择。同时,在面临选择不同公司时,又有哪些可以参考的标准,能够让我们选择一个最有利于自身发展的平台。

  

2 岗位从来没有高低之分

  我这里针对算法、开发和测试三种岗位的特点,总结了一个表格,如下:
  

岗位 工作重点 所需技术 薪资特点 求职难度 未来发展
算法岗 开发速度快、准确度高的模型 较强的数学能力、英文能力、编程能力 近两年都相对较高 近两年竞争较激烈,对学历、论文、专利、比赛等要求越来越高 深度学习目前还处在蓬勃发展阶段,算法人才依然吃香
开发岗 应用各种技术完成产品经理需求 超强的编程能力,依据细分岗位不同对计算机系统、网络、数据库等各有需求,涉及技术往往更广泛 相比算法稍低 总的来看坑位较多,不同语言岗位数量有所差异 横向发展面较宽,转型测试、算法、管理、产品都有相应渠道
测试岗 配合开发完成软件测试工作,保证代码健壮可用无明显bug或隐患 较强的逻辑思维能力,一定的编程能力,由于测试涉及的产品范围往往较大因此也需要测试对各种技术都要懂一些 和开发相近 岗位数量比开发岗少,但目前的机会仍然较多 发展面相比开发较窄,尤其对于编程技术较差的同学更为严峻

  

  那么现在我们就来具体分析一下,算法岗、开发岗、测试岗,有没有技术上的高低难易之分。
  

2.1 算法岗

  算法岗是近几年非常火爆的岗位,大多数情况特指机器学习或深度学习算法岗位,一度非常紧缺,主要工作是研究各种新论文并实现模型、调试参数,以得到较好的深度学习网络结构,或者利用现有和改进的人工智能算法进行人脸识别、图像预测等实际使用。
  
  似乎从15年开始,以深度学习为代表的算法岗开始引爆秋招,薪资不断上升,但随着“种地都要懂AI”的风潮兴起之后,懂得调参的同学也如雨后春笋般不断涌现。
  
  如果把调参比作炼丹的话,现在各大公司的AI部门已经不缺调参的“炼丹童子”了,他们缺的是懂C++懂OpenCV懂CUDA甚至懂底层驱动的“太上老君”。譬如Google发了一个新模型,你用python实现了,那边用C++甚至C实现了,而且还自己开发了各种专用的算子。你觉得上面这两种实现哪个效率更高呢?如果你是一个懂代码的算法,记得联系我内推,一推一个offer。

  

2.2 开发岗

  不同于算法岗较明确的工作内容,开发岗的工作内容千差万别,从IOS移动端开发到数据库开发,都属于开发的范围。一般来说,开发岗就是专门负责承接产品经理或客户的需求、根据需求功能撰写代码、将代码提交测试的同学。
  
  一般大公司的开发流程比较规范,项目在交给测试同学之前都要先进行自测,这是需要开发同学有测试同学一样全面、细致、耐心的能力的,否则一旦测试同学发现你的代码里有过多太低级的缺陷,可以直接拒绝测试并打回让你重新开发。
  
  一个懂测试的开发同学,他能够对自己的项目提供一个完整的测试思路,能够对自己每个接口提供完备的测试方案,能够帮助测试同学完善测试流程、降低上线风险。这是大公司规范化的流程,如果是小公司,往往开发同学自己就是半个测试,如果不懂得如何设计测试样例,一旦上线出bug,这个苦果还是要自己吃。
  

2.3 测试岗

  最后是测试岗,首先一定要声明一点。那些<stron>,而且那些“点点点”的工具往往都是测试人员自己开发的。这里要解释一下,所谓的“点点点”就是指在测试的时候借助一些测试工具,不用编写任何代码就轻松的完成测试。
  
  现在的测试岗往往更像是测试开发岗,他们除了需要对开发提交的项目进行功能、接口等测试外,还要承担自动化测试框架、版本校验工具等测试相关的开发工作,对编程能力也具有较高的要求。
  
  我在实习的时候做的是测试岗位,最开始两周确实一直在“点点点”。但是随着业务的深入,开始需要测试一些接口,这个时候就必须要写代码。甚至,在测试正式开始之前,要先去review一下开发提交的代码,在这个阶段,测试的工作并不仅限于“不出错”,而是要发现代码中的“不合适”。举个简单的例子,开发提交了这样一段代码。
  
</stron>

int FuncA(int x)
{
    if (x>0)
    {
        return x;
    }
    if (x<0)
    {
        return -x;
    }
    if (x==0)
    {
        return 0;
    }
}

  
  这段代码很简单,功能是求整数的绝对值,代码出现的问题很浅显:没有必要的if判断、分离的if else。这段代码在功能上完全没有问题,但作为一个合格的测试同学,一定会告诉开发者这段代码过不了,单从工程的可维护性就足够否决这段代码了。我目前从事一些开源框架工作,写的代码直接暴露给所有用户,这个时候函数命名的不规范都会导致代码被测试打回。
  
  一旦测试同学不去看代码,只满足于功能的实现,很容易陷入一个误区,那就是开发同学为他设下的陷阱,这是什么意思呢?我们在接收测试的时候,往往会同时收到产品经理的需求文档和开发同学的技术文档,就像买了一台新电器,你照着说明书肯定是很难出错,但问题就是测试同学一定要学会反其道而行之,除了按照说明书按部就班测试外,还要学会制造特殊情况,而往往看代码就是制造特殊情况的必要基础。因此,作为一个合格的测试,一定是一个懂代码、懂优化的同学。
  

2.4 技术岗的共通之处

  以上所说更像是不同岗位的技术区别,根据自己掌握的知识可以进行选择。不同于这些客观条件,性格和兴趣更抽象和主观一些。
  
  我接触过很多不同岗位的同学,他们的性格多种多样,但我总结了一个共同的特点:一个能做好技术的人,一定是一个热爱技的人。这样的人无论是开朗或内敛,在谈论技术的时候,眼神都是发光的。互联网薪资相对很多行业都比较高,但。    

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

开发岗校招求职攻略 文章被收录于专栏

<p> 《开发岗校招求职攻略》。专刊覆盖六大主要内容,涵盖整个求职流程,包括求职规划、心态及定位、实习指导、简历制作、笔试准备和面试准备,共十七篇文章。用清晰的逻辑帮你梳理有价值的重点,将你可能遇到的问题娓娓道来,让你在比较短的时间学到有用的经验,在求职中如虎添翼、战无不胜,获得理想的offer。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论
快更呀
1 回复 分享
发布于 2019-12-15 22:18
很赞同你的观点,如果一个测试没有和开发对应项目的知识架构,就很难想到一些测试的点。
1 回复 分享
发布于 2020-03-10 15:31
来顶你了
点赞 回复 分享
发布于 2019-12-09 14:31

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
9 4 评论
分享
牛客网
牛客企业服务