从3月26日开始,到本周六,也就是今天,我和我的队友刘畅进行了软件工程结对编程项目的制作。项目题目为电梯调度系统。为期2周,时间不长,但是在此次编程中,我们的2人结对队伍从这个过程等中学到了很多,我自己领悟到了很多东西。
何为结对编程?结对编程技术是指两位程序员坐在同一工作台前开发软件。与两位程序员各自独立工作相比,结对编程能编写出质量更高的代码。但是,人与人之间的合作不是一件简单的事情,而且人们都早已习惯了独自工作,这就成了最考验我们的问题,我的队友我们班级内的一名女生,她叫刘畅,我们也很熟悉,但是若真把我们放在一起去完成一项任务的时候,总觉得有些拘谨。于是我首先提出了在一起分享一下对这次项目的见解,于是我们约了个地点,见面谈了谈,很快想法就达成一致。我觉得结对编程二人之间绝对不能有隔阂,不能有其它的问题去阻碍二人的合作,如果有,那就很有必要去立刻解决,绝对不能影响项目的进程。
因为要显示电梯的调度过程,最明显的就是做出界面。于是我们达成了统一:用C语言的图形库编写出窗口界面,再通过图形库的响应函数做出电梯的调度函数,并不断刷新绘制图形来完成显示。大致思路想好了。我首先想到了用图形学写界面,于是我写了界面部分和一部分调度函数,我的结对编程队友也写了一部分调度函数,最后我将函数合并交给她更正错误,然后交给我完善小的功能。我们两个共同合作,通过网络通讯工具进行交流和改正,中间也有出错的时候,而且还有一次写完了程序,发现功能不全面,而又全部删除重新来做。总之,历经了1周的时间总算把程序做出来了,而且界面还很实用,我不敢保证不会出错,但是我们俩个共同完成项目的这个过程值得我们深思与回味。
这次的编程用C语言图形库,界面不是现成的,而是需要自己画的,就画这个界面就花了大约一星期的时间,虽然麻烦,但是一个程序如果有一个好的界面用起来还是比较舒服的,所以再苦也值得了。代码不多,一共才500行不到,功能都实现了,主要用结构体来存储每个电梯和楼层的状态,再用图形学的画图函数,通过刷新率来统一绘制,相当于在统一的频率下更新状态并绘制图形。大致的思路是这样的,代码完完全全是我们自己编写,没有参考任何资料。
在这次结对编程过程中,因为她的编程能力很强,而且她也是ACM的队员,我也参加ACM,所以我们很少遇到语法错误,在编程方法上也是很快就达成了同一。她写的函数也能直接融入到我写的界面程序中,我们两个在编写程序中没有发生过茅盾和冲突,甚至连小的分歧都没有。这也是因为她的性格可能跟我一样吧,比较随和。她的思路也很清晰,每次我说完我的想法后,她都能很快反应过来并接着我的方法继续说她的见解。总之,在这次的结对编程过程中,我们两个的配合很顺利,最后的成果我们也比较满意,可能会有错误发生,但是哪个软件发布出来没有过bug呢?有了错误我们就去更正,让这个结对项目更加完善,这才是我们接下来还要做到的。
我在这次的结对编程中,发挥了我上学在图形学方面学到的东西。每个图形都是我用画图工具一笔一笔画出来的,有一半的时间我在画图形,我觉得我自身对这个结对编程的态度很认真,我的队友也是,这个程序如果缺少我们两个中的任意一个都不可能做出来,这是我们共同努力的成果。
在这次结对编程中,我们学到了很多,理解了很多,理解了结对编程的难处,更体会到了结对编程的益处,互相配合、相互学习是结对编程练习的主要任务。我们不仅仅完成了一个项目,更加值得我们回味的是在这次结对编程中让我们学到的东西:信赖与合作。我有理由相信我们不论今后的工作怎样,都会铭记这一次结对编程带给我们的精神!
黄冠译
2016年4月9日