1.1什么是团队?
团队是由不同的人员组成的一个共同体,它合理利用每一个成员的知识和技能协同工作,解决问题,达到共同的目标。
1.2团队有什么特点?
(1)团队有一致的集体目标,要集体一起完成这个目标。
(2)一团队的成员不一定要同时工作。
(3)团队成员有各自的分工,互相依赖合作,共同完成任务。
1.3团队模式有哪些?
- 一窝蜂模式(Chaos Team)
- 主治医生模式(Chief Programmer Team,Surgical Team)
- 明星模式(Super-star Model)
- 社区模式(Community Model)
- 业余剧团模式(Amateur Theater Team)
- 秘密团队(Skunk Work Team)
- 特工团队(SWAT)
- 交响乐团模式(Orchestra)
- 爵士乐模式(Jazz Band)
- 功能团队模式(Feature Team)
- 官僚模式(Bureaucratic Model)
1.4团队合作的不同阶段
- 萌芽阶段(Forming):个人的角色和职责不清楚,容易忽略做事的规程,每个人都想队友采纳自己的观点,重要的事情并不能真正得到解决,成员也都在琢磨问题有多大,怎么去完成它,开始各种各样的讨论。
- 磨合阶段(Storming):随着讨论的深入,有些人会沉不住气,成员之间会出现意见分歧和冲突;成员之间会出现竞争,不少人都想成为某个领域的“拥有者”;有时即使大家有相同的论点,还是有争论。在团队中解决争端的方法:投票、咨询、独裁、交换决定权以及追求最大和谐,达到全体共识 。
- 规范阶段(Norming): 成员们意识到光争吵是没用的,大家还要协同作战;团队公开第讨论流程和工作的方式,有能力的成员分担了一些领导职责,并得到大家的尊重;作为一个整体,团队要做什么、不做什么,都更加明确,团队定下更现实的目标和决心;通过聆听、讨论,成员之间更加了解,在工作中互相支持、尊重。
- 创造阶段(Performing):团队知道为何而战,并将注意力集中到如何创造、实现目标上;高度自治,不再需要领导的时时教诲与介入;角色和职责能够根据项目的要求自然地转换。
提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
2.2软件开发流程
- 写了再改模式(Code-and-Fix):看起来和一窝蜂团队模式非常像,但是这个流程也有好处,不需要太多其他准备或相关知识,大家上来就写代码,写不出来就改;要写一个有实际用户、解决实际需求的软件,这个方法就不行了。
- 瀑布模型(Waterfall Model):【分析->设计->实现->销售->维护】各步骤之间是分离的,回溯修改很困难甚至不可能,最终产品直到最后才出现;为解决瀑布模型的问题,大家在实践中提出了各种变形,生鱼片模型和大瀑布带着小瀑布。
- Rational Unified Process统一流程(RUP):业务建模(Business Modeling,工作流用精确的语言把用户的活动描述出来)-- 需求(Requirement,分析并确认软件系统得提供什么样的功能来满足客户的要求)-- 分析和设计(Analysis & Design,将需求转化成系统的设计)-- 实现(Implementation,工程师按照计划实现上一步产出的设计,并将开发出的组件,连同验证模块提交到系统中)-- 测试(Test,验证现阶段交付的所有组件的正确性、组件之间交互的正确性,以及检验所有的需求已被正确地实现)-- 部署(Deployment,生成最终版本并将软件分发给最终用户)-- 配置和变更管理(Configuration and Change Management,负责管理RUP各个阶段产生的各种工作结果,要记录修改人员、修改原因、修改时间等属性)-- 项目管理(Project Management,平衡各种可能产生冲突的目标,管理风险、克服各种约束并成功地在各个阶段交付达到要求的产品)-- 环境(Environment,向软件开发组织提供软件开发环境,包括过程和工具)。RUP的四个阶段:初始阶段、细化阶段、构造阶段、交付阶段。
- 老板驱动的流程(Boss-Driven Process):开发流程由行政领导主导,或者由公司的老板驱动。
- 渐进交付的流程(Evolutionary Delivery),MVP和MBP:开发->发布->听取反馈->根据反馈做改进。