今天准备新增一个“切换码流”的功能,完成的过程大概是这样的;
1.搞清楚需求
我先将我要实现的功能都在纸上描述出来,主要是为了能够充分的理解到底自己需要一个什么样的功能;
在这里我知道,我需要能够右键选中设备,然后可以去切换主次码流;
另外,我需要能够双击打开或者关闭设备;
2.搞清楚现状
然后,就来思考,在现有的代码下面,要如何将这些功能加进去呢?
因此,我就必须要把可能完成该功能的相关的模块之间的关系搞清楚;这样我才知道怎么“下刀”,将代码放到最合适的地方;
3.开始动手
无论思考的再久,总是不一定能够彻底想明白的;因为事物是在发展的,但你做了一些事情之后,情况也变化了,这时候又会激发你更多的思考;所以你的想法也会随着发展而发展;因此,我就想想到一定程度之后,就先做起来;做着做着,一方面,会更加的清楚需要做成什么样子,另一方面,也会更加的清楚应该怎么去做这个事情;
针对这个任务的情况,有一个模块,具有太多的功能,因此这里摆着有2个方案去完成这个任务:
一个是先重构这个模块,将它变成合理的结构之后,再去新增我这个任务的功能;
另一个是先将功能合到现有的模块之内,然后如果觉得模块划分的不合理,再去重构这个模块;
最终我选择了第二个思路,有几个原因:
首先,项目还是很紧张的,第二个思路在功能实现上面会比较快的;
其次,从难易程度上面来说,第二个思路也会将容易实现,如果按照第一个思路去大改,不知道会改出什么问题来;
4.验证功能
将功能加进去之后,开始测试可以能影响到的相关功能;
这个任务在今天算是完成了一大半了;再总结一下:
1.今天的做事的流程
将问题分析清楚;
将现状分析清楚;
制定计划;
实施计划;
验证结果;
2.做事情的类型?
3.如何制定计划?
为了实现你的目标,或者达到某种目的,亦或者为了达到某种状态,而做出了一些有预见性的规划,或者具体的,细化的事情和任务;
也就是说,最终计划是以一件一件的事情或者任务来表达出来的;
那么对于计划,最重要的就是其合理性,能够尽量保证能够达到最终的目标;
这样就能够回答如何来做计划了,将所要做的事情,尽量保证它的合理性;
那么如何能够保证其合理性?
这就取决于你对事物的理解程度了,你对事物认识的越深刻,认识到越多的规律性,就越有可能制定出有效的,合理的计划;
总结一下:
认清楚你的目标;
尽量认清楚和你目标有关的一切;
将能够想到要做的事情,尽量说清楚;如果能够说清楚为什么要这样分就更好了;
4.如何做出决策?
什么情况下面需要做出决策呢?一般是针对某个问题,或者某种情况,有多种解决方案,只能选择某一种方案;
原则上,做出选择的依据是,该选择能够最有可能促进问题的解决;
因此,难点就在于如何判断出,那种选择最会促进问题的解决,事物的发展;
所以,你应该:
尽量的认清楚现状;
搞清楚你做这些选择可能带来的后果;
对于,你对事物认识的越深刻,你就越有可能做出正确的选择;
5.奇怪的现象
无论是作计划,还是做决策也好,还是我今天的任务也好,似乎都回到了相同的流程上面:
1.认清楚你任务,目标,计划;
2.分析你的现状;
3.制定你的计划;
4.实施你的计划;
5.验证你的结果;
分析,无论是解决问题,做计划,做决策,都是在完成一件事情;
那什么叫做事情呢,“三全之后”里说,本身不存在的而因为人的存在而存在的以时间概念来描述的一切就是事;
因此,解决问题也好,计划,决策也好其实都是事;
既然都是事,那么要做好一件事,从最抽象来说,有相同的流程就不奇怪了;
于是,流程就变成:
1.认清楚这件事情;
2.分析与这件事情有关的一切的一切;
3.制定做好这件事情的计划;
4.实施计划;
5.验证这件事情的结果;