问题解决能力该如何培养?
常看到一个软体工程师的大哉问:「什么是资深(Senior)工程师」,老实说每个人心中的答案肯定不一样,所以每间公司的标准也不同。网友说得很好,资深工程师要具备问题解决(problem solving)的能力,这也是教育界推崇程式设计的理由之一。可是,到底什么是问题解决能力?字面上的意思非常清楚,实际训练的方式却非常模糊。为什么这些人就是有本事解决问题?所以学程式就一定能解决问题吗?
我觉得可以从三个面向来讨论资深工程师如何把问题解决:技术面、沟通面、规划面。技术面绝对是不可缺少的项目,除了程式之外,还包括资讯工程与领域知识(domain knowledge)。通常能够解决问题并不在你多么会写程式,因为会写程式的人很多所以不会成为问题,只有在知识匮乏的地方才会产生问题(需求)。所以具备与资讯技术相关的丰富知识,应该是资深工程师的基本条件。
有的人说资深工程师要会带人教人,但「自己懂」跟「会教」本来就是两件事,要求一个没受过训练的人会教实在有点强求,况且这个和问题解决没有直接关联。那么什么是和问题解决有关的呢?我想沟通还是必要的吧。即使不用像业务那样伶牙俐齿,至少对自己公司内部的人或是PM要有办法沟通,否则怎么确认需求、怎么和别人合作?所以虽然工程师的沟通需求不高,但基本程度仍然是必需的。
问题解决能力到底是什么?我应该思考十年有了吧(大概书读得不够多)。我相信自己有这个能力,却不知道它从何而来。当我开始学习专案管理的时候,看到「系统化思维」这个词,身为一个做系统的软体工程师,理所当然具备系统化思维;我相信它与问题解决能力有密切关联,但我仍然无法描述清楚「能力从何而来?」。不清楚它的来源,就无法做有效率的培训或评估,所以我认为这是很重要的事。
工作几年之后,我发现一件令人意外的事。原来即使是会写程式的科班生,也不见得能做系统分析的工作。我的五专毕业专题就要做系统分析才有办法进行,所以我一直以为这对工程师来说是基本。毕竟要无中生有变出一套系统来,系统分析是必要的第一步,这就是上面提到规划面的部份。当然,规划可以分成很多不同的层面,从云端硬体架构、软体流程架构,到程式逻辑架构等等,都有专门的职称可以代表。此时我终于明白自己为什么能够具备系统化思维能力了,因为我原本就喜欢系统分析的工作,这两个词汇主要是应用在不同领域产生的差异。
如何培养问题解决能力?如何培养系统化思维?我查到的资料都是很模糊的语言,什么综观全局、经验累积…怎么看都跟废话没啥两样。有一天我突然就懂了,原来大家都有通灵的本领,难怪那么厉害。工作这几年如果问我对公司最大的贡献是什么?我想总归一句话就是帮公司解决问题吧。不认识我的人想必会问「你凭什么?」,我自己也在问「我凭什么?」。我凭什么知道这个人有办法或有希望解决问题?而不是乱枪打鸟一切跟着感觉走?我不是先知,我的理性告诉我心中有个评断的标准,但我不知道那是什么。
所以资深工程师为什么能解决问题?看看上面排除人的因素,就是知识技术与系统分析了,那么运用到别的领域,则是系统化思维。所以什么是系统化思维?它需要两项基础能力:逻辑推理与分析归纳,但只有这二项能力不代表你能做好系统分析的工作,缺少的那一块叫软体工程,即是系统分析的「方法论」。想到这里,我终于豁然开朗了。刚毕业的时候,我能做出符合需求的系统,却不知道这个需求是会改变的。所以我开始学习如何做出更有弹性的系统,在不让系统变得太复杂的情况下,又能保持某种程度的弹性,不会说明天需求一变,我的系统又要整个重写。如果说我的逻辑与分析归纳能力在这段时间都没有改变,那么能够使我写出更弹性系统、解决更多问题的,其实是系统设计的方法。所以方法论很重要,它其实是前人智慧的结晶。
每个领域都有自己的方法论,就是为了解决该领域的问题。当然也有一些方法是比较通用的,比如小时候学过的科学方法,上了研究所学的研究方法,或是各种思考框架、心智图等等,这些全部都是可以帮助我们解决问题、进行系统化思维的工具。为什么软体工程师普遍来说解决问题的能力比较好?除了他们的工作需要系统分析之外(有在使用),全世界的人都透过网际网路分享(软体工程)问题的解决方法。简单说他们的资源比其他领域的人多太多了。所以问题解决能力的公式一开始可以这样写:
问题解决能力=领域知识/资讯+系统化思维(逻辑推理+分析归纳+心智图/思考框架/方法论)
通常逻辑推理与分析归纳能力到某个程度就会遇到天花板了,这和个人资质与生活型态(是否有在使用)多少有点相关。所以我们能够不断学习/增进自己能力的地方,主要是领域知识/资讯与思考框架/方法论。我相信自己的逻辑推理与分析归纳能力在毕业之后就没有进步了,但我的问题解决能力理所当然越来越好,因为我一直在学习无尽的知识,方法论也不断在进步。
上面的公式看起来很完美,实际却缺少两样重要的东西。一个是想要解决问题的心,虽然是废话但很重要,毕竟不是每个人看到问题都会想解决它。有时候,问题甚至是需要被「发现」的,这也是科学研究与创意思考的第一课。所以我想解决的问题就是,到底问题解决能力是什么?第二个重要的东西是学习迁移能力(Transfer of learning)。当一个新的领域出现从来没有人做过时,肯定也不会有相关的方法论。这时候我们只能找一个比较相近的领域,参考它的方法实验看看,减少失败的机率,并且建立新领域的方法论。所以为什么近年来跨领域的人才很红,除了跨领域合作的需求越来越多之外,这些人才通常学习迁移能力也会比较好。基于上述两点,公式修改成:
问题解决能力=发现且愿意解决问题+领域知识/资讯+系统化思维(逻辑推理+分析归纳+心智图/思考框架/方法论)+学习迁移能力
公式一旦写出来,缺少什么就一目了然。下次遇到问题却百思不得其解的时候,就可以回头想想到底缺少了什么。也许有的人会问,为什么没有把上面的沟通列上去。只要解决的问题和人有关,就会需要沟通。它是非常重要的东西,但我认为它应该属于人际知识技术的范围,而不是独立的项目。毕竟有些问题不会牵扯到人啊。放进去的话,就变成有关系就没关系,没关系就有关系了呢。由此可见即使不是跨领域的合作,问题可能也不是单一领域的知识技术就能解决。在知识量不足的情况下,厘清问题需要那些领域知识本身也是个难题。全部的东西到最后能无限提升的只有知识技术而已,所以为什么现在要鼓励终生学习就是这个道理,世界不断会有新的问题出现需要被解决。
老实说这个公式看起来很普通,好像也没什么大道理,写完自己还觉得这也要花十年想(虽然没有很认真)?可是它确实解决了我的问题,让我能够解释一些观察到的现象。包括为什么有些人有能力做研发?为什么我投票的时候可以相信自己选择的候选人…等等。因为这些全部都属于问题解决的议题,所以都可以用这个公式来解释。当然这只是我个人心得,也许还有不完美的地方,等遇到无法解释的状况时,我就会知道了。
Published from moke.tw
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐