QA对技术的要求相对低。QA可以粗略的分成两种,一种是mannualtesting,全手工测试,你不需编程,基本就是分析软件系统,制定测试计划和用例,然后用鼠标去点击为主,从技术角度来看,的确低级了点,早些年,developers觉得去做QA是降级,跟发配充军一个意思,所以QA不得不到处找,来源很复杂,做QA的整体技术能力也比较低下;现在随着公司对产品质量和测试工作的重视,有CS技术背景出身的qa越来越被青睐;第二种QA,做的是自动化测试(automatedtesting),就是用软件工具或者自己编程来自动化测试,这个就要求懂技术甚至要会编程,但是要求又没有developer那么高,这种技术性的QA 也比较缺乏,现在的趋势是很多公司尽量用automatedtesting替代mannualtesting来提高效率。
同样经验/教育背景,QA的工资应该比developer低,但是差别也不是很大。很明显,学cs任何一个方向的人,都可以胜任QA的工作。
三、Database/networkadministration
数据库/网络管理对编程要求也很低,你不需要像开发数据库或者网络管理软件的人那样子,天天耗在编程里。这类工作优点很多:
1 就业范围广,稍微大点的公司、学校或者任何机构都需要有高级管理员来管理维护网络和存储备份数据库;
2 工作经验越丰富越受欢迎,因为很多job就是得经验丰富的administrator才能处理好,不是随便扒拉一个没多少经验的人就能凑合着做的;
3 信息社会,公司对数据库和网络依赖严重,所以有时候一个经验丰富的database/networkadministrator对公司可能非常重要,如果他突然撒手走了,公司又没有准备好替代人员的话,会损失惨重的。
因此,这类工作工资高,也比较稳定。前段时间有些金融公司即使大幅度裁员,核心的网络和数据库管理员也会被保留。
这类工作的缺点是入门比较难,公司希望你能有相关的实战经验而不仅仅是会点学校里的理论知识,刚毕业的学生往往根本没有这方面的经验;有时候需要在晚上或者周末工作,也可能有oncall的情况出现。
四、Others
其他的工种也有,比如releasemanagement,用户界面(UI,user interface)设计,usability,Technicalsupport等等,但是一方面这些工作数量相对少,另一方面,不同的公司里,相同的职位名称可能具体的工作性质不太一样,比如做releasemanagment的,有的公司要求做很多QA的活,有的公司更靠近developers,还有的公司可能让你安装/搭建系统来管理不同的releases,跟个系统管理员似的,所以就不一一详叙。
最后,谈一下cs研究生教育和工业界需求的不同。