1:最主要的区分,一个是建造者一个是破坏者,打个比喻就是。程序员是软件的制造者,一转一瓦把东西做成别人想要的样子,实现对应的功能和作用,比如这个产品就是个锤子;软件测试是使用各种方法和工具来检查程序员做出来的产品是否满足需求,是否有各种问题。测试这个锤子能够捶打哪些东西,锤子有多重,是否好看,是否容易使用,是否能够用比较长的时间。
2:测试人员经常说,这个软件这个功能有什么问题。程序员经常说,在我本地调试是没问题的啊。你会不会用啊。一个千方百计证明软件有问题,一个用事实证明软件是没问题的。
3:程序员一般男性较多,测试人员一般妹子较多。当软件项目达到末期的时候,一般测试人员加班比较多,这个是行业普遍现象。这个也应该是区别吧。
4:测试人员对代码的要求比较低,一般能够看懂代码知道怎么实现就好了。程序员必须相当熟悉而且知道怎么用代码实现业务的需求。而且要追求最优方案。设计各种模型等等。
5:两者的思维方式也是完全不一样的。
在一个初具规模的互联网公司,从业务方面出发,有很多岗位类型,比如运营、客服、市场、产品、设计、技术等等。
在这些大类下面,还要细分各种小类,以技术为例,可分为前端(客户端)、后端、测试、运维、DBA等等,这些都是技术类岗位。
那么如果想从事这些技术岗位,该如何选择,哪一个更有前途呢?
这五个岗位,可以做一个分类,前端和后端、运维和DBA、测试
前端和后端属程序类,也就是通常大家知道的程序员,主要是根据产品的需求开发出软件,属于公司的技术核心,非常重要。没有程序员的软件公司,也不好意思称为软件公司。
运维和DBA,这两个岗位的主要工作是管理服务器程序运行的环境和依赖的数据。运维可以看成是服务器管理员,所有跟服务器相关工作都是由他处理,比如服务器程序运行环境CPU、内存、磁盘资源监控、网络是否稳定监控,服务器程序依赖的软件安装等等。DBA就是数据库管理员,专门管理生产环境的数据库如MySQL、Redis。这两个岗位的工资不一定比程序员低,但是市场需求没有程序员旺盛。一家软件公司可以没有运维和DBA,但是不能没有程序。运维和DBA一般只有上规模的企业配备,小公司都由程序员兼任,毕竟如果公司只有个位数的服务器,完全没有必要专门配备一个运维,老板也不愿意花这个钱。
测试,虽然也是技术岗位,但是我个人感觉他们的工作不和技术挂钩,他们的工作就是不断使用程序员开发出来的软件,找出其中的BUG和漏洞。与此同时,他们的另一项工作就是督促程序员干活,修BUG。
论这些岗位的技术含量,我觉得测试是最低的,低端的测试几乎没有技术门槛,只要有软件使用经验,基本上都能干干测试的活,毕竟只是用用软件找找BUG嘛,而程序和运维则不行,必须掌握基础的技术技能才能上岗。当然高端的测试另当别论,他们也可以牛逼到天上。
其次是运维,当然并不是说运维这个岗位没有技术含量,同样运维的技术含量也很高,只是通常情况下,程序员都会点运维的工作,装装环境,监控下服务器运行情况,都没什么问题。反过来,运维却不一定会程序员的工作。我觉得运维应该是脱胎与程序员,然后随着行业的发展,独立成为一个岗位,本质上还是依附与程序员。
最后则是程序,一个合格的程序员,不但要掌握程序员本职的技术,还需要会服务器运维的技术,比如自己搭建一个测试环境,这样的技能是必须的,所以对服务器必然要有较为深入的了解。同时需要会DBA的技术,通常DBA是在数据量巨大的情况下才会配备,大多数时候一家公司不需要DBA,DBA的工作的都由运维或者程序员兼职的。与此同时,程序员还需要测试技能,当程序员写出来一个程序时,免不了要进行自测,写测试用例等等,只有经过自己测试,才可以将功能提交给专门的测试人员进一步测试。
所以,对于这三类岗位,我觉得程序员的技术含量是最高的。
我们再来说说这些岗位的发展前景。
对于一个大公司来说,会有专门的研发部门、运维部门、测试部门,然后设有研发总监、运维总监、测试总监,这些领导在公司的身价不相上下,不存在谁压谁一头的情况。但是在小公司通常只有一个技术部,这个部门管辖所有技术类员工,包括程序、运维、测试,甚至有的公司还会包含设计人员。而技术部门的领导十有八九是程序员出身,几乎不太会是运维或测试出身。因为一个软件公司的技术部门,没有运维和测试,照样可以运转,虽然有可能转的不顺溜,但是一定可以转,但是没有程序员,即便运维和测试配备的多么强大,这个部门也转不起来。其次一个技术部门程序员的数量绝对是压制运维和测试人员数量的。因此在程序员中出技术部门领导的概率远大于在运维和测试中出领导,除非真的遇到难得一见的人才。
所以,如果你想从事互联网软件行业的技术岗位,要想选其中比较有前途的技术类岗位,那么首选程序员,当然,更多的机会也意味着有更大的竞争,同时也有更大的难度,你选择程序员不见得一定会成为技术部门的领导,选择测试和运维也不意味着职业生涯会默默无闻,只是相对来说程序员的情景更加明朗。
与此同时,关于35岁程序员会被淘汰的观点,其实运维和测试的危险性更大,仔细想想难道不是吗,运维和测试并没有比程序员更有优势,反而劣势一大堆,那么肯定比程序员先一步面对淘汰,这是市场规则。
在标准的研发体系里,定义了很多不同的角色,上面三种也在其中。
角色职责不同,要求的技能也会不同。
分述如下:
程序员
程序员的主要职责是代码开发,所以代码编写能力必须过关,且最好具备系统分析、设计的能力。
从岗位来分,又分为前、后端开发:
1.前端开发
包括:WEB开发、APP开发(又分IOS、Android、H5)。
对应技能:
WEB开发:Vue、ReatJS、Angular、JQuery等;
IOS:Objective-C、Swift
Android:Java
H5:Html5
2.后端开发
两大阵营:Java和
.Net
对应技能:
Java:SSM、SpringBoot、SpringCloud等
.Net:WPF、C#等
软件测试员
测试员的主要职责是系统测试,白盒测试、黑盒测试、功能测试、性能测试、兼容性测试、集成测试等都需要参与,还需要编写测试用例、测试报告等。
对应技能:
掌握各种测试工具如Loadrunner、JMeter等,熟悉测试管理系统如禅道等。
数据库管理员
也就是DBA,主要职责是负责数据库环境搭建、业务数据库的设计、表设计、建库脚本、数据库优化、数据备份迁移等。
对应技能:
Linux指令,不同数据库的 *** 纵技能。
大型数据库的DBA招聘,会要求提供从业资格证书。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)