软件测试工程师的分类从新手到专家
两个重要的概念。
1、经验。不仅仅是我做过什么什么,做了多少多少次,多少多少年,更重要的是在一次次重复的过程中,发生了思维的改变。直白一些说就是在做的过程中不断的思考、学习、改进。否则就只是重复了N次,而并没有对等的经验。——这个问题在一直以来的面试中经常遇到,很多声称有4年经验的 tester,其实只是重复了很多工作,而经验只能相当于2年。
2、情境。区分从新手到专家各个不同等级的重要标志,直白的说,就是一个人对当前所需要解决的问题认识的是否准确。这个不太好量化,牵扯到一个“怎么知道自己认识的是否准确”的问题,所谓的“决策失误”之类的,就是这么个事情。作者的一个观点是“新手通常乐观而无畏,而专家就谨慎的多”。
--------------------------------------------------------------------------------
进入正题了,说说从渺小变强大的过程吧,在讨论的过程中需要反复的引用“经验”和“情境”这两个概念。
NOTE: 新手 和 专家 不是绝对的。你可以在某个领域是专家,而在另外一个领域是新手。
1、新手:对所需要处理的问题毫无经验。
● 作为一个新手,最大的期望是有一个 list 让他照着做就顺利的把事情搞掂,而不是给他一些建议让他自己去尝试——悲观点估计,他会因为无法理解复杂的概念体系以及受挫而变得烦躁易怒、痛苦不堪,并可能随时放弃。所以对待新手的最好方法就是前面那个。
● 当新手手执一份 list 时,表现的会像个专家,因为你可能会发现他的思路很有条理、很靠谱——这个典型的例子就是呼叫中心的座席,典型的 if...else...else...else...then...end 的模式
● 新手的最大特点,就是无法处理任何异常/例外的情况,哪怕是跟 list 上稍有差别——当然,也有些胆子大的敢胡乱折腾。
● 专家可以写出完美的 list 供新手化装成专家,但如果专家自己用这个 list 来工作,则可能表现的还不如那个新手化装成的专家。很绕口,不过的确是这么个意思。
● 在公司里,常见的新手是应届生/实习生。
2、高级新手
● 高级新手与新手的最大不同,在于有了一点经验(注意前面对“经验”的定义),并开始尝试着通过学习来独立解决一些局部的、具体的问题,但通常属于依葫芦画瓢,画得有点费劲,并且可能不太像。
● 高级新手开始有了一些碎片化的知识和经验,但对需要解决的问题缺少系统化、结构化的认识。
● 例如一个 tester 能在文档的帮助下独立完成对环境的搭建和 test case 的执行以及 bug 提交等工作,并且最重要的是他开始能够借助 Google 解决一些技术上的例外情况;或者,一个初级开发人员能通过 Google 或 API 的学习编写一些小段的功能代码。
● 在公司里,通常我们把高级新手称为初级工程师。
3、胜任者:团队中的中坚力量
● 对于自己所从事的工作,胜任者已经掌握了现有的一整套工作思路/方法,并能用来解决相同领域的各种不同问题。例如,一个测试工程师可以理解不同系统的需求,并根据用例设计方法设计出测试用例;同时,他能够与不同的项目团队进行沟通,完成项目的各项测试工作。既是对于不同的业务领域,也能较快的学习上手。
● 胜任者掌握了处理解决类似问题的多种方法,并且有能力区分当前哪个方法更适用。
● 胜任者拥有完全独立工作的能力,而 新手 和 高级新手 通常需要 胜任者 的监督和帮助。
● 在公司里,通常胜任者是 中级工程师。
4、精通者
● 相比 胜任者,精通者做到了“知其然,知其所以然”,不单单能根据当前的情境(参照上面对情境的定义),更有能力思考如何改进原有的解决方法/方式,以更高效的解决问题——这依据的是其对技术、业务、过程的结构化、系统化的理解和思考。
● 精通者 能够理解一些抽象的信息,甚至从中吸收一些新的东西——但未必一定要通过动手实验,进而提出新的抽象模型/模式。
● 对于精通者来说,具体的技术/工具已经不是其完成工作的障碍。
● 对新手和高级新手的容忍度很低。
5、专家
● 已经不再受任何规则/指南的约束,解决自己领域的问题对他们来说似乎不需要思考,如在前文中提到的,专家使用的是“直觉”,这种通过长期大量反复的实践、总结和思考/冥想以后,已经由意识层面进入了潜意识层面的东西。
● 专家可以把自己的解决思路/模式梳理成 list/指南,但是他深知无法将所有的细节和例外都包含其中,而这些细节和例外,就是“情境”中最重要的部分,甚至各种细节变化的累加,足以使一件事情变成了另外一件事情,而专家总是能从容的处理这一切。另外,因为专家深知这一切,在他未表现出来的内心中会对问题保持谨慎的态度,而相对的,新手或高级新手有一种盲目的乐观。
● 如果你要专家使用自己编写的 list/指南去工作,他将无法施展出自己的才能,甚至表现的像个高级新手。所以,对于专家不要要求他像其他人那样工作。
● 如果你见过真正的太极高手,就能体会到什么叫“行云流水”一般,一切显得从容不迫,而这就是专家给人的感觉——可以做到完美,并且感觉不到他是在处理那些胜任者无法想明白的难题。
● 据说人群中能成为专家的,只有1%-5%,所以貌似不用强求自己一定要成为专家,做个精通者也挺好的。
--------------------------------------------------------------------------------
讨论完了从新手到专家的过程,早来说点其他有趣的东西。
1、专家应该尝试编写指南供新手和高级新手操作,并为胜任者和精通者提供培训和指导,但应该避免直接培训新手和高级新手。
2、精通者同样无法忍受新手和高级新手,所以最好去帮助胜任者把事情做得更好。
3、胜任者是培训和指导新手和高级新手的最佳人选。但是,如果缺少了精通者和专家的指引和帮助,胜任者想突破自己将是一个非常痛苦和漫长的过程。
4、新手需要“被驾驭”,别理解错了,他们需要在有明确指引的情况下快速的完成任务,快速收获成就感,否则很容易被挫折打败。
5、高级新手需要更多的激励和实践,以帮助他正确的理解当前所从事的工作,并尽快成长为胜任者。
6、合理的人力结构并非金字塔结构,团队中新手和专家都不要太多。据统计,大概是这样的(书中只有图例,我大概的估算了一下):高级新手 40%,胜任者 30%,精通者 10%,新手 15%,专家 5%。
7、但如果是一个 agile 团队,新手和高级新手都不要太多,因为 agile 中充满着各种“隐喻(oracle)”和“经验之谈”,这将大量依靠精通者和专家来解读和运作。
8、在推动团队前进方面,精通者与专家有同样的价值。
版权声明:本文出自 aiffir 的51Testing软件测试博客,欢迎转载......
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/