Skip to content

Latest commit

 

History

History
101 lines (77 loc) · 6.72 KB

pair.md

File metadata and controls

101 lines (77 loc) · 6.72 KB

Pair

一个人的活,两个人干。有这必要吗?相信大部分的管理者都有一样的疑惑。

那换个角度,我是个毕业生/新加入的小伙伴,有人带着我一起熟悉项目,第一天就可以贡献代码,感觉还不错嘛。

再换个角度,我觉得我理解了,我觉得我懂了,那都是我觉得。看看能不能把新人教会,那样我就真的懂了。

看起来,皆大欢喜好像比较难。但我好奇的是这锅该不该Pair来背?

一个人的活,两个人干,这不是浪费嘛!?

经常被问到这样的问题。 通常都可以理解,因为问这种问题的人,通常都是客户代表,管理角色,并不是一线开发人员。 如果是外行提这样的问题,倒也好理解。 因为大部分人还是潜意识里把程序员的工作理解为体力型劳作,也就是劳动密集型工作。 这种类型工作的特点是技术含量低,简单堆人头就能显著提升产量。 咱们也不能说这种理解是错的,但肯定不全对。 如果是这样,那我们人口优势这么明显,我们在计算机领域应该是绝对优势的存在,堆人头嘛,还有谁比我们更擅长这个。 被人技术封锁?不存在的。 事实显然不是这样。

如果说外行指导内行,出现这样的情况,还好理解。 可有的时候也会碰到内行指导内行的时候,这种情况也会出现。 通常在感受到交付压力的时候,团队负责人都会不自觉地让大家不要Pair了,各干各的,又回到了传统的模式。 这种情况下至少说明了一个问题,那就是估点出现了问题,团队对外承诺的交付物,没法按时交付,目前唯一的目标是按时交付。 从说话要算数的角度来看,确实没什么问题。 但从交付质量来看,隐藏的上下文好像是,只要按时交付了就行,质量什么的以后再说。 这是典型的为夸大海口买单。 而且是共输的局面。 客户损失了质量、团队损失了信誉和技术氛围、团队领导过度消费了团队信任、团队成员浪费了时间和生命。 如果有选择,相信没一个人会这样做。

但这绝不是Pair的锅!

怎么Pair

感觉在浪费时间,就我一个人在写,另一人在看着。 很真实。 在做任何事情的时候,如果没有坚持的理由,相信谁都会很难去坚持。

我也有过这种体验很差的时候。 当时我想的是知识传递,这样我在休假的时候,不用被一个电话叫回来修改只有我熟悉的代码。 同时团队的能力也会变强,这样合作的体验肯定也会变好,效率也会变高。 不过,和我Pair的人当时想得也很自然,就是把这张卡做完。 至于其它的,不在现在的优先级里。

同样,我也有过很好的体验,也是我坚持Pair的动力源泉。 当时很幸运,参加的是一个从曼彻斯特交接过来的内部项目。 团队里的人都很nice。 一个TL(Tech Lead)对整体架构很熟悉,能把复杂的事情简单化,易吸收,好消化。 一个高级开发(Senior Developer),很有耐心,能把技术知识讲得很生动,形象有趣,深入浅出。 刚开始Pair的时候,我主要是以观察者的身份,也就是观察为主,看着学的状态,熟悉工程实践流程,和一些理念。 在第一天就参与了开发,并有代码提交生产环境,这种感觉不要太棒! 后来上下文越来越丰富,对项目技术栈和工程实践也有了比较实际的理解,可以乒乓pair了。 也就是我们一起拆解好任务,我来写测试,你来实现;下一条倒过来,你来写测试,我来实现。 有来有回,"乒乓"用得很形象。 最后能独立实现一定难度的卡了,就我来主pair,负责主导所有的流程,和实际动手开发实现。

正因为有这样好的体验,所以一直对pair有较好的印象。

怎么看Pair的效果

Pair的主要目的还是知识传递,消除瓶颈,传承文化,保证质量,最终提高生产力。

  • 知识传递:老带新,可以让新人快速融入团队,促进沟通,也加快了新人对环境的适应,为更好地表现打好基础
  • 消除瓶颈:如果团队严重依赖某个成员时,这个成员往往会成为团队的瓶颈,毕竟个人的时间和精力总是有限的
  • 传承文化:像一些团队遵守的最佳实践,团队的文化和风格,对于团队的凝聚力往往是很重要的
  • 质量保障:就算再好的设计,在实现的过程中这里打打折扣,那里打打折扣,是很容易变成烫手山芋,谁都不想接手
  • 生产力:团队的生产力依赖于个人的生产力,个人成长了,能挑的担子越来越重的,团队的生产力自然也就提高了

如果完全靠自觉,也能坚持所有的初心,自然再好不过,这样的团队氛围谁不羡慕。

那如果想要进一步可视化这些指标呢,是不是有章可循。 当然有,Lead Time和Cycle Time正好是用来指导团队进行能力规划建设的

远程Pair是什么体验

疫情刚开駋的时候,为了安全,公司通常大家都在家办公。 刚开始一个星期,大伙还都挺开心的,但过了一个星期大家就发现,事实上挺无聊的。 这感觉就像你期待的长假开始了的感觉,前几天新鲜感还在,感觉还不错,可当这阵新鲜感过后,无聊的感觉扑面而来。 还有就是普遍生产效率变高了,体现在交付的卡变多了,布置频次也变高了。 可随之而来的就是体验不好,感觉一天下来,很累。 质量不高,变更失败率变高了 - 部署到生产环境失败的次数变多了。 后来我们发现,一个人在编程的时候,因过专注,因为想要今天就把事情做完,往往一天工作的时长会长于在办公室的时长。 很好理解,喝水聊天的时间变少了,思考的时间变少了,全用在动手上了。

后来我们就开始了远程pair,刚开始也不太顺利,比如网络带来的问题,延迟,不连贯,体验差。 比如背景音嘈杂,体验差。 Pair着pair着的时候,人就不见了,容易被打岔,体验差。

后来我们通过线上回顾会议,也进行了一步步的改进。 比如想办法通过和公司的网络部门申请办公移动wifi。 比如选择相对安静的环境。 比如有事提前打好招呼。 这些问题看起来都不是什么大问题。

通过远程Pair后,大家普遍反应没那么累了,因为我们建议大家互相提醒,注意休息时间,注意提高效率,多关心一下彼此,可以在休息的空闲聊聊闲天。 质量也有了提高,不仅部署频率变高了,部署成功率也提升了。

远程Pair,感觉还挺不错的。