IE产业组分为十个项目组,每个组大概有十到五十个人,基本上负责一个产品模块,像浏览,或者HTML的编辑、打印。但是有一些时间一个项目经理会负责不止一个特性,甚至有一些开发人员可能他在某些方面有专长,他也需要在不同组织之间流动,所以这种组织实际上是一个动态的。
下面我们谈一下微软产品开发过程。开发过程划分的基本原则是,希望把大的项目分为若干个里程碑式的开发周期,并在各个周期都要考虑一些冗余,使你的开发周期变得更实际一些。通过目标描述来保证所有的人是沿着同一个方向发展。利用产品特性描述来指导开发过程。同时利用用户的数据来决定一些特性的取舍,或者优先级的排定。加不加这个特性,不是开发人员觉得好,我就做这个东西,往往还是从用户角度来考虑,用户从中间有多大收益来决定。
还有更重要一点就是统一的术语。在微软内部刚进去时也会做类似这样的培训,会请的各种角色做一个讲座,大概需要六七个小时。其中有对很多术语、缩写,还有对这套开发模式的介绍。从而保证所有人理解的都是统一的。这样你才能保证无论在做事或者讨论的时候,大家的理解是一样的。
还有一点是在开发产品过程中不间断地测试,而不是做完了到某一个阶段才开始测试,因为往往那个那时候往往已经太晚了。
微软产品开发过程分为四个阶段,第一个阶段是规划阶段,这个阶段基本上是由产品规划人员以及项目经理来驱动的,这个阶段主要是要完成这样一些事情:一个是目标描述。基于这个产品目标,我们已经知道了,我们需要做哪些事,做哪些特性来达到这个目标,这样就决定了产品提供哪些的功能。然后PM就要根据这个功能来写出相应的规范说明。一般产品规格说明,就是传统上说得技术文档,基本会写两次,第一次写一个简单的,里面列出了你这个功能或者你的特性希望达到什么要求,跟我们整个产品的目标有哪些相关的,产品之间依从性,为什么要做这个特性。写完这一页的特性描述之后,大家会坐在一起看一看,排定一个优先级别,哪些事我们先做,哪些有可能做,或者哪些是下一版本在做。把这个事情做完了,程序经理会写一个更详尽的特性说明,这是指导开发、测试整个过程的技术文档。基本上一般都有一些模板。
在规划阶段,当所有的特性规格说明完了以后,还要制定日程进度表。这个日程进度表往往需要由开发人员的参与。看到了这些产品规范,根据你的经验估计做这个需要多长时间,还需要打入一些冗余,把这个做完之后,产品规划阶段就已经完成了。
产品阶段完成的标志,就是目标描述,所有特性规格说明,以及日程进度表的完成。这样就进入第二个阶段,即开发阶段。因为我们自己有特性描述,已经知道做什么。所以根据这些特性,会把这一阶段,分为三到四个小的阶段。基本的划分原则是重要的或者相互依从的特性开始做,剩下的一些次重要的。会在第二或三间段做。这一间段是由开发人员去推动。所有的开发人员开始写代码,对于每一个开发人员都有相应的测试人员,会把开发人员写的代码拿去测试。这个阶段完成的标志是所谓的特性完成,或者叫代码完成,也就是所有的这种特性都已经开发完毕。这时就进入了下一个阶段,测试阶段。测试阶段主要由测试人员推动。在开发阶段也有测试在进行,但在测试阶段进行的主要是集成的测试,象安装,兼容性测试,性能,或者其他方面的测试。此外通常还要发放一些“beta”版本,让用户去实际使用并发回反馈。这一阶段会有更多的“bug”进来,但是这一阶段基本上不会增加一些新的特性。这一阶段结束的标志是所谓的“零缺陷”。微软有一些来跟踪缺陷或者叫“bug”的工具,如果从这些工具看到针对这个发布周期已经没有任何活动的bug,这就标志着稳定化阶段已经结束。现在有一个趋势,就是稳定化阶段做得越来越长,从而更好的保证产品的质量。