微软是怎样管理产品开发的

     
        最近看了《软件开发的科学与艺术》这本书,是由微软亚洲研究院的一帮华人写的,自己个人总结了一下,写了以下这些文字,对微软的项目管理算是有所了解了。

        在微软,项目产品组的行政上是施行1+6的结构,人员组成有一个产品单元经理(Product Unit Manager)加上六个部门,六个部门分别是:产品管理(确定产品的远景,获取并确定用户的需求,开发并维护商业安全,满足用户的需求)、项目管理(制定开发功能规范,在团队内进行沟通和协调,维持产品进度并报告产品状态,保证能够尽快尽好的在产品约束条件下发布产品)、软件开发(开发处满足设计规范和用户需求的产品)、软件测试(开发测试策略和计划,保证在解决了所有已知问题后再发布产品)、用户培训(保证使用文档要全部很清楚的写出来,提高用户使用产品的技能,保证大多数用户都能够充分利用产品的功能)、后勤管理(保证产品能够平稳的发展)。六个部门都有部门经理,如果项目大的话可能会在经理和队员之间设组长,项目小的话团队可能会整合,变成项目管理团队、软件开发团队和测试团队,产品管理、用户培训和后勤管理会并到别的团队中,但是一定会保证软件开发这个团队是一个独立的团队,这样成了1+3的结构。这六大部门是一种平行的关系,就是谁也不受谁管辖。

        微软为了发挥员工的主人翁精神,为了留住人才,做了很多,除了本身的实力和给员工提供较高薪水外,企业文化是非常好的,例如人性化的考勤和家庭式的工作环境等。另外微软给新进入的每一个员工会根据他的资历、能力等情况配发一定数量的公司股票,而且还会定期根据该员工所作出的成绩来增加或减少股票的数量,如果微软的股票上涨了,股票的差价就归员工所有。这样就让每一个员工有一种和公司荣辱与共的感觉。

        微软软件开发的指导原则:
        ●软件的开发过程是由目标驱动的,而不是有具体任务驱动的
        ●开发过程的各个里程碑都是显而易见的
        ●基于版本的发布
        ●进度表是基于风险驱动来制定的
        ●依靠完全的团队合作来完成
        ●严格管理,保证质量

        主要有以下四个里程碑:
        ●想法和意图的批准里程碑
        ●产品计划的通过里程碑
        ●范围完成/第一次使用历程碑
        ●发布里程碑
        其中前三个阶段都会引入风险管理。 在想法和意图的提出后就要对市场和技术等风险进行评估,一旦项目得到立项就进入功能规范细化和设计阶段,要根据功能设计进行风险评估,制定总体的进度表;在开试阶段要结合代码的详细设计变更进度表,结合功能的细微变更和测试检测出来的bug,评估风险,及时变更进度表。有的项目可能在第一个阶段就没有通过,有的是在第二阶段没有通过,有的甚至在第三阶段被毙掉了(例如出现正在开发的产品已经有新的技术实现或者开发的产品没有对手的有竞争力等情况出现)。

        软件开发微软做的并不比别的软件公司有什么太大不一样,但是有两点需要提及:
        在一个最小单元的开发组内,文档和代码是共享的,而且队员之间需要相互阅读代码,这样一旦一个成员离职都不会太大影响项目的开发进度;
        尽最大努力让开发人员只做开发,因为开发人员都是技术的热衷者,微软为了保持他们对技术的热衷,做了两点:
       (1)一些同开发不相干的职能从开发团队剥离到别的团队,其中一个最主要的职责----功能设计剥离到项目管理团队;
       (2)薪水同行政级别挂钩而不是同岗位挂钩,你如果是一个资深程序员,你可以安心只做你的程序员,不用去为了提高自己的薪水而走向管理层,因为你技术资深就以为着你的行政级就高,就有可能拿的薪水比经理的还要高。
    
        微软的测试是在开发一开始就开始了,而且一直到产品的正式版本推出,如果一个轻量级的项目有10人的构成,会有五个测试,一个项目经理,三个开发, 一个做别的工作,从这里可以看出微软对测试的看重。

        项目经理这个角色非常重要,他不同于开发部门的项目组长(Project Leader),项目经理不用写代码,但是却要有较高水平的技术专长。有技术是为了服人,为了更好的沟通。因为技术人员通常不会向一个不懂技术的项目经理反映问题,也不会真心的尊重他。
        他主要执行以下任务:
       (1)制定产品的远景规划,写出项目规格说明书。
       (2)制定工作详细任务表,跟踪这些任务的执行情况,保证其符合规格说明书的原始设计。
       (3)组织会议,评审程序错误。
       (4)指导项目开发的过程设计和实现。
       (5)对各种具体实现方案进行取舍并做出决定。
       (6)协调各组人员之间的交互配合,包括开发工程师、测试工程师、产品经理、用户教育和本地化人员。
        微软的一个特色就是,项目组任何成员如果对项目有什么建议可以写在纸条上然后贴在会议室的墙上,项目经理组每天的一个重要任务就是收集这些纸条、整理看阅、同项目人员交流,做出取舍,达到规避风险和采纳良言的效果。
        项目经理通过向产品单元经理汇报,可以对项目的资源(包括项目组所有成员)有调配的权限,但在行政上开发团队和测试团队却不受他管辖的,他影响不了他们的薪水和职位。产品设计、产品实现和产品测试是三权分立是的相互配合,相互制约,同时又是相互依赖的关系。

posted on 2008-07-11 17:33  VinceLu  阅读(3034)  评论(13编辑  收藏  举报