十、预估
- 预估是什么 承诺是关于确定性的,是必须要做到的。 预估是一种猜测。不包含任何承诺的色彩。 暗示性承诺,要区分预估和承诺。
- PERT 计划评审技术(Program Evaluation and Review Technique),三元分析法 对预估的计算方法,预估编程概率分布,让上级看懂 O 乐观预估。一切顺利需要时间。 N 标称预估。概率最大的数字。 P 悲观预估,是最糟糕的数字。 u= (O + 4N + P)/6 u=任务的期望完成时间 q=(P-O)/ 6 q=任务的概率分布的标准差,越大,也不确定
- 预估任务 拇指会议: 规划扑克: 类似拇指会议 关联预估:全员参与排序
- 大数定律 大任务拆小重新评估,最好按工时或天为单位
十一、压力
- 避免压力 只对有把握达成的做承诺。 保持整洁:遵循流程制度,不打乱节奏 危机中的记录:观察自己在危机时刻中的反应,就可以了解自己的信念。危机时刻放弃的做法,代表并不相信TDD有帮助。
- 应对压力 不要惊慌失措 沟通 依靠你的纪律原则 寻求帮助
十三、团队与项目
- 只是简单的混合吗
1个人放入两个项目,对项目的投入度就分别是50%吗?
1.1 有凝聚力的团队:成员建立关系,学习如何相互协作,了解彼此癖好、强项、弱项,最终,才能凝聚成团队。
大约12人一组,RD一组、QA和BA一组,比例大概2:1, 7名程序员、2名测试、2名分析师和1名项目经理;
BA开发需求,为需求编写自动化验收测试。QA也会编写自动化验收测试,但是它们两者的视角是不同的。两者虽然都写需求,BA关注业务价值,QA关注正确性,BA编写成功路径场景;测试人员要关心的是那些可能出错的地方,是失败、边界场景。
项目经理跟踪进度,确保成员理解项目时间表和优先级;
可能有人兼职崇仁团队教练或者master角色,负责确保项目进展、监督成员遵守纪律。担负的职责:如果团队因为项目压力太大选择半途而废,他们应当充当中流砥柱。
- 发酵期:磨合期
- 团队和项目,何者为先:银行和保险公司试图围绕项目来构建团队。这是一种愚蠢的做法。团队永远都不可能形成凝聚力。每个人都只在项目中短期停留,只有一部分时间是在为项目工作,因此永远都学不会如何默契配合。一个有凝聚力的团队能够同时承接多个项目,根据成员自个的医院、技能和能力来分配工作,会顺利完成项目。 1.2 如何管理有凝聚力的团队 通过点数统计团队的速度。有凝聚力的团队更能应对紧急情况 1.3 项目承包人的困境 会让项目承包人失去些安全感和权力。有可能改变团队目前承接项目优先级,项目承包人依赖的资源也可能突然间便被抽走。 项目承包人指责:清晰地定义和陈述项目的价值与意义,让项目得到公司管理层的认可和支持。
- 结论 团队比项目更难构建。组件稳健的团队,让团队在一个又一个项目中整体移动共同工作是比较好的做法。并且团队也可以同时承接多个项目。组建团队时要给予团队充足的时间,形成凝聚力,成为不断交付项目的强大引擎。
十四、辅导、学徒和技艺
大师 领导过多个重要的软件项目的程序员;
- 拥有10年以上的从业经验,曾在多个不同类型的系统、语言和操作系统上工作过;
- 懂得如何领导和协调多个团队,是熟练的设计师和架构师,能够游刃有余的编程
- 通过阅读、研究、练习、实践和教学来维持自身的技术水平。公司会把项目在技术方面的主要职责交由大师承担。
熟练工 还在受训期,已经能独立胜任工作,且精力充沛,学习如何在团队中卓越工作和成为团队的领导者。
- 对当前技术都很了解,对很多系统都缺乏经验。一般只了解一种语言、一个系统、一个平台,正在不断的学习的过程中。
- 彼此间经验水平差距可能很大,平均经验水平在5年左右。上面是成长十分迅速的大师,往下则是刚刚进来的实习生。
- 在大师和其他资深熟练工的督导下工作。很少让资历尚浅的熟练工独立工作。代码会被仔细复查,自主能力也在不断成长。对其直接接入知道的地方也会越来越少,指导内容也会越来越趋向那些微妙之处。督导工作会趋向“同行评审”的方式进行。
学徒/实习生 没有“自治权”,需要在熟练工的紧密督导下工作。
- 一开始不会单独承接任何工作,主要打下手。这阶段应该十分密集的进行结对编程。这一时期是学习纪律并强化各项实践的阶段。各项价值观的基础都是在这个阶段塑造成型的。
- 熟练工会担任他们的导师。确保学徒能够了解设计原则、设计模式、各种纪律和固定的操作环节。会向他们传授TDD、重构、估算等各种技艺。会为学徒们安排阅读、练习和实践任务,还会检查学徒们的任务进展情况。
- 学徒期至少应持续一年。期满之时,如果熟练工愿意接受学徒工上升到他们这一层级,就会把学徒推荐给大师。大师们则会通过面谈和水平检测,对学徒们进行考核检验。得到认可则会晋升为熟练工。