不要害怕搞砸什么
每个有产业经验的人都肯定在代码库最好情况下也不稳定的项目里面工作过。这个系统构建的很差,改一处东西总是意味着会弄坏另一个不相关的功能。每当增加一个模块,编码者的目标就是做尽可能少的修改,而且每次发布时都要屏住呼吸。这个软件就同在一个摩天大楼中用工字钢玩堆积木一样,只会通向灾难。
做一个改变会让人如此神经紧张是因为系统有毛病了。它需要一个医生,否则状态只会更差。你已经知道系统出了什么问题,但是你要做煎蛋又怕打碎鸡蛋。有经验外科医生知道做手术时必须切除一些东西,也知道切除的只是暂时的而且可以恢复。手术的最终结果是值得最初的痛苦的,病人能够恢复到一个比手术前更好的状态。
不要害怕你的代码。谁会在乎你在移动时有东西暂时性地坏了?害怕改变在最初就让你的项目变成了这种状态。你的团队解决这个病态的系统的问题的经验可以让你精通它的工作原理,这是一个额外的收获。应用这些知识而不是对其感到怨恨。在一个你痛恨的系统中工作,不是任何人应该消的磨时光的方式。
重新定义接口,重新架构模块,重构复制粘贴的代码,减少依赖以简化设计。通过消除通常由不正确的特性耦合导致的边界条件,可以大大减少代码复杂度。慢慢从旧的架构转移到新的并一路测试。尝试一下子猛地完成一个巨大的重构会导致很多的问题,以致于你会考虑中途放弃。
作一位手术师,不害怕切除病态的部分的来为恢复腾出空间。这种态度会传染并激励其他人来开始做这些他们以前延后了的项目清理工作。保持一个团队认为值得项目长远利益的“保健的”任务清单,说服管理层即使这些任务没有产生可见的结果,也会降低成本并促进将来的发步。永远要注意代码的总体“健康”。