说老实话,我不觉得我合适讨论这个题目,毕竟我入行的时间也并不长,4年而已。但是最近看到两篇关于职业规划和薪资讨论的文章,觉得自己也想说一说。
对于薪资,我觉得应该市场这个角度来看。如果员工的跳槽没有受到太大的限制,那么这就是一个开放的市场,而对于一个开放的市场,一个员工的价值和他的薪资大体是对应的,不会有太大的出入。如果你抱怨老板给的薪水太低,那么你需要考虑的不是这个老板有多奸诈,而是你是否值更高的价格。总是将原因归咎于外在因素不过是不成熟的一种表现。延伸开来,我们更应该考虑的是我们的能力是否得到提高而不是薪资。做事和赚钱的关系很多人都颠倒了,事情做好了,钱自然就来了(否则你就跳槽了)。永远盯着钱跑不过是一种短视的投机行为而已。
同样的理论,职业规划也应该是从能力的提高而不是工资的提高的角度来考虑--钱是必须要考虑的,但是作为长期的职业规划,收入是从属于能力的提高的,如果主次颠倒了,很容易迷茫。同时软件测试工作是个技术活,如果你觉得你的目的是利用QA作为跳板,最后达到自己开公司或者从事纯粹的商业管理的阶层,那么我不觉得我能够提供任何的建议,因为我不懂。我能够说上一点点的,是QA的职业规划。
从技术的角度来讲,QA的职业规划其实不复杂,它其实取决于你对软件行业的了解。大体来讲,软件有三大类:
基础件Infrastructure software(such as Linux OS, Storage software...),
中间件 Middleware(such as IBM Websphere, BEA Weblogic, Oracle DB ...)
和用户件 Consumer product(such as MS Word 用友财务软件, 搜狐 ...)
软件测试人员的能力也分三个层次:表层,中层和核心部分[这几个是我自己捏造的说法,姑且称之]。
表层是指用户界面的测试。网站的网页的界面是最容易理解的,但是对于很多中间件的软件而言,比如说ORACLE DB,他们也有很多软件是有用户界面的,当然这里的用户不是上街买菜的大婶。界面测试的技术含量比较小。并不需要太多的专业知识,这大概是很多人觉得QA不够有技术含量的原因。
我说的中层的测试多数是指功能测试和API测试。这个时候,软件测试就更多的依赖于对软件核心功能的理解了。这个层次的测试更多的是自动化测试--无论是用专业的测试软件还是自己写测试工具。我现在应该在这个层次。我相信大部分QA也不过是这个层次,区别在于对测试工具的掌握程度和各自的编程能力。
我想象中的核心的部分的测试更多的是白盒子测试。不要以为这个很容易,至少到目前为止我还没有看到有几个人可以做到。我已经做了一年左右的research,我还没有看到太多这方面的权威资料,也暂时不知道该如何进行(望不吝赐教!)
从技术层面来讲的职业规划到这里其实已经很清晰了。明白自己在那个层次,了解将来自己可以往什么层次发展是第一部,然后就是需要找到通往下一步的路--这条路要找到不是很容易的,唯一找到这条路的方法就是不断学习提高,从而让自己能够迅速的从更深刻的层次了解自己需要测试的软件。
职业规划当然不能只有技术的部分,人性也是必须考虑的因素。这里的人性,是指自己对自己的了解。有些人天生就喜欢技术,有些人天生就不喜欢,有些人介于这两者之间。有些人就是能迅速理解技术,有些人没有这方面的天赋。QA的将来并非只有做技术一途。事实上,QA的职业发展比做纯粹的开发更加广阔。
-- 因为QA需要接触的是全部的代码,所以QA需要对开发项目有更全面的了解,所以QA比开发人员更容易做好PM(项目经理)的工作
-- 基于同样的原因,在具备了一定的开发经验之后,QA更容易也更胜任架构工程师的工作
-- QA的工作的一个很重要的组成部分是和别人沟通,所以QA很容易转到做用户需求的领域,等于是一脚迈入产品设计的大门
-- 基于同样的原因,QA做产品的技术支援是最自然的过度,技术支援再往上走就是专业的顾问公司了
总而言之一句话:做好职业规划需要对技术和自己有深刻的了解。