面对复杂的任务,请试着分解
在日常工作中免不了遇到复杂艰巨的任务,首先不能逃避和妥协,要有万事可破和做难事必有所得的心态。路虽远行则将至事虽难做则必成,只要耐心把该做的事情做好就一定可以完成任务。
给自己灌完鸡汤之后,需要一些方法论。任何任务,不管是简单还是复杂,都是由多个最小颗粒度的小任务组成。我们首先需要做的是根据这个复杂任务的终极目标和组成逻辑(我们开发一般是根据需求的业务目标和业务逻辑)拆分它,把这个大任务分解成小一点的任务,再分解成更小的任务,一直分解,分解到分无可分(最小粒度)。这样最终我们得到的是一堆小任务,而且是立马可以上手的简单任务,就像是堆积木里面的一个个积木。对应到面向对象,即每个小任务是高内聚,低耦合的,甚至是没有耦合的。尽量不要在小任务里面嵌套调用别的任务。如果存在调用,那这个任务是有副作用的,我们要尽量不要让最小粒度的任务有副作用。
但现在还不是时候去完成这些小任务,而是需要设计。这些小任务怎么组合在一起,哪个小任务和哪个小任务可以合并成一个大一点的任务(比如使用同一个数据库的可以放在一个事务里或者两个小任务有业务关联可以组成大一点的任务)。还比如有些需要使用分布式事务。这些需要我们的设计能力,规划出这些小任务的组合结构和调用顺序。
最后只需要实现那些小任务,并且按照设计的组合方式组合起来,就可以实现这个复杂艰巨的任务。
其实这个过程是我们根据需求文档写开发方案的过程,当我们面对一个复杂并且工作量大的需求时可以尝试先根据业务目标和业务逻辑去分解它,你会发现一切都会迎刃而解。