关于结对编程

这次的软工作业是写一个生命游戏,要求使用结对编程的方式来进行开发。我的队友是蔡心瑗,项目地址是github,展示页面是这里

结对编程的含义是两个人由两名程序员在同一台电脑上共同进行编程开发;所以我就把蔡女神叫到了我的寝室Orz(还还用了更大的显示器)。

我们第一步就是针对问题对程序的架构以及实现进行了讨论,两个人共同制订了代码的架构以及各种接口的标准。然后我们根据架构以及需求估算了每个模块的难度以及代码量,两人进行了任务的分配。

接下来就是结对开发过程。首先由我进行项目的搭建(使用了yeoman、bower以及grunt作为前端工具链进行快速开发、测试、发布,使用git进行项目管理),并且初步实现了整个网页的可视化。之后由蔡女神进行逻辑的编写,并使用grunt进行测试;最后我来使用grunt build发布这个网页并部署到git上。

经过了这次的结对编程作业,我感觉结对编程就是一个人看另一个写代码来吐槽的过程。我比较擅长各种工具的使用,蔡女神长于逻辑架构,所以我感觉我们刚刚好是一个互补的过程。在各自擅长的领域进行写代码,在不擅长的领域提出自己的意见。这样会让整个代码的质量有效的得到提高。

虽然代码质量变高了,我们的开发效率好像也变低了。直观感受是我们两个人的开发效率远远低于之前两个人两台电脑的工作模式。不过考虑到在架构以及接口方面交流成本的降低,加上这个项目也太小难以看出效率的差距,所以我不好评判这种开发模式的工作效率。但是可以肯定的是,结对开发的方式要比我一个人写代码速度快(可能是我一个人写代码的时候会去看动漫)。

总之,我觉得优化结对编程的方式是优化你的队友。。如果两个人在不同的方面比较擅长,那么合作就能让一段代码在两个方面有闪光点。最后,这种方式的代码质量也确实不错(而且没有git的冲突)。