组编程入门

在Optimizely,黑客周活动是我们工程文化的重要组成部分。 一年两次,我们打破常规,制作新创意的原型; 现在是进行技术和文化实验的好时机。 在我们的Hacky Holidays 2018期间,我与之合作的团队决定尝试一种新的工作方式:暴民编程。

结对编程不是我们不熟悉的东西; 实际上,与另一位工程师配对完成工作是很正常的事情。 Mob编程是该模型的扩展,在该模型中,没有一个驱动程序和一个导航员,而是有一个驱动程序,而团队的其余成员都是导航员(在我们的示例中,是另外三名工程师)。 驾驶员的角色在团队中轮换,因此每个人都有机会体验驾驶和导航。

暴民编程有很多好处,有些也不是很多。 这些缺点之一绝对是名称。 “暴民”感到非常混乱,暴力和消极,这是暴民的所有特征。 在开始尝试mob编程之前,我们决定更改引用的方式:组编程。

“小组”至少比“暴民”更中立,即使您可能对学校的小组项目没有很好的记忆。

与学校项目不同,一旦开始进行小组编程,我们就不想停止。 与团队在同一个地方一起解决单个问题是一种非常有趣的方式。

尽管让所有四个团队成员一次都解决一个问题,但我们并没有感到放慢脚步。 实际发生的事情是我们最终以我们都满意的速度前进。

在Python中,很容易打错字并遇到运行时问题,因此我们能够通过在同一代码上花四个脑筋来缓解这些问题。 除了发现错误外,我们还有效地实时审查了产生的代码。 团队与设计选择在同一页面上,因为我们能够在实现它们之前进行讨论。 我们都在做同一件事,因此进行对话非常容易,并且不会感到打扰。

当驾驶员不确定如何解决特定问题时,团队的共同思想使我们始终能够取得进步。

黑客周的好处之一是使跨不同学科的工程师聚在一起,但是我们的团队通过共同编程使这一点更加深入。 我们能够与平时不熟悉的工程师紧密合作,并且能够在分散的地点锻炼自己的力量。

该团队由来自旧金山的三名工程师和来自奥斯汀的一名工程师组成。 使用Zoom,我们可以在屏幕上共享驾驶员的屏幕,而导航员则可以轻松观看并做出贡献。

当我们以团队的方式开展业务时,我们还注意到,是否我们都在独立工作,但尚未有人问过的问题有所增加。 例如,当我们运行“ docker build”时,我们为项目建立依赖关系,而在开发过程中,我们忘记了重建映像; 这为团队成员之一提供了一个机会,来询问为什么我们必须运行“ docker-compose build”,而不仅仅是“ docker-compose up”。 我们无需在Slack上搜索解决ImportError问题的答案,而是可以教导何时使用不同的Docker命令以及为什么需要为我们的应用程序运行一个或另一个。

我们发现的另一个好处是学习其他人如何进行调试和故障排除。 并非每个人都以相同的方式进行调试或提出相同的问题,因此,通过对问题提供四种不同的观点,团队可以看到其他人如何提出问题并在遇到困难时解决问题。 我们可以借鉴从同行那里学到的知识,并将其运用于我们的日常工作中,以成为更有效率的工程师。

询问您想如何一起工作

我们没有意识到开始这种工作风格有多么容易。 实际上,一周之初只需要问一个问题:我们希望如何团队合作? 我们是要分开工作还是独立工作,还是我们在一起时要取得进步?

请记住,这些不是互斥的工作风格。 您可以在项目的各个部分上独立工作,也可以作为一个小组工作。

在日常工作中,您可能会跳入解决问题的过程,而不必考虑独自工作以及仅在PR建立后进行合作的影响。 在开发周期中将您团队的协作提升到更高水平,以增加共享的知识和生产力。

识别“简单”和“复杂”的工作

我们为项目实施小组编程的方式是对复杂零件进行小组编程,然后对简单零件进行并行化。 我们还决定将“研究”工作合并到“简单”工作组中,因为我们认为最好是一个人阅读事物,教育团队并提出一项决定,然后我们可以进行讨论,查找达成共识,共同前进。

在我们的案例中,我们的简单/研究工作如下:

  • 设置我们将全部工作的分支
  • 将flask添加为对应用程序堆栈的依赖项
  • 选择一个Flask REST API框架

我们的复杂工作如下:

  • 实施认证机制
  • 实施用于处理请求的资源(我们的视图层)
  • 创建SQLAlchemy模型和SQL模式
  • 为新资源编写测试

沟通,交流,沟通

尽管独立编程和小组编程不是互斥的工作方式,但这并不意味着团队中的某人可以独立进行工作,而无需先询问团队是否还可以。 当团队成员确实在项目的一部分的黑客周期间离开并独自工作时,可以预期他们会先与团队签到,以避免重复工作,并尽快回顾他们与团队所做的事情。在实施者的脑海中仍然鲜为人知。

我们发现小组编程是一个有趣的变化,能够以团队的方式解决问题并共同编写代码。 在本周末,我们有一个可演示的项目,我们觉得自己在团队成员,协作者和工程师方面有所进步。 在2019年,尝试与您的团队进行小组编程; 只需要一个问题。 新年快乐!

感谢Lauren Pappone,Sid Kakarla和Jessica Ross尝试了团体编程! 这是一个非常有趣的黑客周。