定义“ 质量”
尽管绝大多数人都认真对待质量,也想生产出优质的产品;但是,有关软件质量的定义仍存在很大争议,比如高质量是“足够好”还是更为经典的质量观点--“无缺陷”。为了领导你的团队走向成功彼岸,你需要花些时间和你的下属以及客户一起来明确,对于他们,质量意味着什么。
你的下属和客户是不同的两帮人,他们很可能对质量没有一致的看法,也就容易抱有不同的目的。如果客户很强调交货期,那他很可能没有耐心听程序员解释为什么需要额外的时间去检查每一行代码。如果客户看重的是软件的可靠性,那他在增加功能和减少Bug之间多半会选择后者。如果客户习惯了老版本的键盘操作,那他很少会对新的图形操作界面感兴趣。
在我曾经负责的一个项目中,为了更好的了解客户的质量要求,我举办了一次开放式讨论会(Open Forum),除了项目成员和客户参加外,我还客户的上司们一起来参加讨论。这次讨论很有价值,因为我们发现很多原有的想法是和客户真正的质量需求背道而驰的。了解这些想法的差异,使得我们可以把力量集中在让客户满意的事情上,而不是放在让“开发满意”的事情上。
软件质量通常被理解为合乎规格说明,满足客户需求,以及在文档和代码中尽量少的缺陷(Defect)等等,这些都是比较“经典”的定义。“六西格码质量”(Six-sigma Quality,译者注:是一种质量标准及相应的质量管理方法)为缺陷密度(Defect Density)和/ 或失效率(Frequency of Failure)设定了一个很高的标准,但是,它没有涉及质量的其他方面,比如交货期、可用性、特性集和性能价格比等等。无论我们是作为生产者还是消费者,我们都希望产品的质量在所有这些方面都是尽量高的,但事实上,我们总要在其中做出权衡和选择。
我们在需求阶段就考虑,对于客户哪些质量特性是重要的,并把它们列举出来(比如,交互性、正确性、易学性等)。然后,我们找来一些关键的客户代表,请他们对这些质量特性打分。这样,我们就可以掌握哪些质量特性是最主要的,哪些是次要的,从而就可以有的放矢,为这些质量特性而优化设计。
我听说的更有意思的一种软件质量定义是“客户回来的,但产品没有”(the customer comes back, but the product does not)。和你的下属以及客户一起定义合适的质量目标,一旦定义了,则要不遗余力的为达成这些目标而努力。也要以身作则,以高标准要求自己。记住这句话:“非完美不争取,非卓越不满足”(Strive for perfection; settle for excellence)。
表彰进步
表扬和奖励项目成员的成绩是很重要的激励方式。你要把建立奖励计划Recognition Program)视为头等大事,除非你已经有了适当的奖励计划。奖励既可以是象征性的奖状、证书,也可以是实实在在的奖品和现金。发奖时记得说,“感谢您的帮助”,或者“祝贺您完成了...”。还要记得奖励的范围不要局限在你的项目组内部,客户代表和一些向你提供特别帮助的项目组外部人员也是要考虑的。
奖励计划不仅需要你投入一小笔钱,也需要你多动动脑,想想以何种方式奖励。和你的下属多交流,了解他们在乎什么样的奖励。要把奖励活动变成团队文化的一部分。另外,尝试“隐形”的奖励,让你的下属明白你是真的知晓他们所做的贡献,并且对此心存感激。
前车之鉴, 后事之师
你负责的项目很可能是半途接手的,而且你的前任做的并不怎么好;或者,虽然是新项目,但从前有类似的项目完成,当然有成功的,也有失败的。不管是哪种情形,你作为项目的负责人,应该花些时间分析以往的成功经验和失败教训。你要了解这些项目曾经出现过什么问题,以此避免自己重蹈覆辙。失败是成功之母,但你没有太多的机会失败,所以你要多从别人的失败中学习。
不要戴着有色眼镜去看以往的项目,或许某个你不喜欢的家伙出色的完成了他的项目,你当然可以把这归结为运气或者侥幸,但如果你客观的分析,或许更有助于你的成功。
你也需要客观的去评价自己完成的一些项目(如果有的话),了解自己的团队究竟强在哪里,弱在何处。事实上,每个完成的项目都要进行项目回顾(Post-project
Review),有时这种总结式的项目回顾也叫做“开棺验尸”(Postmortem)。注意项目回顾不是为了追究谁的责任,发现问题、剖析问题是为了以后做得更好。你可以采取头脑风暴的做法,鼓励项目组成员各抒己见。另外,这种项目回顾也可以扩展到项目进行中,在每个大的阶段结束时都进行回顾。[@more@]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7839396/viewspace-941944/
,如需转载,请注明出处,否则将追究法律责任。