意识是一个思考问题的方式,缺乏意识就比较容易出现问题,增强意识能够有效避免掉进对应的坑中,通过知识迁移的方式阐述质量意识,锻炼一下自己知识迁移能力。
软件熵
热力学定理说,封闭系统中的熵(混乱无序),在没有外力的作用下,只会随着时间的增加保持不变或者增加。迁移到其他领域内,事物没有外力(维修)作用下,都会变老变旧。
此思想运用到计算机软件,同样遵循熵的原理。软件在发展过程中,更新添加新功能不可避免,这些会增加软件的复杂性(熵),这样软件也会随着时间的推移变坏。在此过程中,我们会采用很多实践活动比如:代码评审、架构重构、单元测试、持续集成等等,最终都是为了降低软件的复杂性(熵)。有经验的工程师会有比较深刻的体会,维护一个高熵软件比较痛苦,如果不进行降低软件的熵,随意让其发展,最终会复杂和脆弱到谁都不愿意或者不敢碰的程度,最终导致系统被废弃。
破窗效应
环境中的不良现象如果被放任存在,会诱使人们仿效,甚至变本加厉。一幢有少许破窗的建筑为例,如果那些窗不被修理好,可能将会有破坏者破坏更多的窗户。最终他们甚至会闯入建筑内,如果发现无人居住,也许就在那里定居或者纵火。一面墙,如果出现一些涂鸦没有被清洗掉,很快的,墙上就布满了乱七八糟、不堪入目的东西;一条人行道有些许纸屑,不久后就会有更多垃圾,最终人们会视若理所当然地将垃圾顺手丢弃在地上。这个现象,就是犯罪心理学中的破窗效应。
软件设计中也存在类似的现象,当我们面对设计良好,干净整洁的代码的时候,即使在工期与业务压力大的时候我们也不愿意破坏代码整洁性,设想同事的代码都遵守规范、注释良好,如果你做不好,必然遭到同事的鄙视。相反如果我们面对的是糟糕的设计、逻辑晦涩难懂、并且代码不按照规范来,比较容易产生破罐子破摔的心理,很快整个系统的代码就会变得越来越糟糕,软件的熵愈来愈高。
为了保持代码质量可持续,我们不能容忍破窗效应在软件开发过程中发生,还要勇于修复第一扇窗的勇气与魄力。
技术债
出自于沃德·坎宁安之口,他首次将技术的复杂比作为负债,简称技术负债(技术债)。软件开发本来就是一项很复杂的工程,所以很多人都软件开发当作软件工程看待。开发出来的软件是用来服务于各个领域(金融,医疗,购物等),我们程序员不一定能完全了解某个领域(术业有专攻),所以就没法很好的把控这个领域的软件架构,必然就会产生技术负债。技术债是无法避免的,只是产生技术债或多或少的问题。
技术债可以分为三类:文档负债(包括需求分析负债、开发文档负债、测试文档负债);代码负债(架构负债、编码负债、业务负债);管理负债(工期负债、人员负债、协同负债、成本负债)。技术债是躲不掉的,不还技术债的代价更高。
总之,软件熵不可避免,需要建立软件熵意识,做好架构设计、评审、单元测试、CR、持续集成等手段降低软件熵;在软件开发过程中不要制造破窗效应,也不要容忍破窗效应;建立技术债意识,迭代开发过程中要预留时间偿还技术债,不让技术债随意膨胀。
网友评论