狗舍、村屋、楼房

来源:互联网 发布:千方百计软件官网 编辑:程序博客网 时间:2024/06/08 16:11

        
        今天与朋友讨论代码大全,想起一个2010年提交的项目报告。自我感觉是一个不错的应用实践,故摘录出来分享。
       
        背景:以前参与的一个4人的小型软件项目(近8w行代码),采用自然的手工作坊式开发,生存了下来。公司按照这种方式,逐渐新增人手到13、4个(以应届生为主),开发一个中型项目(估计40w行代码)。期间遇到进度、功能、集成、稳定性等方面,引起的软件危机。于是整理了项目对比研究报告,向领导提出初步规范化研发的解决方案。其中对问题原因的“软件复杂度和资源”方面,说明如下。
       
        X.2 软件复杂度和资源
        误解:软件复杂度增加,将模块拆分得更多,通过延长工作时间、或增加人力的方式,能够保证功能、进度和质量。
        事实:软件复杂度增加,不能简单等价于工作量增加。简单地增加开发人员或延长时间,可能导致更低的工作效率和软件质量。
       
        下面是一个复杂度和资源的简单对比。修建狗舍、2层村屋、20层楼房。
        修建狗舍:我们可以1人1天,使用斧头、锯子、铁丝、钉子、木板、竹子、塑料布等工具材料,完成狗舍,1小时改变狗舍的开门朝向,10分钟毁掉它。
        修建2层村屋:开始砌墙前,我们需要先对承重墙打1.5米的石头地基,大概分布门窗位置。修建时需要1个包工头(通常是某个资深砖工)、2~3个砖工、4~5个杂工,修建中使用垂椎来确认墙的垂直度;每层封顶前需要钢筋工(通常某个砖工兼职)加工屋顶的钢筋,封顶中使用很多木头棒子支撑房顶,直到稳固;后期需要装修工(有的还是砖工兼职)安装门窗、平整地面、安装电线电灯及简单装修房间内部。大概7~8人2~3个月可以初步完工。一般用于自住,出现质量问题只能自己解决,质量问题不外乎房顶漏水、墙体开裂、透气性差、风水不好等等(墙体开裂问题,我在我们家乡的二层村屋中还没有发现过)。
        修建20层楼房:我没有经历过,无法准确描述人员结构、人员数量、任务分工、进度、使用工具、材料等等,但与修建2层村屋肯定大不一样。常见的情况是,在我们家乡的包工头、砖工,来到深圳、广州打工,在他人领导下干活,大部分人很多时候并不理解工作内容、作用和重要性,多数时候惊诧于工具的先进,感叹道人力的悲贱,教育下一代好好学习。楼房一般出租或出售,还需要配备物业管理公司,随时维护业主测试出的bug和提出的需求(墙裂、漏水、停水、电梯停运、下水道堵、停车位等等问题,我们耳濡目染)。
        N项目与A项目相比,就是20层楼房和2层村屋的对比,而我们现在的开发方式,就如同修建2层村屋。应届生如果能完成狗舍的修建,就算能力不错;但如果他修建了一个二层村屋高的狗舍,那就很危险了。
       
        参考资料:
        1. 《代码大全》,2.3常见的软件隐喻。