欢迎光临BDM
一枚菜鸟码农的成仙之路

记第一次参加线下编程活动 Mob Programming

我能参加这次武可老师和姚若舟老师组织的 Mob Programming,纯属机缘巧合。半个月前重新自学 TDD 时,从武可老师一年前技术博客中,找到了由他组织的 TDD 爱好者的群链接。当时如同找到组织一般如获至宝,可惜链接已经过期,只好辗转从他的另一篇博文中找到了他本人的微信,通过他的朋友圈中,才得知了此活动并参加。

这次的活动已经是此系列的第二期了,最终目标是通过前后端分离的设计完成 Black Jack (又称 21 点)的功能。由 TDD 和 BDD 引导,采用 Mob Programming 的方法,一台电脑,轮流上阵编码,其他所有人负责讨论和指导。上一期活动结束,完成了【开始游戏】及【初始发牌】的功能,这次活动完成了【结束发牌】并【显示结算】的功能,编码阶段耗时 3 个小时。

【待插图】实际成果较为简单

令人心旷神怡的气氛

最打动我的是,整个活动的流程和气氛。说实话,刚开始来之前,我是很不好意思的参与此次活动的。原因无它,自身年限太短,又是 TDD 的初学者,感觉到了活动中将永远都是索取者的位置,会降低其他前辈的活动体验。出乎我意料的是,活动本身的气氛对个人能力的容忍度非常高。我们有前端和后端,也有年限和我差不多但年纪比我大一圈(233)的转业前辈,我们使用 BDD 和 TDD 的主要环境是 Java 后端,就是我平常工作用的那一套,瞬间感觉差距就小了一点,至少在打字的熟练度上。

人员分工 Driver 和 Navigator

活动分为两个角色,轮流出一人当 Driver,其他所有人当 Navigator。Navigator 们负责讨论下一步的方案,由 Driver 实施进行编码,所有人共享一个大屏幕,共享所有的逻辑。为什么气氛非常友好?因为当你是 Driver 时,不必思考设计细节,此时化身为一个没有感情的打字机器,尽情地展示对编辑器的熟练度即可;当你是 Navigator 时,也不必设计出所有细节,大多数情况下由主 Navigator 来引导 Driver,其他人只需要提醒和纠正主 Navigator 的失误逻辑即可。

Driver 不用担心写出了代码的坏味道,那都是 Navigator 的锅;Navigator 也不必担心思路设计不够完美,说出不完美的设计然后大家都在一起讨论何尝不是学习和进步的一个机会呢?

有位仁兄迟到了,不清楚我们的规则,他当 Driver 的时候直接自己噼里啪啦地写了起来,场面一度失控,甚至还删掉了一个 Controller 给 push 到远程分支了,真是十分欢乐!(没错,这就是 Navigator 的问题)

BDD 初次尝试(Behavior Driven Development)

此次不仅使用了 TDD,还使用了我从没听过的 BDD,现场赶紧百度,只学到了一点皮毛,也不得不赞叹它的设计非常有意思。框架是 Cucumber,它是用类似自然语言的描述来编写测试用例,比如 :

XXX.feature

When I click the Button
Then I saw the ‘Welcome To BlackJack’

这样就表达出了当我点击按钮时,我会看到欢迎语。当然,这只是一个简单的甚至错误的例子,稍微复杂了一点后仍然需要代码来描述逻辑,不过这个 Feature 文件结合插件能直接运行,比起 UT 的代码会更加直观。

TDD 初次实战(Test Driven Development)

经过这次聚众练习和两位老师的演示,我总算证实了 TDD 的实际操作就如同之前理解的一般繁琐而机械。作为 TDD 的开发人员,我们需要机械地重复小步迭代,测试先行。经验影响的是开发人员设计出的小步的步幅大小,不断地重复【黄灯】(编译不通过)-【红灯】(编译通过但测试报错)-【绿灯】(测试通过但代码不一定没有坏味道)的一种循环。不解的是很多时候明知道这个绿灯是强行让他通过的,但是仍然要踏出这一步,然后用新的测试用例来使其测试失败。而不是直接一步到位编写出更完善的测试用例。

这一系列操作还是非常考验经验的,感受到了行业内 TDD 少的原因了,因为要求确实不低。不过,下家公司我尽量在工作里用上它,无他,就因为自动化测试安心。

有待学习的 LIST

活动一个月一次,下次活动可能就得要八月底了。为了跟上进度,下面几点我仍然得自己课后补充才能避免丢人现眼:

  • Git 命令行的使用。我还写过相关博文呢,实际操作时已经被各位前辈的操作秀翻了——通过命令行快速定位问题,快速修复问题。而我只能一脸茫然。

  • Vue.js 基础语法和项目结构。简单地使用还是得会的,免得下次 Drive 时太过青涩。

  • TDD 思想。继续加深 TDD 思想和积累实战经验,下次试试成为一名有效产出的 Navigator 。

  • Cucumber 框架。这个有空看看吧,优先级在 TDD 之后,毕竟 BDD 思想还差太多了。

  • Java 基础。Java 的战场,绝对不能丢,至少能解释清楚所有其他人对 Java 语言本身的疑惑。(框架就算了)

最后,仍然感谢武可老师和姚若舟老师组织的这次活动,SAP 的办公环境,真好!

本文遵守知识共享署名-相同方式共享 4.0 国际许可协议,未经允许不得转载暂时没有标题 » 记第一次参加线下编程活动 Mob Programming

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

联系我们GitHub