强调代码规范。
还记得几年前,每次谈及软件规范,就是那些厚厚的代码规范文档,变量怎么命名,语句怎么写,括号怎么写。。。,同期有本很畅销的书《C++高质量变成指南》也被奉为经典。在同样追逐了一段时间后,发现这些规范并为对软件的质量起到根本的作用,反而在开发时被这些因素所耽误。类似这样的工作完全可以由Netbeans、Eclipse 之类的开发工具自动完成,如用得最多得代码刷japloy(开源项目)。显然,花如此多的时间去规范代码显得多余。
当然,必须承认,变量得命名对于阅读者,尤其对是非作者而言,就显得更重要一些。经过开源项目得洗礼,只要阅读过一两各开源项目得源码之后,就会有所体会。我的体会就是“对象同名命名法”,举例:
HttpRequest httpRequest;
HttpResponse httpResonpse;
这样命名很直观,不是吗?
强调人性化管理。
同样还是几年前,软件开发被认为是件高智商的工作,同时也享受特殊的待遇,如不按时上班,晚谁晚起等,这些都被称为宽松的人性化管理,经历了软件CMM的高潮后,又有人搞把软件开发的人称为“农民”。作为软件开发的一员,享受特殊待遇固然欢喜,被人贬低固然不爽,其实这些背后反映出来的是公众甚至是管理人员对软件开发过程的特性缺乏足够的认识。
经过了几年的思考,自己觉得软件开发和其他工业过程一样,本质上都是为了提高生产力,都是为了创造利润,所以软件开发应该是可以象其他工业一样是可以控制的,只是特性和管理手段有所不同。一味的强调人性化管理未必能保证软件质量,加快软件开发进度,提高利润。
我觉得软件开发,就是要按时工作,以前总是认为开发员属于另类人群,甚至这种风格被大肆吹捧和炒作。开发员也是人,也会老去,也需要健康,而且健康最重要。一个优秀的开发员总是能按能力定量,按时完成任务。
强调技术的先进性。
近年来技术更新加快,尤其是在开源项目的浪潮下,新技术总是作为一种证明能力的资本。在每次面试和别人谈及技术的时候,总是在技术的如何使用上争得不可开交,如Hibernate如何配置,Struts中得 link 标签怎么使用,action和form得配置怎么写,当时是据理力争,其实过后发现,这些东西在别人得manual或者documentation里都有十分详细的用法,难道争执了半天是考证谁的记忆力更好么,难道就是为了看谁看的文档更多么?
技术的根本目的是提高生产效率,创造利润。所以,只要能够加快开发速度,提高软件质量的技术就得采用,至于那些配置怎么写,语句怎么写 则是次要,可我不明白的是为什么每次讨论技术时都非要在这些细节上争论不休。
强调软件工程。
从公认的小作坊式开发发展到现在,软件工程的作用已经得到充分肯定,甚至还出现了软件工程硕士专业等,CMM,RUP,XP大量新词扑面而来,静下心来思考一下,没有写过程序的人能了解软件开发的特点和规律么?没有做过测试的能体会到测试的艰辛么?所以,过分强调了软件工程而忽视了符合自身特点的软件管理模式是不划算的,也就是说,采用了不适合自己的开发模式不能提高开发效率。因此,不同的组织,不同的规模,不同的素质的开发员,不同类型的开发,都应该在统一的框架下有符合自己特点的开发模式。