提高软件开发生产力的秘方

http://tech.ddvip.com   2008年01月22日    社区交流

内容摘要:在所有的软件开发项目中,存在一种共通的东西,需要经常地花时间反省和学习。学什么?一切:成员彼此、技术、问题域、客户,等等。学得快的团队才会成为赢家。本文将详细分析这种困扰团队表现的看不见的“学习瓶颈”。

  循环:必要但不充分

  循环是“识别并应对变化”的两项基本要求之一——它提供了机会。第二项要求是沟通,通过涵盖所有的人来放大学习的效果,也就是敏捷方法中强调的“信息辐射”。

  信息需要被传播给团队中的其他人,甚至更远。没有沟通,问题可能无法被识别出来。没有沟通,发现问题但找不到解决方案的人,就没有机会从其他不同技术背景的人那里得到解决的方案。在团队的环境中,对一个特定的问题,并不总是能够确定解决问题的最佳人选——但把问题告诉每个人等于在邀请所有感兴趣的人都提出他们的建议,而不局限于团队中的“专家”——有时候新手和外行反而能够“跳出框框”而令我们有意外之喜!

  沟通能加速并强化学习过程,暂停工作来一次正式的反省可以确保沟通的声音不会被耳边“快点,快点!”的催促声所掩盖。暂停可以像“回顾(Retrospective)”过程那么正式,也可以像迭代结束后的聚餐那么不正式——只要学习与提高被列入议程。虽然沟通按计划应该发生在每次循环的开头(对目标的沟通)和结尾(对结果的检验),但在循环过程中的非正式、“渗透性的”[6]沟通也会有戏剧性的效果。

  相当数量的敏捷实践直接针对沟通问题——包括正式的和“渗透性的”沟通:

  ◆自组织的团队(Self-organizing team):团队成员一起工作,一起应对发生的变化。他们作为一个集体去进行构建软件所需的工作。

  ◆同处一室的团队(Co-located team):团队成员坐在一起,并经常性地举行小组会谈,有意无意地听到成员间的谈话,每个人都由这种信息渗透而知晓正在发生的事情。

来源:InfoQ中文站    作者:郭晓刚    责编:豆豆技术应用

正在加载评论...