一些有编程经验的老程序员一直在怀疑:软件到底是否可以重用?他们认为实现重用会将软件搞的复杂,走向另外一个极端,反而过犹不及,所以认为软件“够用”就可以,这种原始朴素思想曾经在程序员网站大行其道。
我觉得这种“够用”的思想“误导”了大批初学者,导致整个软件系统的质量下降,这是对自己要求的降低换来了项目的快速进度,目前中国软件业在风雨中飘摇与这种思想不无关系。
正因为有了“够用”的思想,他们质疑Java的复杂性,质疑多层结构,质疑框架,质疑面向接口的编程方式,质疑AOP等新的技术思想,他们认为这些是“自找麻烦”。
很多人认为,为了追求灵活性,将简单系统搞得复杂化是没有必要的,他们认为灵活性和简单性是矛盾的,其实他们只看到了问题的一个方面。
正好相反,灵活性和简单性是不矛盾的,认为矛盾的人是因为他们还没有抓住问题的本质,问题本质抓住,就非常简单,也就具备相当的灵活性,正所谓大道至简。
做软件我觉得千万不能有“够用”的思想,而是要有“变化”的思想,经常问自己,我这样做的前提限制条件是什么,如果需求变化了,正好击中我这样做的前提限制条件怎么办。
程序员一定要有“计划没有变化快”的思想,树立需求第一,没有不变的需求的思想,我认为这是作为一个程序员的基本素质,如果我招聘程序员,我不会出试卷考他有多少技能,这些以后都可以学会,我会考他的做程序的思想,这真是世界观的问题,世界观错误,基本方向就不对,再高技能也是空的。
所以,从这个角度来看,现在软件技术为什么强调复用,为什么要有框架?为什么要面向接口?这些好像是“自找麻烦”?
这些“自找麻烦”概念的推出正是帮助程序员应付不断变化的需求。
因为需求变化快,程序员不可能来一个需求就重新建一个系统或程序,如果我们试图在这些程序找出不变的东西,固化抽象成框架之类东西,那么需求变化时,我们只要在这个框架下根据具体变化的新需求开发少量的新的程序就可以了。这不是减轻程序员工作量?
换言之,这些看似复杂的概念能帮助程序员更快跟随需求变化,这才是软件程序员的本分啊。
上述道理我已经说了很多,也有人反驳过,不过我现在的实践确实是这么做的,如我的JdonSD框架已经在OA、电子商务等系统不断反复重用,提高了开发效率,同时也提高了系统质量,这才是真正地快速地提高了项目的进度。
建议初学者多多学习有关可复用软件技术以及重整Refactoring、模式和框架等理论,将自己武装得更加强大,提高自己的专业素质,使自己更加专业化。
让那些对软件复用的的怀疑者、“够用”的实用主义者随着大江东流去吧!