刚刚接触到结对编程这个概念时,我真的感觉十分新鲜——一直以来,我都以为编程是逻辑思维的独舞。即使是老师们布置的多人共同完成的大作业,组内成员的合作,也止于大家每人抱着一台电脑,然后坐在一起,各写各的代码罢了。软件工程(3)布置的微信抢票应用的开发,要求展示结对编程开发的过程。这“逼得”我不得不和组员进行了一次结对编程练习。第一次的结对不尽完美,却有很多的感想和收获。
这次的结对编程由我负责代码编写,队友则负责代码的静态检查和文档查阅(比如python的语法和Django的API),程序思路则是在我们边开发边交流中逐渐清晰起来的。我们的结对任务是管理员登录和登出功能的实现。在实践的过程中我们发现,开发的最大困难,在于对Django框架的不熟悉。所以我们实际编程的流程是:写几行代码->预感此处有django API可用 -> 查阅官方文档 -> 应用API ->继续写代码。在这里我非常感谢我的队友总能及时的查阅文档,向我传递那个恰当的实现方案。为了加快编程速度,在队友查阅资料的同时,我会在空缺处填写伪码并继续coding。我们觉得这样做可以使得结对编程具有比个人编程更快的开发速度。除此以外,队友在代码的静态检查中也发现了一些缩进不当,拼写错误,import 文件缺乏等问题,节约了我们的开发时间。
事后回想一下自己在结对过程中的表现,觉得自己在和队友讨论编程思路时,更多的是试图让别人相信自己的思路,而不是借鉴他人的想法以形成更好的编程思路。这一点在结对编程的过程中是不应该的,下一次结对要争取少犯或者不犯。
棋手对弈,段位相当才有感觉,表现才能精彩。结对编程也是如此,水平相差太多,难以达成愉快的合作;只有二人优势互补,各司其职,才能实现1+1>2的开发效果。我和队友的这次结对,每个人都为我们共同的代码做出了应有的贡献。只是作为结对编程的尝试者,我心中还是有疑惑:花两个人的时间干一个人的事,这究竟是不是一种高效的表现?