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

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

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

  ◆功能交错的团队(Cross-functional team):受过不同训练的团队成员聚在一起工作,从头到尾地解决一个问题。通过在一起工作,他们分享彼此的专门知识。

  ◆结对编程:两个人一起完成一项任务,是一种分享经验与专门知识的非常深入的形式。

  ◆信息辐射体(Information radiators):是一个“人人可见的大图表”,它存在的唯一目的就是把一些重要的数据传播给任何路过的人。

  ◆唤起回忆的文档(Evocative documents):敏捷团队建立文档的时候聚在一起以便能够互相交谈。以后阅读文档的时候就会唤起对整个讨论和语境的回忆。这比起传统的文档要有价值得多。传统的文档完成之后就被丢到隔壁从此事不关己,它们本质上就是用来装点门面的——也就是说,因为已经在这些文档身上投入了那么多,我们可以(虚假地)相信这些正式文档实际上就是它们所描述的对象。

  ◆站立会议(Stand up meeting):敏捷团队每天就刚刚完成的任务、遇到的障碍、以及第二天的任务计划进行沟通以达到同步。

  沟通,当它被加入循环,会使得整个团队学习得更快,并且更加成为一个整体。毕竟,软件开发是一种集体工作。如果学习过程对团队来说是一个瓶颈,那么整个团队都需要尽可能更多更快地学习。

  如果能妥善运用这些实践,敏捷团队无论学习什么都很快——不仅是技术:设计(TDD、结对编程、功能交错的团队),需求(演示产品和TDR),产品(迭代、发布),以及人(回顾、站立会议)。

  为什么这么重要?从理论到实践

  好吧,学习过程看起来是软件开发当中一个非常重要的环节。它可能比我们认为的更加重要——那又怎么样?关注学习过程云云又如何能帮助你我的团队生产出更好的软件?

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

正在加载评论...