写在前面:买车没有最好,只有最适合。
类似这类“很难选择”的问题,在知乎上其实有很多。
比如:“该去年薪10w的国家电网,还是去年薪40w的互联网大厂”;
比如:“城里有房,剩下的100W是存银行还是回农村盖民宿”;
比如:“手握30W现金,是买倍有面子的奔驰宝马。还是买倍有里子的国产汽车”....
现在这个问题,“软件开发和软件测试,到底学哪个好呢?”其实也是如此。
面对这类选择的问题,往往会令人纠结,原因是每种选择都各有优缺点。
解决办法:不要将全部关注点落在“琢磨哪个选择面谁优谁劣”(心思花的越多,也可能没结果)。而应在了解两类选择优劣势的前提下,从自身出发,去看看哪个选择面更适合自己,那答案就出来了。
所以在汽车销售团队,有这么句话:没有最好的车,只有更适合自己的车。
所以,“软件开发和软件测试,到底学哪个好呢?”我们分三步走:
1、两个岗位谁优谁劣,值不值得纠结
2、从专业、年龄、性别、学历这四个维度去分析适合什么岗位
3、最后总结,什么人适合学开发,什么人适合学测试
一、软件开发与自动化测试PK,看各自优劣势分别在哪?
1、先比较薪资PK
哪个岗位好,普通人最关注的是薪资。薪资低的岗位,了解的兴趣都不会有。
所以我们先来比较大家最关注的薪资。
看到薪资,很多人可能认为是开发完胜测试。但是,现在与开发比较的不是软件测试,而是更具技术含量的自动化测试。实际情况如何呢?刚好黑马既有开发学科,又有软件测试学科(主要培养自动化测试),大家可通过“黑马各学科薪资汇总”这个视角,一窥两个岗位的平均薪资。
黑马最近2年各学科平均薪资汇总,测试略高于开发学科
季度和月份薪资PK,北京区域的自动化测试薪资依然高于开发学科
若想看到软件开发与软件测试更多维度的薪资PK,可狠戳下方链接:
《为什么软件测试相比软件开发薪酬待遇差别那么大?269 赞同 · 41 评论回答》
https://www.zhihu.com/question/56939189/answer/1850310934
上方文章给大家揭露一个非常有趣的现象:以10年工龄为界,10年之内,同等工龄的开发岗位平均薪资要超过测试;但10年之后,软件测试的平均薪资却要反超编程开发。
上方文章,也介绍了软件测试薪资,为何频频上涨的原因。
总结:可见,自动化测试的薪资总体虽然会微弱于开发。但,入行薪资和10年后薪资PK,软件测试薪资却略高于开发。
2、再比学习难度PK
看完薪资,接下来看入门门槛,也就是学习难度。
二者的学习难度,从黑马培训时间就可以看出来。
软件测试,只要3个半月,
而软件开发,无论javaee还是前端,都需要系统学习半年左右。
为什么软件开发的学习周期这么长呢?举例Java开发。小伙伴们听说过9大主流技术栈吗,我们来列一下:
1.Spring Framework是Java中最流行的应用程序框架之一,提供了依赖注入、面向切面编程、数据访问、Web开发等众多功能。
2.Hibernate是一个流行的对象关系映射(ORM)框架,使得Java应用程序可以轻松地访问和操作数据库。
3.Struts是一个用于构建基于Java的Web应用程序的MVC框架,提供了一个统一的架构来处理请求、响应和数据验证。
4.Apache Maven是一个流行的构建自动化工具,可以用来构建、测试和部署Java应用程序。
5.Apache Tomcat是一个流行的Web服务器和Servlet容器,用于运行Java Web应用程序。
6.JUnit是一个流行的Java单元测试框架,可以帮助开发人员编写和运行单元测试。
7.Log4j是一个Java日志框架,可以用来记录应用程序运行时产生的信息和错误。
8.JavaFX是一个用于构建丰富的、可交互的图形用户界面(GUI)的框架。
9.Apache Kafka是一个分布式流处理平台,可以用于构建高吞吐量、低延迟的消息传递系统,支持大规模数据流处理。
正因为学的多,所以开发技术天花板是很高的。若想扎根IT技术,推荐学开发。
3、三看技术更新程度
技术学会了,还得看看技术更新速度。
因为开源的流行,除了让开发技术变的廉价外,也让开发领域技术更新会非常快。
所谓开源,就是作者开放源代码,用户网上轻松获取。
举例Java,大家可以想一想自己参与的一些项目,用到了多少开源的东西。以一个典型的后端项目为例,可能涉及到了Redis、MySQL、ElasticSearch、Kafka、RabbitMQ、Nginx、MinIO、SprintBoot、Docker···程序员要做的就是根据业务需求,把上面那一堆组件堆在一起。一般就是Nginx负载均衡,Spring写后端业务,Redis做缓存,MySQL、ES、MinIO做数据存储,Kafka和RabbitMQ做一个消息队列,最后塞到docker里面部署运行。如果你觉得东西这么多,头都要炸了不想用,还不行,没有上面这一套开源东西,估计有一大批公司要倒下。
再举例前端,从最初的Javascript源码到jQuery,再到MVC框架,然后到 Angular.js 和 React.js ,再到最近非常流行的VUE框架,每个阶段的前端框架都经历了一段时间的发展,再到被广泛使用,再到被抛弃。前端技术也被戏称“学2年用1年”。
所以选择开发岗位的同学们,需要不断关注前沿的技术,需要不断的学习,压力不小。
但年龄大了,就会有很多家庭琐事,学习时间变少了。再加上人的机能也下降了,学习效率也低了,而开发技术迭代却又非常快。你若学不动,就意味你会逐渐落伍,逐渐被淘汰。
所以开发常有35岁后找不到工作的说法。
而测试,经验更多在于“强业务经验、沟通协调能力”这种软实力的积累,而这种软实力,是没法开源、复制和迭代的。所以测试人员不需要像开发一样需要不断的学习新技术。
什么是强业务经验的积累呢?给大家稍微科普下。
虽然测试人员和开发一样,也需要按照《产品需求文档》,对软件进行规划、定义,但为尽量降低Bug,测试人员
要比开发更关注业务细节、关注产品使用场景,要站在客户的维度设计用例。所以测试人员要比开发更深入业务。
当前项目所走过的每一个坑,都会成为测试下一个项目的经验和教训。经过长时间的历练后,测试人员的思维
就有那么一点特殊,他设计的用例就是能发现BUG。所以测试随着工作时间,对业务深入逐渐积累的,反倒会
越老越吃香。
尤其是一些2B类业务,举例金融行业,对金钱,对保密非常关注。随着测试人员对金融业务的深入了解,业将为测试
人员树立一道职业护城河。
所以,软件测试不能说没有35岁危机(张雪峰灵魂发问:请告诉我,哪个岗位没有35岁危机?),只是处境会比开发好很多,职业生命也会更长。
4、四看工作强度pk
两个岗位,关于加班,有这么一种说法:
测试加班,开发一定要加班,比如项目快上线的时候。而开发加班,测试未必要加班。
这也就意味着测试工作要比开发轻松。
软件开发天天加班不假,但并不是加班写代码,主要是白天都被抓去开会,晚上和人撕逼需求,深夜才能写代码。老这么加班,年轻还可以顶着,年纪大了还真的顶不住。
更详细的【软件开发】真实工作场景介绍,可以狠戳下方链接:
《软件测试真的干到35就干不动了吗?2293 赞同 · 498 评论回答》
https://www.zhihu.com/question/61117238/answer/1540761285
所以开发领域,男生更受重视,因为开发工作强度大,所以开发需要的是抗压能力强,可以接受秃头的男生。
而测试领域,却是男女比例均衡,甚至女士还会更多些,可见测试工作强度远比开发低。
5、五看行业切换PK
开发转行自动化测试,还是较为容易的。毕竟懂代码,学起自动化测试自然简单。所以在黑马,就有一些开发同学,选择转行测试。
但测试转行开发比较难,因为入行门槛,工作强度,薪资吸引力...
了解了开发和测试的五大维度 PK后,应该很多同学就知道该选择哪个学科了。如果如果还限于纠结。那我们继续往下看:
二、从专业、年龄、性别、学历这四个维度去分析适合什么岗位
对于第一部分看完后还纠结的同学,接下来,我们再从专业、年龄、性别、学历这四个维度去分析这两类岗位。
Boss招聘的几张招聘截图镇楼:
通过认证分析boss直聘对这三个岗位的要求,我们可以得到以下的结论:
1、学历:
开发岗,对于学历要求就是本科。
而软件测试,对学历却有一定的包容,大专学历也可以。
2、专业:
不管是前端开发还是后端开发,绝大多数的开发岗,对专业都要求计算机及相关专业。
而软件测试,对专业要求就低很多,很多公司的测试岗,对专业甚至没要求。
3、年龄:
大多数开发的岗位需要三年以上工作经验,这就意味对于24岁以下的同学而言,找工作会比较困难。
而测试在这方面相对宽容,哪怕是应届毕业生,仅21岁,不少公司的软件测试岗也会给你机会。
4、性别:
岗位招聘上,不管是测试和开发对于性别都是没有要求的。
但到软件公司去,就会发现,做开发的绝大部分是男生,很少女生。
相反,在软件测试岗位中,女生比例和男生却差不多,女生还多那么一丢丢。
三、最后总结,怎么人适合学开发,什么人适合干测试
总结1:什么人更适合学开发
1)本科学历
2) 且计算机相关专业。
3)且男生。
4)且聪明好学。
5)且愿意与计算机打交道,想扎根IT技术。
6)且30以下。30+的人学开发,企业对你的【技术期望】会非常高,压力会不小。
7)且只要工资高,加班无所谓。
总结2:什么人更适合学测试
1)大专及以上。如果只是大专学历,更建议选择软件测试。
2)性别不限。如果是女生,最好是选择软件测试。如果是男生怕秃头,可以选测试。
3)非IT相关专业。比如文科生,学开发压力会很大,建议测试方向
4)年龄20+,30+均可。年龄30+同学更建议学测试,测试职业生命会更长些,企业的对于测试岗位【技术预期】也能抗住。
5)更喜欢研究产品,研究业务,不太愿意敲代码。
6)不太喜欢频繁加班。