从建筑行业的管理而想到的建筑行业是一个典型的传统行业,相对其他行业来说,建筑产品的有单件性、生产周期比较长等特点,一个建筑产品的建设周期一般包括项目建议书及批准立项、可行性分析、初步设计、详细设计、施工阶段、竣工移交几个阶段;尽管软件产品与建筑产品分属不同行业,但是软件产品开发的过程与建筑产品的建设过程却有着诸多相似之处(尤其是项目化开发更是如此);建筑行业属于传统行业,已经形成了较为完善的生产管理体系;软件行业属于新兴的行业,在生产管理体系上,尚处于发展和完善阶段;本文想通过讲述一些建筑行业的组织和管理措施,看是否能够给我们软件开发带来一下借鉴。由于篇幅所限,本文仅从以下几个方面阐述:一、产品的组织和管理方式在建筑行业,项目的组织生产采用项目管理的方式来组织和管理,这是由于建筑产品唯一性、生产周期长、复杂度高,需要参与的工程设计、施工总承包、施工分包、工程监理等各方进行密切协作、共同完成;对于新的软件产品来讲,往往也具有项目的特征,但是在软件进行内部组织管理时,有的公司采用项目管理的方式,有的公司不采用项目管理方式;采用项目管理的优势是什么呢?产品开发失败的原因各种各样,例如没有充分注意“商业论证”的有效性(为什么要进行该项目),不重视质量,计划不足,与利益各方缺少沟通,时间与成本通算不正确,缺少监督和控制,职责不明确等等。在新产品的开发中,我们可能面临很多的未知领域,采用项目管理的方式,可以更好地在产品目标、资源配置、成本之间进行动态管理,从而实现最大的经济效益。二、客户的参与度在软件行业,经常能够听到一个数据是失败率达到两位数,这么高的失败率在建设领域是不存在的。前几天听周培坤顾问讲座,提到SAP以用户为中心的产品开发过程,其实在建设领域,一直都是这样运作的。首先在工程项目的组织上,建设方(甲方)是整个项目管理的核心,不管在项目任何阶段,各参与方都是围绕甲方工程项目管理服务的,如下图:在建设项目的设计、施工、采购、到竣工的各个阶段,甲方与设计方、总包方、供应方、咨询方之间一直都保持密切的协作,比较专业的甲方甚至是亲自参与日常工作,比如在设计方的初步设计完成后,甲方要审批方案看是否满足原定目标,比如产能指标、投资回报指标,否则则需要改变初步设计方案,在特殊条件下甚至中止项目;而软件产品的整个开发过程中,只有调研、概要需求阶段有客户参与,设计、开发以及测试阶段,客户很少能够参与,给产品的开发带来很多风险;大家都知道,客户需求很难仅通过调研就能完全挖掘出来的,特殊情况下,客户在操作产品后才能提出真正的需求;如果到产品测试验证时客户才能参与进来,他们经常会提出一些需求变更,而对于我们产品开发来讲,此时再改的话付出的代价就太大了。三、专业分工与协作由于建筑产品的复杂性,为了保证项目的成功,通常将其建设过程分为建议书及批准立项、可行性分析、初步设计、详细设计、施工阶段、竣工移交几个阶段;阶段与阶段之间存在衔接关系,如果在项目在前期的某个阶段出现重大问题或者发现项目不可行,能够最大程度降低损失。在建设过程的每个阶段,一般都分别由专业组织或者机构来完成。比如:可行性分析阶段:由专业的咨询公司提供对项目的预测与可行性分析服务,另外咨询服务机构还分为汽车行业、房地产行业等各种专业咨询结构,以便提供专业的服务;在设计阶段:由设计院提供咨询和专业服务,其中设计工作还细分为各种专业,比如总图设计、建筑、结构、电气、给排水、空调等;施工建造阶段:由专门的施工企业来完成,其中施工企业分为十几个行业的专业施工资质,比如水利建设、冶金矿山、民用建筑等。因此在项目建设过程中,项目的组织是开放的和动态的,它根据项目的需要,随时调动组织内外的最佳资源,在项目管理的统一指导下,高质量的完成复杂的工程项目。例如鸟巢(国家体育场)项目就集合了自国内外几千家厂商;没有分工,就很难提供最专业服务,没有协作,也无法最终生产出高质量的产品;正是建筑行业的这种专业分工、项目管理的协作,才能够建设出各种各样的、满足人类各种需要的建筑产品。国内软件行业在专业的分工方面还是比较粗的,软件的开发大部分都在在一个企业或者组织内部完成。是不是软件开发业务比较简单,不需要集合外部资源呢?大家都知道,管理软件涉及到两个领域,一个是管理业务,一个是软件技术;管理业务博大精深,有其内在的规律,如果没有经过这个领域的长期研究,很难把握管理问题的本质,就像一个医生,如果不熟悉病理,则很难找到病因一样;如果没有掌握问题的本质,也很难找到正确的解决方案。企业管理软件的发展趋势表明,软件行业正向着纵深化和专业化发展。产品开发的组织方面是否需要更加开放呢!四、专业的咨询服务对于建设项目的投资方来讲,大多数情况下,他们不清楚工程项目的建设过程,比如对于汽车厂甲方来讲,他们只是精通汽车营销、销售、生产供应,但是并不精通工厂布局以及厂房和配套设施,对于房地产公司来讲,他们也并不清楚采用什么样的建筑风格、布局,乃至具体的户型和门窗尺寸,他们只是准备投资而已;如何将一个投资方得投资意向一步步落实到具体的建筑图纸,已经在建设行业已经形成成熟的服务模式;当客户有了投资意向或者定位以后,就会通过招标或者其他方式,寻找专业的机构提供咨询服务——在国内通常是设计院,前文已经提到设计院分为各种专业设计院,如果投资方要建设一个汽车生产厂,通常会寻找工业设计院,如果投资方是房地产公司,通常会寻找民用建筑设计院。从客户的简单需求到施工详细图纸,是一个高端服务过程(也是一个项目管理过程),设计师们利用专业的知识和经验,从客户的简单需求出发,以客户的利益最大化为原则,通过一系列的咨询服务,最终将客户的简单需求转换为专业施工详细图纸;在整个设计服务过程中,设计院通常方会设一名主设计师来负责整个设计工作,工业项目通常是由工艺设计师为总设计师,民用项目通常由建筑师为总设计师;然后再配备各专业的设计师,比如结构、电气、给排水专业设计师;以房地产项目为例,建筑师的主要职责是理解客户需求,或者引导客户需求,最终确定项目总体设计方案,在与客户沟通时,他们通过效果图或者沙盘模型来展示项目的整体风格、建筑类型、布局、户型、内外环境和配套设施,以此来让客户理解设计方案并与客户达成一致;大家对效果图或者沙盘模型应该不陌生,买房子的时候经常能看到;当设计方案确定以后,建筑师会绘制专业的建筑施工图,交由结构设计师、电气设计师、给排水设计师、环境装饰设计师形成具体的专业详图;由于篇幅所限,这里只做简单介绍,在整个项目建设过程中,设计阶段是最重要的工作,这个节点的工作成果对项目的成败有着决定性作用;总结起来有三点需要注意:1)客户只有简单的需求或者设想,并不具备专业知识,所以需要专业引导2)与理解与引导客户的过程中,要采用能够让客户理解的沟通方式或者工具3)需求和设计工作很重要,它直接影响项目的成败;对于大型管理软件系统而言,这三点有没有借鉴意义呢?对于我们公司的客户来说,在上软件系统之前,他们同样只是有一个设想或者规划,对软件产品尤其是系统架构而言是外行;因此在与客户沟通时,我们应该采用什么方式呢?我见过很多概要需求文档或者实施方案,功能和价值描述比较空泛,还充斥着各种专业术语,客户能明确地理解和感受到产品的功能和价值吗?我们能不能在需求阶段采用更好的方式来沟通,比如,提前开发原型以及项客户展示。在软件产品开发中,我们是否需要具备高端的专业服务能力?至少在目前国内的软件行业中,这方面能力普遍弱一些。IBM公司是非常重视这方面,他们已经是国际高端服务领域著名的提供商;金蝶公司对外宣称,要从传统的软件产品向高端服务转型,这是否是国内管理软件行业走出困境的出路呢,我们拭目以待。总结来说,管理领域属于社会科学领域;计算机技术属于自然科学领域,怎样利用计算机技术来解决社会科学领域的问题,重点是要研究管理的本质;这里再讲一个例子,来结束本篇文章。在工程合同中有一种合同分类叫做固定总价合同,从字面理解,那么合同的总价应该是不变的、合同执行是不允许超出的;但是如果再深入研究合同条款后就会发现,该合同的总价并不是固定不变的,只是合同变更的条件更为严苛而已,这就是社会科学。