微软的软件开发管理一直是实用主义至上,检验一个项目管理人员水平高低或者软件开发方法优劣的唯一标准就是看团队是否能够在规定的时间内开发出高质量的软件产品。
在微软,对项目管理的要求非常细致,也积累了很多的经验,看得出微软十分重视经验的累积,成功的经验往往能够得到非常多的重复使用,所以很多时候对某些做法他们也讲不出一个所以然来,只是说这是通过实践经验得到的。比如office开发团队的朱敏博士在“大规模软件开发: 过程与研发管理, 项目管理研发与测试团队的相互关系”中谈到,在微软做项目计划时,工时一般都是由开发人员估计的,如果对同一个任务两个人的估计结果不同,往往以经验丰富的人估计的为准(没有经验的开发人员往往需要到其他人那里寻求帮助,或者加班L);而且微软奉行一个“7X24”原则,就是说原则上,一个功能的开发在计划中不超过7个工作日,而一个任务的计划不超过24个小时,如果超了,就需要分解;另外,微软认为一个开发人员每周实际的编程时间不是40个小时,而是24个小时,其它16个小时会被各种会议、review等活动占据,因此在微软,需要开发人员参加会议会尽量安排在每周一和周五,而完整地留出每周二、三、四让开发人员写代码。微软内部也没有统一的项目管理方法,MSF似乎是微软给业界其它公司特别开发的,他们自己不用(难道微软不属于软件开发业界?);基本上每个比较大的产品团队都有自己的一套做法(比如Office团队和Windows团队的很多做法都不相同),同时很多团队也在尝试一些新的做法,比如office团队最近就引入了敏捷开发理论中的Scrum方法,实际操作中碰到了一些问题,现在也还在摸着石头过河。
微软的项目开始阶段,不管是使用叠代开发还是敏捷开发,项目管理人员写的spec都是整个项目成功的关键,开发人员制定开发计划,测试人员制定测试计划和方案等工作都严重依赖于项目的spec,因此spec的质量很大程度上决定了产品的质量。微软对spec的要求非常高,spec里除了要非常详细的写出用户需求,还要把重要的操作步骤作非常详细的描述,同时要使用诸如Photoshop等工具对软件的界面进行详细的设计,开发人员和测试人员都会对spec进行详细的review。而且在微软,当spec中软件的功能定下来以后,一般不会在往上加新的功能,只会根据项目进展的情况往下减。