背景
本周在完成需求的时候遇到了跟前几周重构项目同样的问题,没有合理的拆分任务导致需求在完成过程中存在着单点问题,无法及时让团队其他成员能够参与进来,但跟上次遇到的问题时有进步的地方是,这次的需求比上次谈论得更加充分。
差异
团队在这个需求的目的层面是达成一致的,但是细致到具体的执行层面本次还是没有跟一起合作的成员事先达成完整的一致性。在处理该需求的过程中,前期由于业务层面的不熟悉于是梳理了业务的流程图进行讨论,在达成一致后并没有在代码设计层面进行详细设计输出相关结果就直接进行撸码了直接导致了后面想一起合作却没有办法分配任务给他。
编程是一项社会活动
其实编程是一项社会活动,多人协作完成一件有价值的任务。在我看来要想漂亮地完成任务,就必须要求合作者至少要在以下三个层面达成一致
- 任务目的层面
- 任务整体设计层面
- 任务执行层面
任务目的层面
第一层面重点在于让合作者们能够明白该任务我们是解决什么问题,以及为什么要解决该问题目前我们团队主要是通过po来让我们在这一层面达成一致。这一层面的达成一致相对来说是比较简单,同时借鉴以往的经验就算该层面没有达成一致成员同样可以输出结果。典型的表现就是只知所以然不知其所以然。
任务整体设计层面
第二层面则已经是处理开发人员的范围,主要是涉及到任务的流程梳理,以及大粒度地任务拆分,分配。对应着目前团队中计划会,需求梳理这一阶段,在这一阶段成员们要对任务进行评估点数确定规模,以及决定是否继续拆解任务粒度以及对任务的方案进行输出。这一层面也不难达成一致性,因为梳理会讨论的过程大家都有参加并且最终任务是会落实到具体的人身上。通过在一层面达成一致,成员就能够明白团队在业务流程上是如何拆分这个任务以及各个任务相互依赖关系和实施方案。
任务执行层面
第三层面就是落实到执行层面,对应着团队中则是结对编程,就好比三个人如何合作砌一面墙。个人感觉在这一层面目前我们的能力比较弱,这一阶段我们应该要进行详细设计,通过输出类图,定义接口,方法签名,方法参数,返回值等来达成一致,通过这些一致性的约束我们就能够进行工作分配以及进度和质量的把控了。