
我们是谁,为什么我们要写这个话题?
伊琳娜的故事
当我以技术毕业生的身份加入该行业时,就开始了跨技能配对的经验。 在我的培训计划的12个月中,我在多个团队中工作,所有团队都主要使用成对编程作为一种使新入职人员更快掌握技术堆栈的技术。 因此,大三时,我几乎在每个故事中都与高级开发人员配对。
有趣的是,我的大多数人(如果有的话)在日常工作中都没有练习过结对编程,而与我合作是许多人第一次接触到跨技能水平的配对。 没有可遵循的框架,我们在进行配对会议时受到了本能的指导。 正是通过这种经验,我才意识到,在形成具有不同技能的人时,技术专长不应成为唯一的考虑因素(在我的组织中似乎就是这种情况)。
当我加入Nat的团队时,我很高兴发现开发人员确实在任务上进行了协作。 他们自然地结成对,使配对体验显得轻松,流畅和有趣。
但是,我与高级同事的会议与具有类似专业知识水平的开发人员之间的会议有很大不同。
我的学习速度没有我希望的那么快,而且我常常感到沮丧,不知所措,与世隔绝,甚至没有安全感。 当然,这些症状中的许多是面对陡峭学习曲线的自然反应。 但是,在上任几个月后,我反复遇到了类似的问题。
自私自利地提高了自己的学习和幸福感,我开始分析配对过程中遇到的挑战和沮丧的原因,并寻找消除它们的方法。
在我看来,跨技能的配对编程比两个坐在计算机旁交流笑话和技术专长的开发人员要复杂得多。
实际上,大三和大三之间的关系具有许多方面,这是技术专长的差异所独有的。
两位开发人员的日程安排,情感成熟度的不同程度,紧迫的期限,等级,组织结构,现有团队文化,甚至大三和大四之间的年龄差距都不同,所有这些因素都可能影响配对会议的有效性。
我在“从初学者的角度进行配对编程”学术论文中记录了我的观察和分析,这引发了更广泛的技术界的热烈讨论。 我也很幸运能与Nat合作设计和举办一系列实践研讨会,以探讨和解决初级和高级开发人员之间功能失调的问题。
纳特的故事
在我的职业生涯中,我与同一个同事一起工作了很多年。 我们是一个松散的团队,加入公司来重新设计系统或构建新系统。 我们成功背后的“秘密秘诀”实际上并不是那么秘密:我们遵循著名的XP白皮书和Alistair Cockburn的Crystal Clear中所述的做法,进行自动构建和部署,并应用了伦敦eXtreme成员之间共享的其他一些技术设计实践星期二俱乐部以及我和史蒂夫·弗里曼(Steve Freeman)最终在《测试指导》一书中记录了该书。 我们经常成对编程。
最近,我的职业生涯承担了更多的领导职责,不仅建立了软件系统,还帮助建立了团队。 我认为结对编程是传播知识和技术的理想实践。 毕竟,那是文献所说的。 但是我根本没有发现它很简单。
我发现结对编程与我认识多年的程序员之间有着很大的差异,尽管他们有不同的专业知识,但他们具有相似(或更多)年的经验(尽管专业不同),以及在我的团队中以高级开发人员的身份进行结对编程时。 前者是无缝的,流畅的体验,完全不同于我在文献中对结对编程的了解。 我们既没有遵循明确的Navigator / Driver角色,也没有使用明确的仪式(例如“乒乓球配对”)将编程活动相互传递。 配对时,我们会直观地了解何时介入并提出建议,坐下来思考,进行澄清,拿起素描本和铅笔或CRC卡,离开计算机以围绕白板或喝茶进行讨论,或者轻轻地指责我们的那对(经常是我!)来挤键盘。
但是,当我与初级开发人员结对时,那没有发生。 在事后看来,这似乎很明显:结对编程是必须学习和实践的技能。 但是我与初级开发人员的结对编程对我们俩来说都是令人沮丧的经历。 它增加了我们的压力,使不得不与我结对的可怜的程序员感到无聊。 它有助于使用导航员/驾驶员,强力配对或乒乓球配对等仪式。 但这从未使人满意。
幸运的是,伊琳娜(Irina)加入了我的团队。 作为一名应届毕业生,她觉得与高级开发人员的配对并不令人满意,因此她想解决这个问题! 她将自己的想法写成学术论文。 我与Irina进行的讨论使我意识到,是的,我不是很擅长与初级开发人员结对(这一事实现在在科学记录中是不朽的!),而且我们遇到的许多困难都是工作环境,团队和组织中的根本原因。
接下来是什么?
我们一直在进行讲座和协助研讨会,以探讨跨技能和资历配对的挑战,并分享专业开发人员如何解决其团队中的这些问题。 结果突出显示了将高级开发人员和初级开发人员配对的重要性,但也普遍缺乏有关如何最好地做到这一点的指导。
在此博客中,我们将收集并记录常见的挑战以及人们发现的可行解决方案。