软件咨询师对于广大软件工程师来说是一个既向往又神秘的职业。
有人会问:“咨询师要写代码吗?”
A:“有可能的啊。”
有人问:“有不写代码的时候吗?”
A:“有啊,而且更多时候是这样的,软件咨询师既不写代码,也不设计测试用例。”
那软件咨询师干什么呢?他们在客户遇到问题时提供建议。
作为软件领域的专家,他们擅长利用个人丰富的领域知识,去解决软件开发、测试过程中的各种难题。除此之外,软件咨询师需要利用各种技能与工具帮助自己快速收集信息,分析、定位客户的问题所在。
本文尝试通过ThoughtWorks咨询师的一些实践,来总结一下软件咨询师常用到的工具。
工具从两个维度出发:
MECE 是麦肯锡所提出的一种分析方法,是Mutually Exclusive,Collectively Exhaustive的缩写,通常翻译成“相互独立,完全穷尽”。简单的说,MECE提供了一种有效的分类方法,当我们获取了团队中的信息时,这些信息可能非常杂乱。
例如当团队中出现测试效率低下的问题,团队中不同的人会给出非常多,互相交织的,层次不同的问题,有人会说“自动化太少”,有人会说“测试时间太靠后”等等。通过MECE原则,我们可以将这个事实进行抽象,归纳成相互独立的领域,验证是否实现了完全穷尽,让我们对问题的调研更加全面。
Five Whys,从字面理解非常简单,就是连续问5个“为什么”,同样是一种解决问题的分析方法,用于简单快速的找到问题的根源。
例如,
“所以,我对写这篇文章所需要的时间估算出现偏差”。
通过这一系列连续的询问,我发现了导致我现在头痛的深层原因,其实是我对这篇文章的时间估算出现了问题,导致我熬夜加班写,最终没休息好。如果以后要避免类似的头痛,治本的方法是作好规划,减少熬夜。
当然,并不是说Five Whys一定就能找到问题的更深层次的根源,但是在咨询现场、时间宝贵的情况下,是一种相对快速有效的方法。
“系统思考就是以整体的观点对复杂系统构成组件之间的连接进行研究。” ——《系统思考》
当我们找到了很多问题之后,需要判断哪些问题需要解决,以及做到怎样的程度时,系统思考会帮助我们从系统的角度出发,发现这些问题之间存在的相互关联与影响,帮助我们的客户作出决策。
例如,从测试的角度出发,我们希望产品的质量非常好,最好一直不出现问题,但是单纯通过测试达到改善质量的目的,可能将增加成本,进而导致产品价格上升,产品竞争力有可能下降等等。在咨询现场,咨询师们会经常遇到这样的问题,通过系统思考,帮我们找到当下最符合客户核心需求的方案。
系统思考在测试领域应用的实例: 《运用系统思考,走上改善之路》 。
为什么有手绘呢?边讲边画比单纯的语言效果好。拥有好的手绘能力,在白板上绘出形象生动的图,可以极大的提升演讲的效果和趣味性,同时体现出专业的一面。
(图片来自ThoughtWorks Agile Consultant 王伟)
常用的工具有Trello、 Xmind、PPT/Keynote,以及现场使用白板。
上述工具是ThoughtWorks软件咨询师日常工作中所使用工具及方法的一部分,针对不同的咨询场景还有很多不同工具。但是对于软件咨询师而言,工具只是招式,丰富的领域知识与过硬的技术能力才是内功,像金庸小说中讲到的那样,“无招胜有招”才是最高境界。