对于科技日益发展的美国来说,计算机专业的申请无非是现在比较热门理工科专业之一。申请计算机专业的同学通常会遇到的首个问题就是,学计算机专业的发展前景是如何的呢? l Developer/Programmer/Software Engineer不管你是硕士,还是博士,不管你是学CS哪个方向的,研究算法(algorithm)的也好,人工智能(AI)的也罢,或者是软件工程(software engineering)、图形处理(graphics/image processing)、网络(network),大家将来都有一条共同的也是CS里最大的出路,就是去写code编程做软件开发。 很多人申请的时候,或者在学校读书学习期间,很在意各个方向的区别,痴迷于某个领域,但是工作几年回过头来一看,没有什么区别,大家都有一个光荣的头衔,软件工程师,或者是程序员,职称(title)和工资高点低点而已。区别无非是有的人通过学校期间的学习或者研究,具有domain knowledge(比如说常见的image processing算法,数据库知识,各种网络协议和分布式系统知识),然后去开发各种相应的domain-specific application(比如图形图像处理软件,数据库管理软件,网络设备/分布式系统上运行的软件)。 l Software QA(quality assurance)/Testing每年网上都有很多人发帖子说“我学cs,但是我编程能力比较弱或者不喜欢编程,将来我能不能不去coding?”做软件测试(QA/testing)就是一个选择。 从软件工程的角度来说,有人写软件,就得有人专门跟在后面找bug提高软件的quality。QA的活一直被轻视,以前曾经被认为是可有可无的东西,不需要专门的QA,现在被越来越重视了,当然还是有些人觉得qa不如做developers更重要,但是不可否认的事实是,QA不可或缺,QA工作现在很多,已经在计算机行业里占了很大的比例了。 QA对技术的要求相对低。QA可以粗略的分成两种,一种是mannual testing,全手工测试,不需编程,基本就是分析软件系统,制定测试计划和用例,然后用鼠标去点击为主,从技术角度来看,的确低级了点,早些年,developers觉得去做QA是降级,跟发配充军一个意思,所以QA不得不到处找,来源很复杂,做QA的整体技术能力也比较低下;现在随着公司对产品质量和测试工作的重视,有CS技术背景出身的qa越来越被青睐;第二种QA,做的是自动化测试(automated testing),就是用软件工具或者自己编程来自动化测试,这个就要求懂技术甚至要会编程,但是要求又没有developer那么高,这种技术性的QA也比较缺乏,现在的趋势是很多公司尽量用automated testing替代mannual testing来提高效率。