一.您是否有这样的情况?
您的代码要上线的时候,需求突然变了;
您大面积地修改代码知识因为设计糟糕,无法适应新的需求变化;
您辛辛苦苦做出来的东西和要求不符,只能重头再来;
您只因估错了工作量,含着泪也要加班搞定
二.为什么会这样?
软件行业里有一本名著叫《人月神话》,其中提到两个非常重要的概念:本质复杂度和偶然复杂度。本质复杂度就是解决一个问题时,无论怎么做都必须要做的事,而偶然复杂度是因为选用的做事方法不当,而导致要多做的事。换句话说,只要选择了正确的做事方法,减少偶然复杂度带来的工作量,软件开发是可以有条不紊进行的。
三.那么遇到问题时如何去梳理自己真正要做的事情呢?
接下来我就给大家分享三个原则 1.以始为终 2.任务分解 3.沟通反馈
1.以始为终
以终为始,就是在做事之前,先想想结果是什么样子的。
比如做一个产品,我们考虑的是别人会怎么用我们的平台,我们的设计方式是用户到我们的网站,阅读相关文档,然后参考文档一步一步照着做。所以,我们决定从写文档开始,完成第一个“Hello World”级别的应用。写好这个文档后,我们已经有了这个平台的初步认识,更重要的是,我们可以拿着这个文档,去和外部的人讨论,人类是一个擅长脑补的群体,进而给出各种各样的反馈,正是这些真实的反馈,让我们逐渐地锁定了目标,之后才开始写代码。
人们习惯采用顺序思考的思维方式,几十万年的进化将这种思考模式刻在了我们的基因里。要成为更好的自己,我们要克服自身的不足,那就是“以终为始”,做事倒着想,先考虑结果。
2.任务分解
动手做一个工作之前,请先对它进行任务分解。当我们将原本毫无头绪的问题分解,分成若干个可以尝试回答的问题,当我们面对一个大问题时候,我们很难给出答案,但回答小问题却是我们擅长的。为什么说回答小问题却是我们擅长的呢?因为一个大问题分解后的小问题,我们需要关注的内容是有限的,我们就可以针对这个任务,把方方面面的细节想得更加清晰。
3.沟通反馈
我们可以利用可视化让沟通变得更加容易、直观。在远古时代,人脑处理的内容大多是图像,比如,哪里有新的果实,哪里猛兽出没,文字是很久之后才产生的。 就人脑的进化而言,处理的速度远远快于处理文字,所以,有“一图胜千言”的说法。思维导图、UML(统一建模语言),如果使用得当,这种方式会极大地提高表达的准确性,降低其他人理解的门槛。在日常工作中,多尝试可视化的方式进行沟通哦。
四.总结
当我们学会了站在以始为终的角度,我们会去了解真正的目标是什么。当我们有了任务分解的视角,我们会懂得整体解决方案是远远不够的,我们会把任务分解成一个个小的部分,所以会关心一个个具体的使用场景。当我们学会了沟通反馈,我们会不断地问问题,确保自己的理解和产品经理交代的内容一致。