1. 运维、测试、程序员,这些技术岗位哪个更有前景
在一个初具规模的互联网公司,从业务方面出发,有很多岗位类型,比如运营、客服、市场、产品、设计、技术等等。
在这些大类下面,还要细分各种小类,以技术为例,可分为前端(客户端)、后端、测试、运维、DBA等等,这些都是技术类岗位。
那么如果想从事这些技术岗位,该如何选择,哪一个更有前途呢?
这五个岗位,可以做一个分类,前端和后端、运维和DBA、测试
前端和后端属程序类,也就是通常大家知道的程序员,主要是根据产品的需求开发出软件,属于公司的技术核心,非常重要。没有程序员的软件公司,也不好意思称为软件公司。
运维和DBA,这两个岗位的主要工作是管理服务器程序运行的环境和依赖的数据。运维可以看成是服务器管理员,所有跟服务器相关工作都是由他处理,比如服务器程序运行环境CPU、内存、磁盘资源监控、网络是否稳定监控,服务器程序依赖的软件安装等等。DBA就是数据库管理员,专门管理生产环境的数据库如MySQL、Redis。这两个岗位的工资不一定比程序员低,但是市场需求没有程序员旺盛。一家软件公司可以没有运维和DBA,但是不能没有程序。运维和DBA一般只有上规模的企业配备,小公司都由程序员兼任,毕竟如果公司只有个位数的服务器,完全没有必要专门配备一个运维,老板也不愿意花这个钱。
测试,虽然也是技术岗位,但是我个人感觉他们的工作不和技术挂钩,他们的工作就是不断使用程序员开发出来的软件,找出其中的BUG和漏洞。与此同时,他们的另一项工作就是督促程序员干活,修BUG。
论这些岗位的技术含量,我觉得测试是最低的,低端的测试几乎没有技术门槛,只要有软件使用经验,基本上都能干干测试的活,毕竟只是用用软件找找BUG嘛,而程序和运维则不行,必须掌握基础的技术技能才能上岗。当然高端的测试另当别论,他们也可以牛逼到天上。
其次是运维,当然并不是说运维这个岗位没有技术含量,同样运维的技术含量也很高,只是通常情况下,程序员都会点运维的工作,装装环境,监控下服务器运行情况,都没什么问题。反过来,运维却不一定会程序员的工作。我觉得运维应该是脱胎与程序员,然后随着行业的发展,独立成为一个岗位,本质上还是依附与程序员。
最后则是程序,一个合格的程序员,不但要掌握程序员本职的技术,还需要会服务器运维的技术,比如自己搭建一个测试环境,这样的技能是必须的,所以对服务器必然要有较为深入的了解。同时需要会DBA的技术,通常DBA是在数据量巨大的情况下才会配备,大多数时候一家公司不需要DBA,DBA的工作的都由运维或者程序员兼职的。与此同时,程序员还需要测试技能,当程序员写出来一个程序时,免不了要进行自测,写测试用例等等,只有经过自己测试,才可以将功能提交给专门的测试人员进一步测试。
所以,对于这三类岗位,我觉得程序员的技术含量是最高的。
我们再来说说这些岗位的发展前景。
对于一个大公司来说,会有专门的研发部门、运维部门、测试部门,然后设有研发总监、运维总监、测试总监,这些领导在公司的身价不相上下,不存在谁压谁一头的情况。但是在小公司通常只有一个技术部,这个部门管辖所有技术类员工,包括程序、运维、测试,甚至有的公司还会包含设计人员。而技术部门的领导十有八九是程序员出身,几乎不太会是运维或测试出身。因为一个软件公司的技术部门,没有运维和测试,照样可以运转,虽然有可能转的不顺溜,但是一定可以转,但是没有程序员,即便运维和测试配备的多么强大,这个部门也转不起来。其次一个技术部门程序员的数量绝对是压制运维和测试人员数量的。因此在程序员中出技术部门领导的概率远大于在运维和测试中出领导,除非真的遇到难得一见的人才。
所以,如果你想从事互联网软件行业的技术岗位,要想选其中比较有前途的技术类岗位,那么首选程序员,当然,更多的机会也意味着有更大的竞争,同时也有更大的难度,你选择程序员不见得一定会成为技术部门的领导,选择测试和运维也不意味着职业生涯会默默无闻,只是相对来说程序员的情景更加明朗。
与此同时,关于35岁程序员会被淘汰的观点,其实运维和测试的危险性更大,仔细想想难道不是吗,运维和测试并没有比程序员更有优势,反而劣势一大堆,那么肯定比程序员先一步面对淘汰,这是市场规则。
2. 测试程序员被开发挖坑咋办
提高自身核心业务能力。根据查询相关公开信息,测试程序员被开发挖坑的解决办法得从自身做好做起,测试程序员应该要提高自己的核心业务能力,让开发挑不出来毛病,从而产生信任甚至叹服。
3. 做程序员与做测试员的选择
1、学历问题:大公司对于学历还是有一定的要求的,学历高的起薪也高,但是学历不能代表所有,也有学历高,但是技术垃圾的人,所以不要因为学历的问题来妄自菲薄,学历只是入门和之后评职称的时候有用,学历可以以后慢慢考。所以学历不是问题。
2、方向问题:如果是培训出来的话,那的基础知识一定不会非常的好,一定要注意基础部分,不要总是因为学习了多少框架而感到骄傲并且否定基础的东西,其实无论是框架还是什么都是基础的延续,只要打下了扎实的基础,那么学习起框架那些东西。培训出来的人大都做开发,而测试一般都是逼不得已而为之!
3、测试和开发哪个好:都是比较枯燥的工作,测试久了想转开发,开发久了想转行。就像围城。测试,没有做过,但是听说过一些,测试枯燥、乏味、而且经常熬夜,(开发也一样),但是从薪方面看,开发的优势就远远大于测试了,不是说测试比开发低级,用共产党的话就是:革命没有贵贱之分,只有分工的不同而已。
(3)程序员测试员扩展阅读:
做好一名测试工程师的方法:
1、沟通能力。
一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。
2、技术能力。
一个测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到这一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学习曲线。
3、很强的记忆力。
一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。
4、幽默感。在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。
4. 普通程序员的工作是怎样的
普通程序员的一天可以大致分为四个阶段:准备工作、编码、测试和维护,具体如下:
1. 准备工作阶段:在上班前,程序员需要查看邮件、简报和任务列表,了解当天的工作安排和完成情况,以及与项目相关的问题和需求。这个阶段还可以进行代码审查、阅读技术资料和学习新技术等。
2. 编码阶段:程序员会花费大部分时间编写代码,根据需求和设计文档,选择一种或多种开发工具和编程语言来开发应用程序。可能需要进行后端API开发、数据库设计、前端页面设计等工作。程序员在这个阶段需要严格遵守编码规范,注意代码简洁、可读性强、可扩展性好等方面的要求,以确保代码质量。
3. 测试阶段:在编写完代码后,程序员需要对其进行严格测试和调试,以发现和修复错误和缺陷。测试包括单元测试、集成测试、回归测试等,采用不同的测试工具和方法来确保代码质量和软件稳定性。和辩
4. 维护阶段:在软件投入使用后,程序员需要对其进行维护和升级。这包括诊断和修复软件问题、更新代码、添加新功能等,以满足客户或用户的需求。同时还需要维护文档、处理问题反馈和进行沟通等工作。
举个例子,一个普通程序员的一天可能包括以下任务:
1. 9:00 - 10:00:查看邮件、简报和任务列表,了解今天的工作安排和完成情况,并回复相关邮件和信息。
2. 10:00 - 12:00:根据项目需求,完成后端API的开发,使用Java和Spring框架进行编码,并进行单元测试。
3. 12:00 - 13:00:午餐时间,与同事交流,了解其他项目的进展和困难,商讨解决方哪滚法。
4. 13:00 - 14:30:继续完成后李棚余端API的开发,与数据库设计师沟通并进行数据库设计。
5. 14:30 - 16:00:开始进行前端页面的设计和开发,使用HTML、CSS和JavaScript等技术进行编码,并进行集成测试。
6. 16:00 - 17:30:接收产品经理的问题反馈和建议,修改代码并进行部署,同时对新功能进行测试和调试,确保无任何问题。
7. 17:30 - 18:00:总结今天的工作,编写工作日志,提交代码库,准备明天的工作计划。
这只是其中一种可能的工作安排,不同的程序员和项目有不同的工作负责和时间分配。
5. 程序员、软件测试员、数据库管理员应具备哪些能力
在标准的研发体系里,定义了很多不同的角色,上面三种也在其中。
角色职责不同,要求的技能也会不同。
分述如下:
程序员
程序员的主要职责是代码开发,所以代码编写能力芹碧必须过关,且最好具备系统分析、设计的能力。
从岗位来分,又分为前、后端开发:
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招聘,会要求提供从业资格证书。
6. 测试算不算程序员
软件测试严格意义上说也算程序员。软件测试员是指根据测试计划和测试方案进行软件测试;能够针对软件需求开发测试模型,制定测试方案,安排测试计划,并对测试项目进行管理的专业人员。
实践证明,实际的测试过程是颇为复杂的,这对软件测试员的要求很高。其职业等级可分为四级、三级和二级等不同的级别。测试者在执行测试任务的时候要专心,不可一心二用。高度集中精神不但能够提高效率,还能发现更多的软件缺陷,业绩最棒的往往是团队中做事精力最集中的那些成员。执行测试工作时候要细心,认真执行测试,不可以忽略一些细节。某些缺陷如果不细心很难发现,例如一些界面的样式、文字等。
测试员需要有难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。很多测试工作有时候显得非常枯燥,需要很大的耐心才可以做好。如果比较浮躁,就不会做到“专心”和“细心”,这将让很多软件缺陷从你眼前逃过。