结对开发小感

    先前在日企工作时,虽然看到过很多关于极限编程、结对开发的好处,但是心中自是无法理解,本来一个人可以干的事,却非要两个人去干,这不明摆着多损耗一个人的时间吗,这两天的一次小经历让我对结对开发有了更深的感受。

    系统的Web界面终于开发完成了,Leader安排我和小张用两天时间对线上环境进行更新,运行环境需要python、django、uwsgi、nginx、公司其他调用接口等。为了降低上线风险,我俩先在本地用了干净的环境进行模拟,一人负责几个模块,结果1天下来我俩都没成功。我和小张各碰到了很多问题。

我碰到的问题是:

  • python使用了CentOS自带的版本,版本过低导致很多Module不兼容(粗心)。
  • 手头缺少与开发项目兼容的各个运行库,而这些在小张都能找到(沟通不足)。
  • uwsgi操作不熟悉,屡试不通(能力受限)。

小张碰到的问题是:

  • nginx配好后,总是出现莫名奇妙的问题。
  • 项目只能部分运行(对项目不熟悉)。

    经过一天的挫败后,我们有些紧张了,因为期限就是两天,而问题又这么多。但是纵观第一天的工作,我们发现我俩碰到的问题,对方都能或多或少提供一些帮助,于是第二天一上来我俩就决定一起工作,小张准备好了所有正确版本的运行库,他动手操作,我旁边监督和思考。很快我们就将python、django、uwsgi、nginx等基础环境配好,但是在安装公司内部调用API时,总是提示/usr/local/lib/下缺少临时目录,这让我们有点崩溃,问了API开发同事也没有找到答案,就在万般无奈之下,小张嘟囔了一句“我本地电脑有/usr/local/lib/目录,为什么线上服务器却没有”,我突然想到代码是从小张本地电脑上传的,为了测试我们还专门提前本地编译了一次,有可能是小张的本地环境影响了线上环境,于是我们把编译的临时文件全部删除,并重建了配置文件,果然这次搞定了。诸如此类的问题一天竟然分析解决了十多个,最终线上环境按时完成。

    通过这次小经历,让我体会到了结对的好处:一个人工作的同时,另一个人在旁边保持一致的思路,并深入思考,不仅相互发现了很多失误,还避免了工作的弯路。先前在日企之所以无法体会到结对编程的好处,是由于日企做事将WBS(工作分解)做的很好,每个人不仅拿到的任务都是能直接消化的,而且可以有很多现成的内部文档可参考,Review工作同时也做的很好。个人完成起来不是很费劲,质量能得到保证,所以结对开发在日式管理中的效果不是那么明显。而在国内公司,对工作管理的细度并不够,每个人的工作难易不均,而且Review做的经常不到位,导致成果物要么延期,要么小问题充斥。对于有难度或需要细心的工作,结对开发确实可以避免很多弯路,减少工作的停顿。

你可能感兴趣的:(结对编程)