很多同学在职业生涯的初期,都是负责一些小型或者中型的任务,并且都是由领导制定好任务,你只需要按照指示完成任务即可。
但是随着经验、能力的不断提升,逐渐地开始独立负责一些大型项目。
众所周知大型项目的难度和复杂度是小型项目无法比拟的,因此,大型项目总是给人无法完成的感觉,会给人心里上造成沉重的负担,因为任务越大,越无法明确知道具体要做什么,从而让你感觉到无从下手。
面对大问题时,我们倾向于花更多的时间思考问题本身,而不是采取行动去解决问题。人类倾向于选择阻力最小的路径。 当面对一项大任务的时候,刷刷抖音、朋友圈看起来就是更容易的路径,于是拖延随之而来。
那么,我们如何去克服这种心理负担,保证任务的顺利完成呢?
答案就是:任务分解。
要吃掉一头大象,每次吃一口。——克雷顿·艾布拉姆斯(Creighton Abrams)
一、如何分解任务
如果我被分配了一项大任务,我要做的第一件事情就是弄清楚我能否将它分解为一连串的小任务。
其实任务分解并不难,只需要注意两点:
第一,确保每个小任务都有一个明确的目标 。即,这一步,我主要解决什么问题。
第二,能够估算出完成的时间 。如果你分解出来的小任务,依然无法确定需要多长时间完成,那么,说明你还得继续分解。
举个例子,比如我想做一个客户端持续集成系统,完成代码打包任务:
Task1:完成从命令行构建和编译程序;
Task2:完成让构建服务器检出代码;
Task3:将两者结合起来。
二、分解问题
分解任务的方法,同样适用于我们平时写代码和解决问题。
许多人会觉得想实现一个大的功能很难,或者解决某个问题很难,原因在于他们总是试图一次性解决太大的问题。
不管编程问题有多难,它总是可以被分解为更小的单元。
比如,我想实现一个高难度的算法,在开始正式编码之前,可以先把这个问题分解为能够依次独立解决的小模块会更有帮助。
无论应用程序多么庞大、多么复杂,它都可以被分解成一行行的代码。
单独一行代码的复杂度,绝对不会超过任何一位程序员的理解能力和编码水平,所以,如果你愿意将问题分解得足够小,只凭借写出单行代码的能力你就能写好任何应用程序。
参考文章:
《软技能:代码之外的生存指南》