thoughtworks结对编程体验

写在前面

前段时间在学校论坛上看到thoughtworks举办了一个结对编程的活动,要求使用的语言是Java,于是就想着参加一波,之前有听说过结对编程,但是没有参与过,感觉挺好玩的,就想着试试,抱着玩的心态。这个活动主要分成两个部分,第一部分是完成线上题目,第二部分是参加线下结对编程活动。

线上题目

线上题目比较简单,也分为两个部分,第一部分主要是考察IDEA快捷键的使用,首先会让你看视频,然后根据视频完成快捷键的选择题。第二部分有两个题目,第一个是创建一个github仓库,并在里面创建readme.txt文件,然后将仓库地址提交审核,当时网站有问题,没有提交成功,当天中午还要thoughtworks公司打电话来询问,我说了这个问题,她说他们工程师正在解决,第二天上午来提交果然就好了。第一个题目应该是考察同学们的git及github的使用,毕竟整个活动基本都会用到github.第二个是个编程题目,是关于保龄球计分的题目,没有玩过保龄球,不了解计分规则,但是题意对计分规则说得很明白,所以不影响。这个题目也是要在github上完成。关于题目要求及实现代码可以参考我的github2017-04-28-03-33-58-1493350438

线上题目做完后,过了几天就收到了线下编程活动的通知,然后找了几个同学一起打车去参加线下结对编程活动(活动地点离学校比较远)。

参加线下活动

线下结对编程活动原计划是两天加一下午的时间的,但是由于他们公司周日有一天停电,就变为一天加一下午了。活动是下午1点开始签到,每个到的同学会发一件T恤,T恤不错,哈哈。然后就是一个简单的破冰游戏,消除大家的尴尬。接着就是thoughtworks公司西安办公室的负责人和HR介绍他们公司的业务、理念记忆招聘政策等。由于是结对编程,所以肯定要分组啊。接着用扑克把大家进行了分组,我抽的是黑桃6,我的队友就是梅花6。分好组后就指定教练,基本4个或者5个组一个教练,教练是thoughtworks公司员工。都非常的nice。进行到这儿就快结束了。最后留了一个小时,写了个命令行的小程序,主要是进行环境调试,队友互相认识了解下。

第二天是早上9点到,首先进行了题目的讲解分析,这次的题目是关于生命游戏。关于生命游戏,生命游戏是一个零玩家游戏。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。
具体规则如下:

  1. 如果一个细胞周围有3个细胞为生,这该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变)。
  2. 如果一个细胞周围有两个细胞为生,这该细胞的生死状态保持不变。
  3. 在其他情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)

题目需求描述:

  1. 实现核心逻辑
  2. 用界面展示结果
  3. 可以预先指定初始状态
  4. 可以控制动画的速度

了解题目和需求后,大家就在教练的带领下分开开始结对编程了。时间大概是上午10点到下午3点半,3点半截止提交代码。打开电脑我和队友首先在IDEA中创建了项目,使用maven作为依赖管理和构建等。然后开始在本子上设计数据结构和类及类里面的方法。设计完成后就开始编写代码,我们在编写代码的同时会编写测试,结对编程提倡TDD开发。到下午三点半前我们基本已经写完了,具体代码可以见github地址game-of-life。提交代码后就开始每个组进行五分钟的答辩。之后就开始评奖了,我们组获得了一等奖,奖品是大疆无人机。我们组能获奖主要是这次评比看的是代码质量,我们的代码写的简洁,且测试覆盖率很高。同时这儿要感谢队友,因为代码主要都是他写的,代码写得很不错。

参加感受

通过参加这次thoughtworks结对编程,体验了结对编程,这种方式其实还挺不错的。在thoughtworks公司工作中也经常采取这种方式。还有一个感受就是在平时我们在编写代码时要追求代码质量,不能就只为了实现功能。

您的支持将鼓励我继续创作!