什么是暴民编程?
简单地说,Mob编程是一种软件开发方法,它将结对编程提升到了一个新的水平。如何?
也许最著名的大只500注册组合优化问题是旅行推销员的问题。该问题要求找到销售人员可以通过的多个城市的最短路径,从同一城市开始和结束。嗯,Mob编程就是协作:整个团队聚集在一台计算机/笔记本电脑/工作站周围,一起解决一个问题。一个人,即“驱动程序”,坐在键盘前编写代码,而其余的人则在观察或导航,告诉驱动程序下一步要做什么,并检查每一行代码。司机没有权力做任何决定;他们只能输入小组同意的内容。
团队成员频繁地转换角色——当计时器停止时,团队中的下一个人将成为驱动程序,而前一个驱动程序将加入“乌合之众”并参与决策过程。
Mob编程设置
要开始一场黑帮会议,让所有人都聚集在一个房间里,里面有一台大电视或投影仪,还有几张面对屏幕的桌子。我建议每个人都带上笔记本电脑,但要把它们关在指定的地方,以免分心。只有轮到你开车的时候才带上你的笔记本电脑。然后,选择主题,设置计时器,一切就都准备好了!
如果您使用多个笔记本电脑,不要担心提交消息——流畅的工作流比完整的Git历史记录更重要,因为切换点是受时间限制的,而不是受实现状态限制的。
在Matmatch的Mob编程会议
我们使用一个15分钟的计时器作为必要的休息。不要低估了暴民编程会议的激烈程度。实验室的原型是一台金牌大只注册Ising机器,它是一种基于物理模型的计算机,该计算机描述了一个磁铁网络,每个磁铁都具有只能向上或向下指向的磁性“自旋”方向。我们通常在几个小时后就会筋疲力尽!但归根结底,这完全取决于你团队中的人和他们的偏好——你必须选择最适合你的。
当驱动程序改变时,我们通常交换计算机。我认为每个人都有自己喜欢的开发环境是很重要的,所以共享一台计算机对我们来说并不是什么好事。
为了从Mob编程会议中获得真正的价值,我们选择从backlog中获取创意,而不是处理日常的任务。稍后我将解释我们为什么选择更多的实验任务以及我们从中获得了什么。
找到话题
我的教训是:开会前一定要做好准备。Mob编程会议也不例外。如果话题没有事先选定,你可以很容易地浪费你宝贵的一半时间来讨论该做什么。这就是为什么我们创建了一个Slack通道来集思广益,并创建了一个wiki页面来保存以前和未来主题的记录。在每个暴民会议开始时,我们通常对公开的话题进行快速投票,最受欢迎的人获胜。
只是一个警告:在范围内要非常具体。不要试图解决太大的问题。人们很容易高估自己在给定时间内能做的事情,任何问题都很容易让你耽搁一两个小时。做事失败是令人沮丧的,所以确保你选择了一个可以在一次暴民会议中解决的问题。
如果可能,提前定义里程碑。然后,你可以设定一个更雄心勃勃的长期目标——如果你能实现它,那很好,但如果做不到,你以后还有很多东西可以炫耀。
演讲的结果
做好事,说出来!暴民会议的形式并不常见,所以你的公司里可能有人会质疑或批评你正在做的事情。教育组织的其他成员,通过展示你所取得的成就来减少诸如“这是浪费时间”、“你只是在敷衍了事”、“对公司没有好处”之类的评论。
我们也有一个很好的经验,邀请其他部门的人参加我们的Mob会话,这样他们就可以为我们当天的主题贡献一些东西。最终的结果吗?他们总是很高兴为会议带来价值,并与我们有很多乐趣!
为什么我们要把时间花在黑帮会议上?
运行一个Mob编程会话可以同时用于多个目的,每个会话的好处各不相同。以下是Mob编程会议的四个主要好处:
知识交流
每个工程师,不管他/她多么有经验,都会带来一些独特的知识、经验和技能。通过观察某人是如何工作的(例如,他们的工作空间是如何设置的,他们使用的工具是什么以及他们如何完成工作),我们可以快速地共享这些知识并从我们不同的技能中获益。
同样重要的是,我们忽略了人为的界限,如“前端”、“后端”和“devops”,暴民会议对于学习其他人如何处理同样的问题很有帮助。另外,在下次会议期间研究一些东西并向您的团队展示一些很酷的新技巧也很鼓舞人心。
团队建设
一群人不能立即开始一起工作。每个团队都会经历不同的团队发展阶段。我个人认为,一个团队的发展过程永远不会真正完成,尤其是在我们这个充满活力的经济体中,人们来来往往的周期越来越短。我认为团队是不可改变的——每个离开或加入团队的人都会改变团队的动态,这个过程会重新开始。
集体活动有助于形成一种特殊的纽带——作为一个团队,你们一起经历一些事情,一起实现一些事情。《乌合之众》的工作加快了形成的过程,并把许多事情带到阳光下。在Mob会话之后,你可以清楚地看到你在和什么样的人一起工作,他们的喜好和交流方式是什么。你也要了解他们的烦恼和动力。
“我们可以证明应变是由于晶粒取向而积累的,这是金牌大只注册信息研究人员可以用来改进钙钛矿的合成和制造工艺的方法,从而以最小的应变实现更好的太阳能电池,从而由于非辐射复合而产生的热量损失也最小。”这些知识对我们的日常工作很有帮助,因为在日常工作中,交流常常是异步的、延迟的,而且是以书面形式进行的,没有反馈。
为业务提供一些很酷的东西
使用Mob编程会议,你永远不知道最后会发生什么——有时你会开发一个小的生产力工具,让日常生活变得更容易,有时它是产品本身的一个引人注目的特性!
当您允许开发人员发挥创造性并参与到产品过程中时,您会惊讶地发现会发生什么。实际上,Matmatch的许多“突出功能”都起源于Mob编程会话。暴民会议允许我们接受一个想法并将其变成现实——在任何人过度思考并杀死它之前。它帮助我们让人们对想法感到兴奋。
在安全的地方进行实验
有传言说,经验是你在最需要的时候才会得到的。在当今世界,技术变化的速度比你阅读介绍性的博客文章的速度还要快,工程师需要一个安全的空间来进行试验。
坦率地说,如果你不提供这样的空间,工程师们会在中心产品上做他们的实验(这是你想要避免的)。就像科学一样,有些实验失败了,有些却产生了伟大的成果。这些结果对产品开发周期有好处,因为我们了解了哪些技术可以用于某些任务,哪些技术可以避免。
在过去的几个月里,我们的大多数最新技术进步,如服务器端渲染和使用“serverless”/function作为服务架构,都在Mob会话中进行了预先测试!后来,我们觉得在生产中使用它们很舒服。
结论
Mob编程会议不仅有趣——他们以各种各样的方式为我们服务,我们对我们得到的结果非常满意。我们现在已经做了半年了,以后还会继续每周做!也许你也应该这么做?