天天跟代码、软件打交道,有的时候,觉得这个不好,那么不行,所以偶尔也会蹦个自己想法出来,并且想着方案、设计什么的,试着把这个想法实现——简单来说,就是想自己写段代码、写个软件。
我也有过想法,有些也试着去实现过。有点感触,我觉得其中最重要的一条就是“速战速决”。
一般,有个想法,都会很兴奋的——因为自己会觉得新颖,觉得创新。然后,在细想过程中,会发现一些问题。经过这些问题的锤炼,走出来了,那么就会试着去写了。
一写,就会发现许多的问题——这个是很正常的(至少对一般人来说是的)。做的过程中,肯定会碰到许多没想到的问题——考虑不周、不全,不完善。这个时候,就是成败的关键时刻:你是想,设计,把这个地方搞完美了?还是继续往下走,先简单实现、或者把这个功能点留着先,后面再说——即速战速决。
我是个追求完美的人,所以我选的是第一种——努力将这个问题解决、完善、完美。但是,这样有两个问题:1、后续肯定还会碰上许多问题,那么都会这样解决;2、在解决问题的时候,再碰上问题呢?就是说,这样下去,何时是个头?时间无限拉长,而且在解决问题过程中,如果有些问题解决不了,或者用很糟的方案解决的时候,将会很不舒服,士气严重受挫。最终结果就是导致这个小软件不了了之(我就是这样的,所以才会这么提)。
比如,有次我写个小软件的时候,老是内存的申请、释放,感觉很浪费,觉得需要写个内存池。我看过相关的代码(STL的,以前项目代码中也有类似功能),所以才会有这样的想法。但是,经过了解、学习,设计(或者说‘模仿’设计),写。在实现的时候,又会碰上各种各样的问题,又要解决。如果解决不了,还会士气受挫。
而方案2,速战速决,当然也有不好的地方:比如一般出来的东西会很烂,离自己的要求想去甚远;而且后期可能写完之后就不管了,放着也是不了了之。
但是,最大的好处是:方案、想法至少已经完成了,至少是个完整的过程。其次,在过程中,对这个软件、代码在宏观上有了个认识,解决问题、给方案就可以从宏观上进行了——这样子的方案会更合理。
附言:还有一个小建议,就是要做好记录,即文档。主要是在想的过程中的想法、设计记录——这个我觉得对设计很有用。