在我们的日常工作过程中,经常会遇到很多复杂的问题,我们怎么能快速解决这些问题呢?这里我要介绍的个人经验就是“将复杂的问题简单化”。下面举个刚刚发生的小例子来说明这个方法。
最近在做公司ECP升级项目中引入了Portal中间件,因为大家都对这个Portal的使用很不熟悉,所以开发过程中遇到了很多问题。我这个例子就是解决其中的一个问题“如果配置PORTAL中的用户信息从LDAP中读取”,其实这件事就是发生在我写些文的前十分钟。下面说一下解决问题的过程。
第一步,阅读相关文档,按照文档中的说明进行配置。结果由于文档不是很详细,而公司使用的LDAP服务器是微软的Active Directory所以未能按照文档说明配置成功。
第二步,确定问题点,这个比较困难,因为不知道是因为配置的原因还是portal中间件本身对AD的支持不好。所以我们只能猜测是我们配置的不正确,虽然我们是完全按照文档进行的。
第三步,找出我们配置中我们哪里配的不对。这个更困难了,因为已经无资料可查,只能自己看源码了。
第四步,看了半天的源码无果,只能调试了。
说到调试,而且又是比较复杂的中间产品,可能大家想到的就是使用远程调试的方式了。可是这种方法只能查看一下运行时的变量状态,也不能插入自己的代码进行测试。而且这重启一次又是那几分钟过去了,解决这个问题可能要花很多的时间。
所以我想到了另一种方式,搭建了一个只针对问题点的测试环境。在eclipse里新建了一个项目,把我们前期配置的部分拷到项目中,写了单元测试程序。这个时间我只花了十分钟。运行了一下,发现确实不能从LDAP中正确读取出人员信息。因为对LDAP不是很熟只好请外援了,把咱大名顶顶的安工请过来。因为反问题点简化到了就加载两个类和启动一个单元测试。所以安工花了十几分钟就把问题搞定了。
故事描述完了,最后总结一下。在一个复杂的环境下调试,其实我们是很难很快发现问题的。同时环境的加载启动还要浪费很多时间。可是我们在确定或猜测出问题点的时候,把环境简化到,只剩下有可能出现的问题地方。可能我们很快就能解决它了。这就是我要说的“解决问题之道--将复杂的问题简单化”。有点啰嗦,很少写东西。以后还得锻炼。这个方法其实我已经用了很多年,说起来简单,希望你能在碰到问题的时候想起这个方法,并能真正的运用它。
最后感谢安工的全力帮助。这种全心帮助他人的精神,永远是我们学习的榜样。