编者按:Mob编程这个名字并不是在市场中得来的。 “mob”这个词很容易让人联想到砸碎玻璃和抢劫商店的土匪形象,就像春田市站成一排的手持干草叉和火把的人群。看起来“暴徒”一词的含义真的和成功的编程阶段相去甚远。暴徒是混乱的,容易做出轻率的决定同时内心充满愤怒,不愿意妥协。 然而mob编程显然并非如此。本文译自 Medium 中原标题为“I did mob programming every day for 5 months. Here’s what I learnt.”的文章。
那么,什么是mob编程?简单概括就是:3个(或以上)程序员,一个键盘。别想歪了,这不是什么奇怪的事情,而是关于如何协作来共同提供高工作质量的方式。
考虑到大多数程序员只要一想到要与其他人合作就会直冒冷汗,所以接下来我们会具体介绍这是一种怎样的工作方式。想象一下,我们有一位名叫史蒂夫的开发人员,他负责一款为用户提供食谱浏览的应用程序。有一天,史蒂夫的任务是为应用程序添加一个“喜欢”功能。借助此功能,用户可以将食谱保存到名为“我的最爱”的私人列表中。如果他们想再次查看保存的食谱,就可以直接打开收藏夹列表来查找。
史蒂夫想用mob编程来实现这个特色功能。所以他订了一间会议室,邀请他的同事约翰和萨拉共同加入他的编程行列,约翰和萨拉会随即出现在会议室笔记本电脑前,开始准备迎接挑战。
所以此时,史蒂夫需要制定一些可能如下的规则:
1. 其中一个人充当“司机”的角色,由司机操作鼠标和键盘,同时他也是唯一一个可以修改程序密码的人。
2.其他人担任“导航员”角色。因为司机为了完成码字任务花费了大量时间,所以导航员就利用时间来思考,审阅,讨论并描述对象。
3.每个人都可以经常交换角色。这不是那种类似小学生“每个人都可以玩一下”的游戏,因为如果人们长时间呆在同一个角色里很容易疲惫,所以可以互换角色来保持工作激情。
我第一次了解到mob编程的时候是19岁时,那是在一栋看起来要拆迁的楼里,里面挤满了不涂体香露的学生。当教授刚刚讲完数据结构的课程后,突然打趣道:“你们既可以单独做也可以在一个团队中完成编程任务,业内把这种一起合作完成编程任务的人叫mobs。”我当时觉得与人合作写代码是件恐怖是事情。与此同时,每当我向新人介绍mob编程的概念时,同样的恐惧似乎也浮现在他们脸上。所以很重要的一点就是你的小组要适合你。
如果你已经在小组中工作了,你就需要向组员们求助,让他们帮忙检查你的代码。所有人的努力共同决定着这个项目的成败。
只要你了解了mob编程的真正含义,与他人的通力合作就会容易很多,因为这并不要求你在人际中做过多的努力,或者总是揣测别人在做什么,任务其实还是一样的。
当你电脑屏幕中抽出目光环顾四周,可能突然会有一种“周围竟然还有人呢”的错觉。 但是,当你真正与周围的人互动时,你才会比其他人更了解他们。
但是编程办公室不是社交俱乐部,我们也应该更实际一些。虽然生活告诉我们,互动良好的团队表现更好,这需要场外的额外团队建设。但mob团队并不需要过多的团队建设,因为团队本身就能很好地合作。
“我远程工作所以不能和办公室同事合作mob”,这可能是曾经很常见的借口, 但坏消息是,很多人都一直在远程工作。 事实证明,在21世纪,远程工作app几乎不要钱,而且很方便,比如我的最爱就是Slack视频电话。 它具有你所需要的所有功能:当你是司机时,可以共享你的屏幕,并使用你的声音作为导航。但是,也许你的公司没有Slack视频电话,也许你装一个类似webex的电话需要3年的时间,但在现今这种情况下,借口远程几乎是徒劳的。
一个人工作是什么情况呢?也许我非常不擅长CSS,或者有一个即将推出的项目我一直也没有调试成功,可能我也只能硬着头皮上了。但如果是采用mob编程的方式,好几双眼睛一起盯着我,那么错误很快就能得到纠正,大大提高了效率。
这就是我所了解的关于mob编程的内容。 说实话,我真正感到惊讶的是,它其实是一种愉快的工作方式和解决复杂技术问题的方式。
原文链接:https://medium.com/comparethemarket/i-did-mob-programming-every-day-for-5-months-heres-what-i-learnt-b586fb8b67c
编译组出品。编辑:郝鹏程