微软公司的产品生产管理经验
时间:2009-12-18 10:05:04
来源:百度
微软公司如何去做一个软件产品生产管理呢?
产品生产管理,最初来自一个大家认同的好主意
就D在瑞特蒙得园区数年来的经验而言,对一位高级软件设计师来说,任何一个研发新产品生产管理的设想与建议都是受公司鼓励的,哪怕一时还没有用。如果你又能纠集几位与你差不多的同事认同你的设想,同时也能在公司整个市场战略中找到你设想产品生产管理的位置的话,你拿到预算经费的可能性已经很大了。
一个好主意当然也要来自群众。因此,在早期的微软,每隔一段时间,便会将小组内全体人马集中到"与世隔绝"的风景名胜之地。好吃,好喝,好玩,然后便"胡思乱想,畅所欲言"。每个人都要求到台上来畅想一番,你心中的产品生产管理应该是个何等模样?其目的无非是一个:集思广益。好主意,当然是"宁肯错抓一千,不可放过一个",有过此种经验的微软人都会对这种极认真的"玩"记忆犹新。
一个好的产品生产管理,起始于一个好的Spec
光有一个好主意不足以使你心目中的产品生产管理形象化,更不能组织产品生产管理。虽然有几个同事认同了你的主意,但你还必须把你的产品生产管理是什么东西,向方方面面交待清楚。也就是说,你要开始做你的Spec。
Spec是英文Specification(软件详细加工说明书)的缩写字头,行内人已习惯只说这前四个字母。反正,越简单越好。
一个完善的Spec是美国任何一个大型软件项目最为重要的一步。这在美国软件业同行中恐怕也是全民共识。就如同你要造一辆汽车,总要先把一张张蓝图一丝不苟地画清楚。不过,也有相当一部分软件工程师在动手做自己想做的软件项目时,并不真的从写Spec开始。比如D吧,直到加入微软前,都没写过Spec。那时候,D所编写的大多是功能单一的程序。一般是搞明白了每一个程序的输入输出要求,便动手干起来再说。边写边改,十分灵活。一个程序跑通了,结果出来了,也就大功告成了。今天,就算在美国大学里或某些科研机构中,许多人也还是这样做。但程序一大,或者作为一个工业产品生产管理,这种干起来再说的办法显然不行了。
实际上,做产品生产管理软件又不同于造汽车。汽车必须一辆一辆地造。软件却只要做一套,如果想批量生产管理,压拷贝就可以了。有过十几年的软件生涯,在微软又浸泡过几年之后,D倒是觉得,做一项软件工程可能更像拍一部电影。而Spec则更像是拍电影用的剧本,一剧之本。
到东京去出差,D曾有机会读过日本人为某个软件项目写的Spec。在这一套Spec中,对该软件产品生产管理应该包含的一切,事无巨细,一一定义罗列。计划中的每一个文件与函数都用自己定义的伪语言(一种接近自然语言的算法语言)写出来了。翻着翻着,D便想,虽然按这本Spec来写程序的程序员,理论上只需将函数中一行行伪码,用写程序时的真实电脑语言置换一下就可以了。但是,其一,程序员一定少不了那种被牵着牛鼻子走的无可奈何的感觉;其二,编写这样一本详细的Spec,几乎相当于用伪码将这个软件写了一遍。这样做,不是将直接写软件会遇到的问题转移到写Spec中来了吗?效率高吗?这个Spec肯定要用极大的努力去写。日本人的确是在拿做汽车的精神在做软件。日本人有他们的道理与风格。
但在D看来,一个好的电影剧本,有一个故事,有一系列人物和一系列故事发生与展开的时间地点等场景。但在电影的拍摄过程中,从一部电影文学剧本到一部电影,又给导演、演员、摄影、音乐服装等留下了许多发挥的余地与创造的空间。
就像一个好的剧本一样,软件的Spec也是从一系列Features(功能,特色)开始的。Feature这个字应该是指,软件包括哪些功能与特征、软件将要做哪些事情、事情与事情之间的关系、事情与软件用户间的关系。功能多少有点像剧本中的故事与人物。
有了产品生产管理功能的准确定义与描述,接着要设计用户如何使用这些功能。即,你的软件会涉及哪些输入输出设备,比如鼠标、键盘、电脑屏幕与打印机。这就又涉及到,软件产品生产管理的各种功能在这些设备上的所有可能的表现形式,在软件业内习惯称为界面。也就是说,软件用户为了使用这些功能,与这些功能交流对话时用的界面。界面的设计,关系到软件产品生产管理是否方便使用,是否通情达理,善解人意。界面反映了你的软件是否具备某种人性。打开PC的电源,你在电脑屏幕上看到的一个又一个画面,就是Windows最开始的界面。从一个电影剧本的角度看,界面多少有点类似故事与人物活动时的场景。
过去的20年,年复一年,电脑的界面发生着巨大的变化!在20世纪70年代初,电脑的输入手段只限于拨盘开关、穿孔卡片与纸带,最豪华的装备也不过是台电传打字机罢了。输出设备只有一台宽行打印机或者绘图仪。电脑的CRT终端还只能算大型机上尚未普及的奢侈品。因而,"界面设计"从来都没有成为一个软件设计中的主要问题。那时开发人员主要的注意力都在算法上,他们要考虑如何用小得可怜的机器内存与慢得让人焦急的CPU来完成计划中的工作。80年代,图形屏幕终端开始普及,界面设计提上了日程。一门新的学科,软件心理学也随之诞生。今天,在已走进千家万户,甚至人们衣服口袋中的各种电脑中,商业软件的界面已变成了软件设计中举足轻重的一个部分。
功能与界面设计这两个过程,并不一定需要电脑编程人员介入,就如同写剧本并不一定要有导演和演员参与一样。功能与界面设计,甚至无须电脑专业的人员介入,但设计人员要对该软件所应用的领域有充分的了解,对该领域如何使用电脑要有充分的想象力与创意。设计人员还须对市场上已有相关产品生产管理胸中有数,并找准自己的设计在市场上的位置,扬长避短。这其中也应包括了对正在设计的软件与其他市场上同类软件是否"兼容"的一系列技术上与商业上的考虑。公司大到如微软,设计人员还需要具备一定的人际交流与协调能力,使自己的设计得到市场上大部分同业厂商中潜在的同盟军与合作者认同的能力。
功能与界面的设计完成之后,才是Coding设计开始之时
完成了上述过程,接下来的设计工作要交给软件工程师来做了。这有点像电影开拍前还需要准确的分镜头剧本一样。工程师们现在要设计和制定一个技术规则了。这个技术规则包括,采用哪些软件技术,用什么样的软件工具语言,在一个什么样的环境与平台上,如何将整个项目分割为一块块的子任务,详细的子任务清单等等细节。这个过程当然也要强调想象力与创造性,但更重要的是技术上的可行性,子任务间相互配合与协调的高效率,以及完成整个功能与界面设计的准确与无误。