两条路
新开发一个系统,和维护一个比较大的老系统,那个比较舒服?
不工作就拿钱是最舒服的,我不讲这个不现实的;在一个老系统上做二次开发,常常更痛苦,所以常见一些人推翻重来。
推翻重来的理由是,所花时间更少;但这些人从来都不考虑风险,如果你理解错老的业务流程,带来的可能是新的大问题。
推翻重来,体现出一个程序员的重构水平,他没法控制别人的代码了,也可能体现这个人跟人交流问题。
我常常反对推翻重来,除非万不得已,因为凡事都有例外。
所以,当往一个比较大的老系统,添加一些新功能时,出现两条路,出现两类程序员。
那么,如果堵住推翻重来这条路,逼迫我们面对老系统,情况又怎么样?
5年以上的系统,多多少少总形成基本工具库和业务工具库,如果公司不逼迫新来同事去学习去使用的话,又形成两条路。
一类人是只管写自己的新代码,要一个工具类或函数,书上或系统api(如c标准库\stl\boost\ java jdk等等)不能满足他的话,他就要重新造轮子了,他绝对不看已有代码里是否已经实现或类似实现。他对comm\util\commutil等等从名字都可以看出的目录或包,视而不见。
另一类人,他们很勤奋,常常看看周围是否有可利用的资源,能利用则利用,他们去读周围的代码,了解已有业务流程,一年半载后,对系统越来越熟悉。
一年半载后,谁速度快,谁更轻松,谁理解业务更深刻,谁重构更快更好?
结果不言自明。
有因必有果,有果必有因。