质量投资要求我们有零缺陷的意识,零缺陷意识要贯穿在全部的工作中,包括:
零缺陷文档
计划、需求、设计等开发过程中产生的文档,要用一次写好的决心来编写,所有文档都应该发挥它的价值,而不是为了写文档而写文档。要让相关的小组成员对该文档发表意见,重视他们的意见并修改文档。
零缺陷代码
要用一次把代码写好,不让测试发现缺陷的态度来写好代码,写出垃圾代码是不负责任的行为。
零缺陷发布
用质量投资的态度对待所有缺陷,包括自己代码产生的缺陷,对用户负责,不满足质量要求的软件坚决不发布。
全体小组成员都应该同步达到零缺陷里程碑,本着一步一个脚印、不断追求高质量的态度来完成全部工作。
学习所有的经验
象Windows这样的一些伟大的软件,都是经过很多人通过很长的时间做出来的,工作量之大、难度之大不亚于一些伟大的建筑工程。软件工程与建筑工程最大的优势就是,如果软件做得不好,可以推倒重来,但建筑工程就不能这样做了。
我拿软件工程与建筑工程比较,目的就是想强调做软件是很强调学习的,很强调不断改进的(当然建筑工程也重视学习)。我们应该庆幸,我们这些做软件的要比做建筑工程的要幸福的多了,我们不太可能犯一些不可以弥补的错误。
我们要让大家从自己或者别人的失败和成功中学习,要帮助小组成员再次获得成功,捕捉和共享技术的或者非技术的最佳实践,并想办法让学习制度化。
学习制度化的办法很多,如项目总结、例会等,但要注意的是学习应该是随时进行的,抱着学习一切可以学习的态度来工作。
微软的项目团队结构
谈了微软MSF的八大基本原理,我们来看看,微软的团队是怎样组成的?
很多软件公司的开发团队,大部分是由一名项目经理,若干项目成员组成,项目成员包括需求分析、架构设计、编码、测试等角色。
而微软的团队非常特别是没有项目经理的,由6类角色组成,分别是产品经理(Product Management)、程序经理(Program
Management)、开发(Development)、测试(Test)、发布管理(Release Management)、用户体验(User
Experience)。
各类角色负责的职责如表1所示。
表1:各类角色负责的职责
角色 |
目标 |
职能领域 |
职责 |
产品管理 |
满足客户 |
|
- 为项目小组充当客户角色
- 驱动共同的项目和方案设想
- 管理客户需求说明
- 开发和维护业务案例
|
程序经理 |
交付满足项目约束的解决方案 |
|
- 管理客户期望
- 驱动产品特征、日程表、资源权衡决策
- 管理市场开发、产品宣传和公共关系
- 开发、维护和执行交流计划
- 驱动开发过程以期按时的交付产品
- 管理产品规格说明书-首席项目构架师
- 促进小组内部的交流和商议
- 维护项目日程表和报告项目状态
- 驱使关键的权衡决策的实现
- 开发、维护和执行项目总规划和日程表
- 驱使和管理风险评估和风险管理
|
开发 |
根据规格说明创建解决方案 |
- 技术咨询
- 实现的构架和设计
- 应用程序开发
- 基础结构开发
|
- 指定物理设计的特征
- 估算完成每个特征所需的时间和精力
- 构建每个特征并监督其实现
- 准备部署时使用的产品
- 为小组提供技术主题的专门知识
|
测试 |
在所有产品质量事宜被识别并处理后进行发布 |
|
- 确保了解所有问题
- 决定测试策略和制定计划
- 执行测试
|
用户体验 |
提高用户效率 |
- 技术交流
- 培训
- 可用性
- 用户界面设计
- 国际化
- 易用性
|
- 为项目小组充当用户的角色
- 管理用户需求说明
- 设计和开发性能支持系统
- 驱动可用性和用户性能增效的权衡决策
- 为用户提供帮助特点和帮助文档的规格说明书
- 开展和提供用户培训
|
发布管理 |
进行平滑的部署及日常运行 |
|
- 管理产品部署
- 驱使可用性和可支持性权衡决策
- 管理各种操作、支持和交付渠道之间的关系
- 为项目小组提供后勤支持
|
微软的团队模型中的6种角色,不代表团队最少要6个人组成,一个人可以兼任多种角色,也不代表每一种角色只有一个人,可以多个人公担一个角色。
微软这种团队结构与我们常见的团队结构相比,有这样的特点:
扁平对等的团队结构,强调每个人的价值。这种团队结构,是“赋予小组成员权力”、“清晰的责任和共同的职责”、“推动开放式沟通”这三个原理的表现。这样的结构,让每位小组成员都感受得到自己的重要性,项目的成败与每位成员直接相关。这样的结构更容易调动每位成员的工作积极性,更容易让团队激发工作热情,产生更多的创造性成果。