分解-解决复杂问题的办法

  很多人知道刻意练习是最好的学习方法,不断重复地学一项技能,直到学会为止。但是,如何重复地学习某种技能呢?

答案是:将要完成的动作分解为多个彼此独立的小动作,重复地练习每个小动作,做到将每个小动作的要领长进脑子里,然后,重复训练整个动作。这里,重要的是理解分解这种思想,这种思想是解决系统问题的利器。

  毕业快三年了,一直做软件开发的工作,一边工作一边读书学习。我发现,无论多么复杂的计算机系统,都可以分解为彼此独立的小系统,大的系统不需要考虑每个子系统是如何实现的,只需要给每个子系统划定一个功能边界,各个子系统由不同的项目组去实现,最后,由这些小系统组成很复杂的系统。这种方法,用计算机的行话说,是"模块化"。你会发现,原来一个那么复杂的系统竟然是由很多简单的子系统组成的,这种现象叫涌现。

  具体到每个小系统内部,又是通过分解将很多子系统的功能划分为很多子模块,而子模块又划分为很多具体的实现方法。通过这么层层分解,将一个超级工程分解为很多独立的小项目,小到单个程序员能解决的程序,这样一个项目组的多个程序可以同时开工干活,通过并行地实现项目的每个小部分,极大地提高了工作效率。

  这种运用分解,将任务模块化的方法,是解决系统问题的最佳策略。这种策略告诉我们,要解决一个问题,不要一开始就陷入细节,先从整体上把握问题,把问题分解为几大方面,各个击破。历届中国领导人都强调:“抓主要矛盾”。不懂的人觉得这是假大空,真实的情况是,领导人在认知上比你高很多,云泥之别。看过一个故事,两个非洲的酋长比赛说大数,A说:“1”,B说:“2”,A接着说:“3”,B说:“你赢了”,因为非洲原始人不知道比3大的数。认知这东西,你比别人低了一个层次,眼界就差了十万八千里。

  那么,如何才能合理分解问题呢?

  你得在一个领域里接触到足够多的案例!为什么强调一万小时定律,就是因为在刻意练习的一万小时中,你会接触大量鲜活的案例,这些案例是什么,你会有个比较深刻的认识,包括这些案例的基本属性,某些成熟的解决方案。过去,一直听前辈说,你要在一个行业持续做10年左右,才能成为行业的精英,他也说不明白为什么要这么做,只是说,大家过去成功的经验是这样的。

  问题来了:如何实现一个桂圆系统呢?

   如果你没见过桂圆,你是无法完成这个项目的,因为你得知道桂圆的基本属性。一个桂圆,包括最外层的壳,里边的肉,和肉包裹的种子。如果要实现桂圆系统,你需要分别实现3个子系统:壳系统、肉系统、种子系统,然后,将这3个字体组合成一个整体的桂圆系统。至于3个子系统是如何实现的,你不要考虑,你得先关注大系统的实现需要完成哪些小系统,小系统自有别人来实现。就像你的公司今年要上市,那么上市就是个大系统,为了完成这个系统,需要解决几个大问题,那这几个大问题就是小系统,做为老板你不能亲自去完成每个小系统,你最大的任务就是思考要解决哪几个问题才能上市,努力的方向决定了结局。

最后,“治大国如烹小鲜”,真不是在吹牛逼!

猜你喜欢

转载自blog.csdn.net/Wengzhengcun/article/details/88037799