《构建之法》阅读笔记02
团队,在软件开发中是个不可缺少的名词,很少有一款开发是脱离团队的。团队是有一致的集体目标,团队要完成这目标。同时团队成员各有分工,互相依赖合作,共同完成任务。
团队有各种各样的模式:蜂窝模式、主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式。
其中我最喜欢的是功能团队模式,掌握各种不同技能的人整合成团队,每个人在项目中有自己的分工,同时在项目过程中又有团队的交流,团队的交流是不可缺少的,
这样还能够互相督促,在这种模式下,任何人只要偷懒就会被发现,每个阶段的问题也充分暴露。
各司其职,对项目共同负责(Establish clear accountability and shared responsibility)
在项目进展的过程中,对于每一项任务,每个人都要明确以下几点。
- Who:谁负责
- What:做什么,具体的执行方案,什么叫做“做好了”
- When:什么时候开始,什么时候结束
- Why:为什么是这样安排(和项目的远景是否吻合),在什么情况下可以变更?
与“信息共享与沟通”原则相呼应,这样的安排能让所有人都明确自己的职责,同时有“大局观”—知道别人在做什么,为什么,以及整个项目的目标
保持敏捷,预期和适应变化(Stay agile, expect and adapt change)
软件工程,唯一不变的是变化。所以干脆别幻想客户的需求会在第一时刻很明确,然后保持不会变。要注意,我们是预期变化,不是期望变化
除开外部原因,团队内部也在变化,我们对技术的掌握每天都在提高,原来认为不可能的事可能变得容易。我们对客观世界和软件系统的了解每天都在深化,原来觉得没问题的小细节忽然成了大问题。甚至原来一起打拼的同事忽然要离开……这些都要求我们团队保持敏捷的身段