按我的理解:
一个人的核心竞争力 =硬能力 + 软能力 + 外部能力
硬能力= 技术积累 + 业务积累 + 语言积累(英语)
软能力= 沟通能力+管理能力+写PPT能力+其他对工作有用的非技术能力,或者说技术能力的表现力
外部能力 = 人脉、运气、家庭条件 等等来自于外界的附加值
其中,硬能力是比较难学的东西,软能力则是通用的东西,外部能力很多时候是比较难改变的东西。
- 语言积累(英语)
首先语言积累很重要,不管是不是在外企工作,阅读英文资料都是提升自己技术积累的必由之路。以我熟悉的自动化测试为例,市面上的中文书籍几乎都过期得一塌糊涂。有一次,我看到同事买了一本讲selenium的中文书,好奇借来看看,半天就看完了。因为此书水平太低:大篇幅抄官方文档,浪费篇幅讲过时的selenium IDE等等。我看了感觉毫无帮助。但,这在中文资料里已经算比较好的,至少他没有大错。不像那些良莠不齐的技术博客,有时把你引入歧途。
“过时”,是中文技术资料最大的问题。学好英语是绕过这个问题的必由之路。
一般上,我们需要积累英语水平,达到可以听懂老外的技术讲座,可以向老外提技术问题及理解他的回答(半夜不睡觉的可以去参加老外开的webinar在线研讨会,可以向顶尖的牛人提问之类的;每年自动化测试领域都有国际交流大会,虽然我们可能没条件去欧洲赴会,那至少可以看看视频回放啥的,保持跟国际接轨;或者你如果在外企的话可以跟技术好的老外交流)。
怎么学英语?我发现凡是来问我这个问题的都是不想学英语的人,幻想有某种不努力也能成功的捷径。因为我既不是英语老师,英语也不是很好(叫个美国小学生出来都可以在英语领域完败我)。所以我建议要么凭个人的大毅力自学,要么找专业老师学习。
英语积累是技术自学领域的一大门槛,这个槛是绕不过去的。以前有人说计算机专业就是要学好英语和数学,我觉得挺对的,英语和数学,至少得其一。当然,如果混日子的,两个都不得也没关系,那人生轨迹也就全凭运气了。
- 业务积累
业务积累是传统黑盒手工测试工程师最主要的一块核心竞争力,因为他们技术积累只到三个月为止。业务积累确实重要。如果让一个不懂金融业务的人去测试外汇交易系统,那太困难了。因为这种复杂的金融系统光是用户手册就厚得像一本大书。而反过来说,如果让一个新人去测试一个小网站,业务知识上通常没有门槛,因为业务太简单。有的时候,业务会变,比如我以前公司做DVD光盘刻录软件为主营业务做了十多年,但在互联网高速发展的现在,他的主营业务变成了网站、web服务。原来的光盘刻录项目组第一个被剥离,卖掉。假如你只会黑盒手工测试,只积累了光盘刻录行业的业务知识,此时人生轨迹就要遭遇挫折。另外,外包公司是一个特例,外包公司的业务取决于他服务的公司的业务。做外包,因为项目不断变化,很容易导致你的业务积累不断归零,毫无积累。这也是为什么我不建议新人做外包测试。
业务积累的特点是依赖特定行业,并可能产生变化。
- 技术积累
技术积累是我们走技术路线的人最主要的积累,也是想走管理路线的人需要的一个前提条件。或许,你凭借业务积累和软能力就能当上测试管理人员。但是当今社会竞争是很激烈的。即使当上了管理,也未必是好事。我们要考虑十年之后,二十年之后,人到中年的时候,会不会惨遭淘汰。做管理的负效应是:技术的遗忘。管理做个几年,技术就差不多忘光了。更何况还有很多人,当不上管理。我们为了不被淘汰、为了提高竞争力,就要提高技术积累。
这里有一个杯具的事实就是:黑盒手工测试的技术积累基本上就只有三个月为止了。这也是为什么我觉得一毕业就从事黑盒手工测试不是一个很好的选择。只有黑盒手工测试工程师自己认为自己的工作很重要,自己不断骗自己说自己的工作很有技术含量。我只能说,即使有黑盒手工测试工程师技术很好,那也是因为他开发学得好,而且他做黑盒手工测试做不了几年技术积累就得归零。
在后来的工作中,我们会不断发现,要想测试做得高端,先积累十年开发技术底蕴的重要性。
比方说我做自动化测试框架,做着做着发现很快达到了应用自如的程度了。但再做突破,比如要把框架和框架连接起来,搭建一个完整的自动化测试平台,或者说大型的自动化测试解决方案,此时我面临的问题就是:技术积累不够,做不了。而此时需要的是开发技术,没有十年开发技术积累的底蕴,我做不了。
再比方我做性能测试,做着做着发现我都懂了,能做了,工具使用自如了。但再然后,定位性能瓶颈、进行性能调优,又做不了了。还是缺少技术积累。此时需要的也是我缺的那个十年开发技术积累。
如果是自学能力强的人,可以较快地自行发现这个开发技术积累的重要性。如果是自学能力一般的人,可能达到自动化测试的瓶颈就要花三年,达到性能测试的瓶颈又要花三年,然后六年之后才知道,少了开发技术的积累。
测试行业的矛盾在于,想做高端技术岗位,技术积累得靠前期从事十年有技术积累的开发工作(XXX信息管理系统不算),或者靠强大的自学能力补足。而一般人不会去定这么高瞻远瞩的发展路线。
此后最大的问题就是 "自学经验 < 项目经验"。
自学,往往是不得要领的,容易学到岔路上去。所以武侠小说里的一般高手都需要师傅指点,只有特殊的不世奇才可以凭空自学,像金庸小说里写九阴真经的黄裳。而正常人哪怕聪明得像黄蓉仍旧需要师傅指点。
"自学经验 < 项目经验" 的一个简单体现就是,我们去面试的时候,面试官会问你做过什么实际项目,而不是问你自学了什么技术。很多人自学了selenium之类的自动化测试框架,全学得乱七八糟不成章法。可能因为语言积累不到位,也可能就是因为他缺少实际项目这个最好的师傅的指点。
所以对于技术积累尚且不足而从事测试行业的大多数人来说,真正问题在于:
技术积累要靠自学,而自学一旦离开了实际项目,难度很大。
就像那些从事XXX信息系统开发的开发人员一样,我们如果想做高端的技术岗位,离不开自学。这里又体现了学历的重要性。如果你学历够高,直接去最有名的大公司从事相对XX信息管理系统来说更有技术积累的开发工作,那是极好的,即使去那边做测试开发之类的工作,也有人带,也是极好的。很大程度上,提高技术积累的难度就低了。也就是说,在提高核心竞争力的“游戏”里。“高瞻远瞩,先做十年开发的人”和“学历高的人”,玩的是普通难度/稍难难度,而我们直接做测试的人,玩的是噩梦/地狱难度,英语不好又直接做测试的人自然是炼狱难度了。所以,我们简直就不是在一个世界,测试行业的人分布在不同难度/层次的世界中,对行业的认知也有很大不同。
我属于不幸玩了个地狱难度的人,刚毕业就从事黑盒手工测试,技术零积累,并且是外包行业的黑盒手工测试,业务零积累,毕业学校也低端,三本学校。
然后,想要在这个核心竞争力的游戏从高难度模式下玩通,这就是我们要研究的问题。
我去面试过一些测试中高端岗位,他们的技术要求有很多,而且有一个特点就是
大部分中高端测试岗位的技术要求都不一样。
小公司、外包公司的自动化测试岗位不算,带一点技术的手工测试岗位不算,我说的岗位特指从薪资到名称都高大上的岗位。月薪20k以下的都不算。比如说我去面过一个XX宝核心组的白盒测试,要求是熟悉springMVC等开源开发框架。这种要求对于没有那个十年开发积累的普通测试人员来说无异于天方夜谭。我还面过一个X宝的XX聊天工具的服务器测试岗位,要求是熟悉高并发编程、服务器、中间件、socket编程等等,又是一个我一样技术要求都不符合的职位。但这两个岗位之间的共性也不多。为什么呢,这是因为测试工具、框架、平台的实现方式取决于最初的设计,不同公司有不同设计,甚至同一个集团的XX宝和X宝也有这么大的区别。再次说明了先积累十年开发经验的重要性(而且必须是能找到对口岗位的十年经验),以及我们的噩梦难度和地狱难度到底有多难,从侧面又说明了学历的重要性。后来我发现甚至中端的,10k到20k的技术岗位往往也会要求开发基础,比方说相当于三年开发积累、五年开发积累的人,都能在其中找到不同的位置。而大家共同的问题就是,找到这个位置之后想往上走很难。
(我把篇幅缩短了,读起来方便,写起来也方便,仅作为随笔,随便写写)