首页 > 编程语言 >[技术讨论]交换编程实践与延续

[技术讨论]交换编程实践与延续

时间:2023-04-17 12:35:05浏览次数:34  
标签:这个 一个 编程 交换 实践 问题 考虑



老兄弟老问题

昨天在成都见到了以前一起工作的弟兄,他现在还在原来的单位工作,还在做原来的项目,我听说了原来那个公司的最新情况,感觉:他们终于熬出来了。

期间,他就提到他们目前有一个问题,每个人负责一个大的模块从头到尾,结果每个人的模块自成体系,在检查错误与测试的时候遇到了很多问题,主要是因为每个人的自查起不到效果,同时由于每个人做自己的模块都已经有四年之久了,这样的结果使得每个人都对自己开发的代码有相当高的认可程度,因此在进行新版本开发的时候,就很难进行调整和人员间的协调,当然还有因此产生的一些关联问题。

这个项目的背景在交换编程那篇文章中作过简单的介绍,目前这个项目已经进入了第四期,可是同样这个第四期,还是处在MIS系统阶段,始终没有突破我04年那篇规划中提到的第二阶段:专家系统。

由于最高领导有了变更,所以,我甚至有了想帮助他们完成这个项目后续进展的考虑,当然,这个考虑目前对我来说,还只是一厢情愿。

好了,废话少说,我继续前面的问题。

当听到这里,我就问他,是否还记得当年做完需求后,我给大家提到的要求进行轮流交换开发的事情,他说他有印象,但是,不明白为什么。

于是,我给他讲了一下交换编程这样做的好处,这样做,正好可以解决他们目前遇到的那个问题。

其他朋友的疑问

说道这里应该提一下另外有一个朋友的疑问(这个朋友的疑问是写在程序员杂志blog上的内容,我在这里做一个回复):

关于交换编程,我也考虑过很多,在很久以前想想结对编程的时候,就考虑过,感觉上交换编程有一些问题不好解决: 1:每个人都要理解上一个人的思想,思路,这样的时间应该是比较耗费的, 2:每个人都有一定的思维惯式,交换的时候,缺少一个人在身边,这样很有可能这个人把上一个人的思维更改成自己的思维模式(比如文档,代码),这样很有可能给后面的人和原作者带来一定的困扰。 3:接手的人,是否会为上一人擦屁股,如果上一个人写的比较差的话,那么接手之后,如果接手得人没有责任心的话,那么可能就会让差的代码越发的差,这样可能发生代码腐烂的问题。我觉得人总是受环境的影响比较大,特别是一些没有特殊洁癖得人,比如一段代码写了注释,那么后来得人,可能接着写,如果前面的人就马马虎虎,凑合的话,那么后面的人会更凑合,就像Tom Demarco的那本《程序员修炼之道》中说得救火队员去救火的那个故事一样,如果屋子干净的话,队员都要扑上垫子,才敢进去救火。 当然了,如果上面的全部反过来的话,这个就是一个比较好的实践了:)

这里我一个一个回答:

1、关于理解前一个人思路的问题,这里应该根据工程项目情况和团队组织以及人员变动情况进行综合考虑,如果一个人在公司的时候,你都无法理解这个人的思路,那么当这个人因为某种原因离开公司后,你还能让原来的模块继续下去么?

这里一个潜在的问题就在于这个公司这个团队在项目开发过程中是否有一个整体的规划和考虑,如果完全是一盘散沙的合作,那么,交换编程也比单人编程更有优势,毕竟,你进行交换的时候,大家都还在公司内,如果离开了,岂不是更是断层了?

这个时间的耗费是否值得,我相信每个人都能衡量得出来。而另一方面考虑,如果一个人所写的东西无法被第二个人所理解,那么这个人的工作,岂不是没有任何价值了?那你要这个人来做事,明摆着是把自己放在了即将喷发的火山口上!

2、这个问题同样也是交接的问题,另外就是整个团队是否具有整体性,大家做的东西是各自为战,还是有一个相对统一的规划考虑。最基本的规划考虑是必然要存在的,否则,这个团队也就不是团队,这个项目也不可能成功。

另外,每一个人给第二个人讲解自己想法的时候,其实也是主动地对自己的开发过程和思路进行了一次完整的review(重新评价),讲得过程中就会让他自己想到一些自己没有考虑成熟的电荷一些还有疑虑的问题,通过这种交流,就可以将这些问题扩大化,摆出来,让所有的人都看到,这样才能及时地解决,否则,这些问题就会隐藏起来,直到项目结束的时候再被发现,那时候,就不是坐在火山口上了,而是直接调进了熔岩里。

3、这个问题我个人认为,是不需要讨论的。因为如果经过这样的交接,项目领导者也会发现第一个人是否是在做事情,是否称职,如果说第二个人就是在给第一个人擦屁股,那么,第一个人是否应该存在在这个团队中,他存在是否有价值,这就是管理者应该考虑的直接问题。

同样,这种擦屁股,也会把隐藏起来的未知的问题显性化,让大家都看到每一个人所做的事情的价值,对于评定程序员的工作量和工作质量无疑是有好处的,而且具有现实意义(现实意义就是说不是单纯的指导意义,而是可以直接付诸实施的措施)。

我相信经过上面的解释,应该可以说明交换编程的作用了,这其实也是把同行评审工作直接放入到开发过程中来进行,将那些可能流于形式的同行评审变成了现实中的开发实践。

标签:这个,一个,编程,交换,实践,问题,考虑
From: https://blog.51cto.com/tsingrun/6194953

相关文章

  • [技术讨论]看了73篇极限编程论文后的感觉和一点总结
    最近两周的时间里,我看了73篇极限编程的论文,其中68篇是主要写结对编程的论文。在这些论文中,我看到了各个国家的文章,欧洲,北美,澳洲,少量亚洲的论文,其中看到了大概四五篇来自国内大学与国外大学或者研究机构合作的论文。国内这些大学的名字就不提了。我看到美国的一些结对编程的论文参与......
  • eBPF动手实践系列一:解构内核源码eBPF样例编译过程
    作者:闻茂泉他山之石了解和掌握纯c语言的ebpf编译和使用,有助于我们加深对于eBPF技术原理的进一步掌握,也有助于开发符合自己业务需求的高性能的ebpf程序。目前常见和主流的纯c语言的ebpf编译使用方法,主要是两种。一种是内核源码中原生提供的编译方式。另外一种是libbpf-bootstrap项目......
  • 编程中最难的就是命名?这几招教你快速上手
    前言本文转载于阿里开发者公众号,具体详见:编程中最难的就是命名?这几招教你快速上手正文 你可不能像给狗狗取名字那样给类、方法、变量命名。仅仅因为它很可爱或者听上去不错。在写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住......
  • 2023.4.16编程一小时打卡
    一、问题描述:线性代数里面我们学习过n维向量,请用类vector_N来封装n维整型向量,成员如下;私有数据成员: 向量维数n,int型指针p,int型公有函数成员:无参默认构造函数,在该函数中,将n置0,将p置null;重载输入输出运算符,输入运算符,先指定向量维数,若输入为非正整数,则提示错误信息,“Error......
  • Rust编程语言入门之智能指针
    智能指针智能指针(序)相关的概念指针:一个变量在内存中包含的是一个地址(指向其它数据)Rust中最常见的指针就是”引用“引用:使用&借用它指向的值没有其余开销最常见的指针类型智能指针智能指针是这样一些数据结构:行为和指针相似有额外的元数据和功能引用计数......
  • DAPLink源码生成Keil工程并编译成功——笔记(实践篇)
    本文介绍使用DAP源码生产Keil工程的步骤。一、前期准备工作以下1~4为步骤:1.安装Python3(https://www.python.org/downloads/),并添加至路径PATH,此处忘截图了,总之看见pip、alluser、addtoPATH之类的就勾选。(网上也有些帖子说暂时不支持Python3要用Python2.7的,本人实测Pyt......
  • 编程语言和编程工具
    使用过的语言:C、JavaC语言的优势:C语言编写的代码效率高,运行速度快。C语言的语法和功能简单,易于学习和理解。C语言具有很高的可移植性,可以在多种不同的平台上运行。Java语言的优势:Java语言是一种跨平台的编程语言,可以在不同的操作系统和硬件平台上运行。Java语言有很多强大......
  • Drone+前端 实践
    1.nginx.confusernginx;worker_processes1;error_log/var/log/nginx/error.logwarn;pid/var/run/nginx.pid;events{worker_connections1024;}http{include/etc/nginx/mime.types;default_typeapplication/octet-stream......
  • 响应式编程初探
    响应式响应式系统(ReactiveSystem)具有以下特质:即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(MessageDriven)响应式系统更加灵活,松耦合,可伸缩即时响应性只要有可能, 系统就会及时地做出响应。即时响应是可用性和实用性的基石,而更加重要的是,即时响应意......
  • 每日编程一小时(第七天)
    一.问题描述找两个数的最大公因数。二.设计思路1.输入两个数2.比较两个数的大小3.大数求余小数4.循环除数做被除数余数做除数,直到余数为0,被除数就是最大公因数三.流程图 四.代码实现#include<stdio.h>intmain(){inta,b,c,m,n;scanf("%d%d",&a,&b);......