开发过程中的瞻前顾后

开发过程中的瞻前顾后

因为最近一两年转行做研发。从底层往上爬的过程还是比较累的,遇到了很多糟心事。具体的内容我就不说了,我对以上的不爽的行为做一些总结。如果真的能看懂,说明你已经理解了这个概念。我估计看不懂的人也不能点开这个博客来看。

这个概念的核心叫做——瞻前顾后

大部分初学者什么样

初学者由于视野有限,看的东西不够远,只顾着眼前,就着眼着眼前的地方。

碰到问题的时候,改掉了眼前的问题,殊不知引起问题的原因在其他的位置。

也不知道修改了之后,会不会对其他的部分有影响。

它们做事的时候,从来不会想对周围产生什么样的影响。这种无所顾忌的开发态度,基本等同于小孩子玩耍。

而我目前身边的人,他们在开发过程中,体现的态度就是,无所畏惧,哪错改哪。这种行为看起来是非常准确真实,实际上是缺乏思考的。

如果不解决根本原因,总会出现类似的问题。这种解决的思路,他们是没有的。就像小孩子玩玩具,玩完了,走了。没有后续。

在做设计的时候也是一样。这种人拿到原型的时候,总会做出所见即所得的设计(表设计和prd一样),然而现实情况是,只有极少数可以这么干,多数时候需要对数据进行一些抽象的修改。

与此类似的还有改bug情况。有时候我跟同事说,xxx位置有bug,他先怼过来一句,我没动那地方啊,balabala上来先推责任然后在找借口把问题转移到其他人身上。接下来再承认自己的问题。

为什么会这样

产生这个问题的原因,并不好分析。在我个人的学习历程中,代码量并不多的时候,就已经没有相关的问题。

把这些问题归结于任何的原因都不准确。懒惰?浅薄?没有大局观?无论哪个原因都不可能简单的解释。

无论如何解释吧,他们这种行为是存在的。不管是从有更差的习惯到一般的习惯,还是一直保持这样的习惯。

没有改变这样的行为也可能是有原因的。

也有可能是这个人根本特性就是这样,做任何事都这样。

可以简单的理解为这些人没有名师来教,或者是没有改变自己的欲望。当然从另一个角度来说,也可以理解成无药可救。(很多人误会的一点是:改变总是外部的,但实际上只有自己才是自己的解药)

我是怎么做的

具体的执行方法,我真的没有。但是我可以说下我的思考方式和态度。

一个任务,应该设计成什么样子,做什么样的抽象,拆成什么对象什么函数,之间有何关系。具体拆啥,复用哪部分。在最开始接触的时候,我是不懂的,那我就只能去找别人说的看,一种是方法论的书,另一种是现成的东西。按照这个思路看了一部分,也有学到。

再一点就是个人的做事习惯。有明确的完成的概念。一个完整的流程,从买菜,做饭,吃饭,到洗碗收起来。这种行为被我视为一种完整的流程,就像去厕所,脱裤子,排泄,再擦干净,冲马桶。这些事情,对我来说是一个完整的循环。

我在我短暂的学习过程中,由于我个人的不解与求知的态度和个人的性格,不停的找自己想看的东西观察学习。最终算是习得了这种瞻前顾后的能力。

然而问题还有

在编程这边,问题并不总是像理论那么显然,由于某些错误导致的后果也不是很显然。(写到这,想起来知乎@ in tek说的某些事情确实是对的。)

最简单来说,你给出了一个对象,这个对象,怎么出现,怎么用,怎么转变,怎么消失。一个生命的生与死。对完整的这个对象的考量。

一份数据,从哪里来,存成什么样,怎么取。一个接口的数据,从哪里取,人进行什么样的处理,然后再如何入库。

这种细节的意识,没有足够开发经验的人是无法建立起来的。

总结

当然我也不是在过分强调这种东西,而且现实中的问题总是交织在一起的,并不好单独的拆开分析。在碰到事情之后,再归纳错误的原因并不是恰当的做法。

类似还有能力,就像瞻前顾后这种能力,是总体能力提升后,才会写得的一种能力。并不是说有直接的办法能提高这一点。读过经典书籍之后,除了瞻前顾后,还会掌握很多其他能力。一种全面的提升。

实际开发做选择的时候,还会伴随着很现实的抉择,比方说,工期不够。产品不确定,改改改。各方人提出的合理与不合理的要求。

不过坦诚讲,我这个思想的来源,仅仅是室友做完饭,不擦灶台罢了。