Vision(愿景):
一个软件如果没有明确的Vision,就如同在旅途中失去了方向。而且此Vision要能被团队所有人接受,并能激发大家的工作激情。所以在软件开发的开始阶段,确定Vision是件极其重要的事情。好的Vision会让团队所有人充满激情,并能够很容易地被外界认可。
Scenario(想定)and Persona(角色):
在软件开发之前,需要弄清楚这个软件的用户是谁,他们的需求是什么。找几个典型的Persona来体验几个典型的Scenario是非常重要的。这会让开发人员明白他们要做什么,软件究竟需要提供什么功能。
Feature List (特征清单)and Spec(说明书):
编程人员一般不原意写这两个东西,总是Feature跟着程序变,Spec很多时候也只是为了完成任务。一个成功的软件在开始coding之前,需要有详细的Feature List和Spec,特别在一个团队中,而且它们需要在团队中一起讨论得到,每个人都应该清楚。如果没有这些文档,软件开发就会变得混乱。
Design(设计)and Review(回顾):
软件设计得好坏直接关系到软件的质量,代码的质量也是跟软件质量息息相关。如何做一个好的设计和编写高质量的代码?让团队一起来Review你的设计和代码,让别人尽可能多的Chanllenge你。团队每一人的设计都需要让其他人知道,让问题尽可能在开发的早期暴露出来。Review也是学习的过程,年轻不怕犯错误。Review也会真正的让写程序变成一种态度。
Test(测试):
Test不同于Debug。Test分为很多种,是软件质量的一个很重要的保证。Usability Test,即用户体验,也很重要。
Communication(交流):
团队需要交流,不然就仅仅是几个人凑在一起而已。项目中大多数问题的解决都归功于交流。
Triage:
这个很有趣,一般是在很棘手的问题或者项目后期对一些Bug或者还没实现的Feature的讨论。就是团队的人坐在一起讨论这些Bug是不是要Fix,哪些Feature一定还需要实现,哪些需要Cut掉。需要最后给出决定。
Post Mortem:
一般是在项目快结束的时候,团队所有人坐在一起讨论哪些地点做得好,哪些地方做得不好,为什么会这样。这个很重要也是很必要的,因为人生就需要经常总结和反思。
Leader:
Leader需要把握项目的整体,驱动团队向前,把整个团队牢牢地团结在一起,而且很多时候要快速地对情况做出反应,快速地做出适当的决定。