相关文章
如果要了解交换编程,可以先看看下面的几篇关联文章,这样才能更有助于理解本文中的一些内容:
[技术讨论]结对编程与交换编程的对话:http://blog.csdn.net/qingrun/archive/2006/12/07/1433588.aspx
交换编程csdn官方blog发布了网络版本:http://blog.csdn.net/programmer_editor/archive/2006/12/07/1433092.aspx
[技术讨论]关于结对编程实践的一段对话:http://blog.csdn.net/qingrun/archive/2006/12/10/1437443.aspx
[团队管理]结对编程引出的话题——企业管理与程序员规划的对话(修改总结稿):http://blog.csdn.net/qingrun/archive/2006/12/12/1440190.aspx
[技术讨论]关于交换编程实践的交换周期问题 :http://blog.csdn.net/qingrun/archive/2006/12/20/1450091.aspx
老兄弟老问题
昨天在成都见到了以前一起工作的弟兄,他现在还在原来的单位工作,还在做原来的项目,我听说了原来那个公司的最新情况,感觉:他们终于熬出来了。
期间,他就提到他们目前有一个问题,每个人负责一个大的模块从头到尾,结果每个人的模块自成体系,在检查错误与测试的时候遇到了很多问题,主要是因为每个人的自查起不到效果,同时由于每个人做自己的模块都已经有四年之久了,这样的结果使得每个人都对自己开发的代码有相当高的认可程度,因此在进行新版本开发的时候,就很难进行调整和人员间的协调,当然还有因此产生的一些关联问题。
这个项目的背景在交换编程那篇文章中作过简单的介绍,目前这个项目已经进入了第四期,可是同样这个第四期,还是处在MIS系统阶段,始终没有突破我04年那篇规划中提到的第二阶段:专家系统。
由于最高领导有了变更,所以,我甚至有了想帮助他们完成这个项目后续进展的考虑,当然,这个考虑目前对我来说,还只是一厢情愿。
好了,废话少说,我继续前面的问题。
当听到这里,我就问他,是否还记得当年做完需求后,我给大家提到的要求进行轮流交换开发的事情,他说他有印象,但是,不明白为什么。
于是,我给他讲了一下交换编程这样做的好处,这样做,正好可以解决他们目前遇到的那个问题。
其他朋友的疑问
说道这里应该提一下另外有一个朋友的疑问(这个朋友的疑问是写在程序员杂志blog上的内容,我在这里做一个回复):
“
关于交换编程,我也考虑过很多,在很久以前想想结对编程的时候,就考虑过,感觉上交换编程有一些问题不好解决: 1:每个人都要理解上一个人的思想,思路,这样的时间应该是比较耗费的, 2:每个人都有一定的思维惯式,交换的时候,缺少一个人在身边,这样很有可能这个人把上一个人的思维更改成自己的思维模式(比如文档,代码),这样很有可能给后面的人和原作者带来一定的困扰。 3:接手的人,是否会为上一人擦屁股,如果上一个人写的比较差的话,那么接手之后,如果接手得人没有责任心的话,那么可能就会让差的代码越发的差,这样可能发生代码腐烂的问题。我觉得人总是受环境的影响比较大,特别是一些没有特殊洁癖得人,比如一段代码写了注释,那么后来得人,可能接着写,如果前面的人就马马虎虎,凑合的话,那么后面的人会更凑合,就像Tom Demarco的那本《程序员修炼之道》中说得救火队员去救火的那个故事一样,如果屋子干净的话,队员都要扑上垫子,才敢进去救火。 当然了,如果上面的全部反过来的话,这个就是一个比较好的实践了:)
”
这里我一个一个回答:
1、关于理解前一个人思路的问题,这里应该根据工程项目情况和团队组织以及人员变动情况进行综合考虑,如果一个人在公司的时候,你都无法理解这个人的思路,那么当这个人因为某种原因离开公司后,你还能让原来的模块继续下去么?
这里一个潜在的问题就在于这个公司这个团队在项目开发过程中是否有一个整体的规划和考虑,如果完全是一盘散沙的合作,那么,交换编程也比单人编程更有优势,毕竟,你进行交换的时候,大家都还在公司内,如果离开了,岂不是更是断层了?
这个时间的耗费是否值得,我相信每个人都能衡量得出来。而另一方面考虑,如果一个人所写的东西无法被第二个人所理解,那么这个人的工作,岂不是没有任何价值了?那你要这个人来做事,明摆着是把自己放在了即将喷发的火山口上!
2、这个问题同样也是交接的问题,另外就是整个团队是否具有整体性,大家做的东西是各自为战,还是有一个相对统一的规划考虑。最基本的规划考虑是必然要存在的,否则,这个团队也就不是团队,这个项目也不可能成功。
另外,每一个人给第二个人讲解自己想法的时候,其实也是主动地对自己的开发过程和思路进行了一次完整的review(重新评价),讲得过程中就会让他自己想到一些自己没有考虑成熟的电荷一些还有疑虑的问题,通过这种交流,就可以将这些问题扩大化,摆出来,让所有的人都看到,这样才能及时地解决,否则,这些问题就会隐藏起来,直到项目结束的时候再被发现,那时候,就不是坐在火山口上了,而是直接调进了熔岩里。
3、这个问题我个人认为,是不需要讨论的。因为如果经过这样的交接,项目领导者也会发现第一个人是否是在做事情,是否称职,如果说第二个人就是在给第一个人擦屁股,那么,第一个人是否应该存在在这个团队中,他存在是否有价值,这就是管理者应该考虑的直接问题。
同样,这种擦屁股,也会把隐藏起来的未知的问题显性化,让大家都看到每一个人所做的事情的价值,对于评定程序员的工作量和工作质量无疑是有好处的,而且具有现实意义(现实意义就是说不是单纯的指导意义,而是可以直接付诸实施的措施)。
我相信经过上面的解释,应该可以说明交换编程的作用了,这其实也是把同行评审工作直接放入到开发过程中来进行,将那些可能流于形式的同行评审变成了现实中的开发实践。
分享到:
相关推荐
### 交换编程—结对编程的延伸实践 #### 一、引言 交换编程作为一种新型的软件开发模式,是对结对编程的一种延伸和发展。本文旨在深入探讨交换编程的基本概念、实施背景及其在软件开发中的应用价值,并通过实例来...
5. **AJAX**:AJAX(Asynchronous JavaScript and XML)技术使得网页可以在不刷新整个页面的情况下与服务器进行数据交换,提高了用户体验。书中将介绍如何使用XMLHttpRequest对象实现异步通信,以及现代浏览器中的...
《Visual C++串口通信开发入门与编程实践》是一本由周韧研老师撰写的专著,主要聚焦于使用Visual C++进行串口通信的开发和应用。串口通信是计算机通信领域的一个基础且重要的部分,它使得设备之间可以通过串行接口...
5. **交换技术**:讨论了二层交换与三层交换的区别,VLAN(虚拟局域网)的配置与管理,以及STP(生成树协议)和RSTP(快速生成树协议)在防止环路中的作用。 6. **QoS(Quality of Service)**:如何通过设置优先级...
本资料集“H3C路由交换技术详解 1-4.zip”涵盖了该领域的基础知识到高级应用,旨在帮助读者深入理解路由和交换的工作原理以及H3C设备的配置与管理。 路由是网络中的核心功能,它决定了数据包在网络中的传输路径。H3...
《PHP网络编程技术与实践》是一本专注于PHP在网络编程中的应用和实践经验的书籍,适合对PHP有基础了解并希望深入网络编程领域的读者。PHP作为一种广泛使用的服务器端脚本语言,尤其在网页开发中占据重要地位,它使得...
《Visual C++/Turbo C串口通信编程实践(第2版)》是龚建伟老师编写的关于串口通信编程的教材,主要面向使用Visual C++和Turbo C环境的程序员。在本书中,作者深入浅出地讲述了串口通信的基本原理、编程方法和应用实践...
在《java线程与并发实践编程》中,作者Jeff Friesen可能还会深入讨论线程池的配置策略、死锁和活锁的预防、线程性能分析与调优,以及Java内存模型(JMM)和线程通信模型(如wait()、notify()、notifyAll())等内容。...
《Visual C++串口通信技术与编程实践》是一本深入探讨串口通信技术与实际编程应用的书籍,特别适合Visual C++ 6.0初学者。串口通信是计算机通信领域的重要组成部分,它允许设备之间通过串行接口进行数据交换,广泛...
《龚建伟_Visual C++_Turbo C串口通信编程实践》是关于C++编程语言在串口通信领域的实战教程,由知名专家龚建伟编写。串口通信是计算机通信技术中的基础部分,广泛应用于设备间的数据传输,如嵌入式系统、工业控制、...
这份资源包含的是"现代交换技术"课程的习题答案,旨在帮助学习者理解和掌握该领域的核心概念、原理与技术。以下将对现代交换技术的一些关键知识点进行详细阐述。 1. **交换原理**:交换技术的核心是通过交换节点...
总之,这个现代交换技术的教学视频系列全面覆盖了交换技术的理论与实践,是学习者深入了解网络通信、提升专业技能的宝贵资源。通过观看和学习,可以对网络中的数据交换有更深入的理解,并能够应用到实际网络设计和...
现代交换技术是信息技术领域中的重要学科,主要研究通信网络中数据和语音的交换方式与机制。这门课程通常包括多个章节,涵盖了交换系统的原理、设计和应用等方面。在这个压缩包中,我们找到了北邮(北京邮电大学)的...
此外,《串口通信编程实践(第2版)》很可能还讨论了跨平台编程的问题,因为不同的操作系统对串口的处理方式可能存在差异。书中可能提供了一些通用的库,如Boost.Asio,以帮助开发者编写可移植的串口通信代码。 最后...
交换与通信网的概念密切相关,两者共同构成了我们日常使用的互联网基础设施。本课件深入浅出地讲解了交换技术的基本原理及其在通信网络中的应用。 首先,我们从第1章开始,探讨“交换与通信网”。这一章节可能涵盖...
《Visual C#网络编程技术与实践》是一本深入探讨如何使用C#进行网络编程的专业书籍。作者梅晓冬通过本书,旨在帮助读者掌握利用.NET Framework和C#进行网络编程的各种技术和实战技巧。源代码提供了丰富的实例,使得...
想学习路由和交换技术,往网络工程师方向发展的可以看看。
《Unix/Linux编程实践教程》是一本深入探讨Unix/Linux系统编程的权威指南,旨在帮助读者掌握在这些操作系统环境下进行程序开发的核心技术。这本书涵盖了广泛的主题,包括文件操作、进程管理、网络编程、信号处理以及...
《vC串口通信编程实践第2版》是由龚建伟编著的一本关于计算机通信技术的专业书籍,主要聚焦于使用vC(Visual C++)进行串口通信的实践操作。这本书是第二版,通常意味着它包含了第一版的精华内容,并在原有的基础上...
《C++并发编程实践》这本书由Anthony Williams编写,是一本深入讲解C++多线程编程技术的专业书籍。本书旨在帮助读者掌握C++中的并发编程技巧,并通过大量的示例代码来加深理解。 **并发编程**是指在计算机程序中...