软件开发所面对的困境有很大部分是源于代码开发的复杂度,而不仅仅是业务的复杂度,(当然业务的复杂性必然导致软件复杂,这无法规避),设想一个简单的用户管理功能,需要工程师以不同的编程语言编写多个程序文件,包含java,js,css,xml,jsp,sql,html等等,需要开发工程师考虑掌控多种信息,包括数据流、页面流、调用关系、依赖关系、数据验证等等,再加上使用各种框架的配置、调试、注释、文档解释,一个简单程序我们需要多少程序文件,一套系统呢?
软件本质上只不过是数据处理和数据展现的交替出现而已,但想想看,我们花在这核心需求上的工作量到底有多少呢?又有多少时间被我们用在了为开发而开发上?
其实提升效率的最简单的方法就是让工程师工作量只用在实现核心业务逻辑功能上,而尽量少去编写一堆有一堆的边缘代码;如何做到?把一切非核心的东西都准备好,然后尽量做到0代价的复用;
我们现在基于平台的软件开发已经能够做到无需编写代码,进行高度复用;系统开发,无需编写java代码,也无需设计jsp页面,所有展现和逻辑都通过复用实现;有兴趣可以看看我们开发的系统(上面帖子有系统地址);访问另一个端口http://211.152.42.214:8844可以看看我们基于平台开发的一套简单的内部使用的客户关系管理系统;这两套系统差别很大,但都是基于平台构造,没有java代码,都基于复用实现;有兴趣可以看看页面的源代码,分析分析页面链接;
我对各种框架不感兴趣,有一个很大的原因就是感觉框架固然带来更好的灵活性,但也为开发本身增加了复杂度;
不是说框架不好,但总感觉框架让软件复杂,也许是做平台太久,对一切让软件开发复杂的东西都很敏感;
banq其实说的很对,对于技术的进步肯定带来效率的提升并让我们离银弹更近没有异议;但对非技术性的因素对软件开发的影响上和banq存在差异,我始终认为,管理方法、工程学方法、甚至一些简单的软件开发规则都有可能对软件开发的效率产生很大的影响,特别是在面对一些不熟悉的领域的时候;好的管理模式、一个优秀的经验丰富的项目经理,即使采用较为原始的技术,也往往能够开发出高效的高质量的软件产品;当然,如果采用更好的技术,产品应该能够做得更好;
但我对是否有种技术能够带来革命不是非常乐观;就像我们多年的努力,其实不是在技术上的前进(当然不意味着我们的技术不好,呵呵),而是对软件开发模式和经验的理解,对软件工程学上的分析,外加一些持之以恒的决心;