【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

敏捷实践的另一种声音

  • 2013-06-16
  • 本文字数:2258 字

    阅读完需:约 7 分钟

敏捷实践已经获得了越来越多软件公司的支持和推广,但是 Jim Bird 最近在一篇文章中指出,某些敏捷最佳实践其实可以无需遵循,因为它们不会给你带来太多好处,有时甚至是负面影响,这些“不重要”的实践包括:测试驱动开发、结对编程、每日站立会议等。

测试驱动开发

做快速开发的团队需要依赖于一个快速高效测试安全网。在一个测试先行的或者是测试驱动(TDD)的敏捷开发中,没有任何借口可以不写测试用例。在开始编码前你必须先写好测试用例,然后就可以采用一些高效的自动测试工具来保证有一个高水平的覆盖测试和回归测试。TDD 不仅仅是一种供开发人员测试他们代码的保证手段,它更重要的一种开发技术,这种开发技术能够得到更高质量的代码和一个简单整洁的设计。

微软和 IBM 的研究团队发现,虽然 TDD 增加了 15%-35%前期成本(TDD 要求开发人员改变他们的想法和工作方式,这减缓了他们的的开发速度,至少在一开始他们的开发速度慢了很多),但是跟没有采取单元测试的团队相比缺陷密度降低了 40%(IBM)或多达 60%-90%(微软)。

Burak Turhan 主导的研究表明虽然 TDD 表面上提高了质量并且可以提高测试的质量,但 TDD 并不能一直提高设计质量。TDD 似乎可以降低代码的复杂度,提高代码的重用率,但是它也能给耦合内聚带来负面的影响。虽然使用测试驱动的开发可以使得方法级和类级的复杂度降低,但包级和项目级却为之变得更加复杂。

结对编程

根据 VersionOne 的敏捷开发调查状况,几乎有 1/3 的团队采用了结对编程的开发方式——这是一个出乎意料的高数字,这显示出结对编程的良好的组织纪律性,同时表明有很多的团队使用了可以进行结对编程的 XP(2%)和 Scrum/XP(11%)方法。

采用结对编程的非常好的理由包括:

开发人员一起工作可以通过持续的非正式的审查来提高代码质量和进行信息共享。让开发人员结对或者让开发人员和测试人员结对来一起工作的情况非常常见,尤其是当你在解决一个非常困难的设计问题,或者你碰到一段以前从来都没有接触过的代码而以前开发过类似代码的人就在旁边可以请教,或者你碰到了一个高压力的问题需要解决为此你豪无头绪,或者你在测试系统的一个非常难的部分,或者你的团队又加入了新的成员而这些成员需要基础学习的时候。

一些(尤其是性格外向的)人非常喜欢结对编程,喜欢它提供的非常强大的能量和非常难得的认识团队其他成员的机会。但是去强迫那些更喜欢自己单独工作的人去和自己不喜欢的人进行紧密的合作,这显然不是什么明智的作法。结对编程要花费社交成本:和一些有能力的、技术强的、有工作经验的、有自己独特方式的、有自己鲜明个性的或者是有自己职业道德的人一起结对编程你需要非常小心。而且长时间的结对编程让人精疲力竭——一项研究(Vanhanen and Lassenius 2007)发现人们通常一天只结对编程 1.5 至 4 个小时,因为成天的结对编程工作强度太大以致于无法接受。

在结对《编程或许是有害的》一文中,Jon Evans 说结对编程对创造力有负面影响:

当在享受更多的不被打扰的自由和隐私空间时,人们才有最好的创意…区别表现突出的大公司的开发人员的并不是更丰厚的工作经验和更高的薪酬,而是他们可以享受的不被打扰的自由的私人空间。”一篇纽约时报的文章大骂结对编程这种所谓“新的集体思维”时这样说。

另外在 Pete McBreen 的“依然质疑极限编程”中指出了一些结对编程的其他缺点和弱点:

  • 不鼓励钻研思路,结对编程时开发专注编写代码,所以除非有一天的时间来钻研团队代码才能对代码有一点肤浅的理解。
  • 开发变得过度依赖单元测试,假如测试通过了,那么代码就 OK 了。(这就缺乏钻研了)
  • 没有进行详细的极端测试和边缘测试研究,特别是如果他们很难写出测试。
  • 当结对编程时很难做到经过详细思考设计的编码,除非另外一个搭档完全控制这个编码过程。通过平时搭档间的权衡,很难建立技术复杂的设计,除非他们已经确定了一个独自会话。
  • 结对编程时的个人风格问题,并不是所有的结对者都能像其他人一样。
  • 和打字技能、熟练程度不同的人结对编程,往往会导致打字技能好的人完成全部的编码而其他人变得完全被动。

虽然结对编程相比独自编程提高了代码质量,你也可以通过较低代价的代码复审来获得同样的代码质量提高,并且还有一些信息共享的优势。代码复审——特别轻便,离线复审——比结对编程更容易安排,代价更低点并且没有打扰。就像詹森科恩指出的那样,即使开发者们结对编程,你或许仍然需要代码复审, 因为结对编程确实是共同解决问题,但是它并没有包含所有代码复审所涉及的全部问题。还是乔恩埃文斯关于结对编程的老话:

真正的答案是没有答案:独自编程、结对编程还是小组合作要根据环境用你最好的判断来动态结合才是最有效的。 结对编程的确有它存在的意义。(定律又没用了!)在某些情况下,甚至是“绝对对的”。但是坚持 100% 结对编程是盲目的教条主义,和所有的盲目教条主义一样,最终只会适得其反。

每日站立会议

当你有了一支新的团队,而每个人都需要相互了解,并且需要更多的时间理解项目是关于什么的;或者当这个团队迫于上级压力,正在试图修复些什么或者结束些什么的紧急的状况,那么将大家聚集起来开工作例会,甚至也许一天超过一次,这是必要的且有价值的。但是每个人是站还是坐,最终他们在会议上讨论些什么,将由你决定。

如果你的团队已经合作一段时间也合作的很好,而他们每个人都互相了解并且知道他们在做的是什么,如果开发人员做完事情的时候,在任务板或看板上更新卡片,或者在一个电子系统里更新状态,如果他们足够成熟可以在需要的时候请求帮助,那么你不需要每个早上在房间里 让他们都站着。

2013-06-16 10:321683
用户头像

发布了 501 篇内容, 共 248.1 次阅读, 收获喜欢 57 次。

关注

评论

发布
暂无评论
发现更多内容

Stepn跑鞋/Jogger慢跑者NFT系统开发案例

薇電13242772558

NFT

数字孪生(Digital Twin)快速入门:简介以及应用示例

龙智—DevSecOps解决方案

数字孪生 digital twin

亚信安慧荣获第二届“鼎信杯”优秀技术支撑奖

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 7 月 PK 榜

Cnetos7系统---文件压缩与解压命令详解。

百度搜索:蓝易云

云计算 Linux centos 运维 云服务器

出海是产业互联网发展的必然趋势之一

用友BIP

产业互联网 中企出海

8月31日,上海!第十八届中国IDC产业(长三角)年度大典即将召开!

中国IDC圈

数据中心

第二届“鼎新杯”数字化转型应用大赛-全国入围赛结果公示及最佳人气案例投票启动

信通院IOMM数字化转型团队

数字化转型 IOMM 鼎新杯

DevOps国际峰会 | 采访龙智总经理,分享DevOps见解与行业趋势

龙智—DevSecOps解决方案

DevOps 金融行业 devops国际峰会

服装行业MES系统解决方案|免费使用MES系统

万界星空科技

开源 MES系统 服装行业

西安航天基地人才创新创业大赛正式启动

华为云PaaS服务小智

西安 大赛 比赛 西安航天 企业人才

户外LED显示屏怎样在5G时代下发展?

Dylan

5G 广告 数字化 城市 户外LED显示屏

故障注入的方法与工具

DevOps和数字孪生

故障注入 汽车行业

【云计算小知识】云环境是什么意思?有什么优点?

行云管家

云计算 云资源 云管 云环境

业财税档融合:大企业管理升级的必然选择

用友BIP

税务云 业财税档融合

软件测试 | MySQL存储引擎

测吧(北京)科技有限公司

测试

一份数据满足所有数据场景?腾讯云数据湖解决方案及DLC内核技术介绍

腾讯云大数据

数据湖

手把手带你初探Vue 3.0 | 京东物流技术团队

京东科技开发者

前端 Vue 3 VUE 3.0 源码 企业号 7 月 PK 榜

Ubuntu 18.04系统编译安装Nginx 1.22教程。

百度搜索:蓝易云

nginx 云计算 Linux ubuntu 运维

数智融合促进资产共享,实现企业资产效益最大化

用友BIP

资产云

宁波企业等保测评找哪家?怎么做?

行云管家

等保 等级保护 等保测评 宁波

软件测试 | MySQL字符集的设置

测吧(北京)科技有限公司

测试

软件测试 | MySQL字符集的修改步骤

测吧(北京)科技有限公司

测试

加速 Selenium 测试执行最佳实践

FunTester

全网最强分布式事务详解

程序员小毕

Java 分布式 分布式事务 后端 架构师

【升职加薪秘籍】我在服务监控方面的实践(1)-监控蓝图

蓝胖子的编程梦

elasticsearch 性能优化 Grafana 服务监控 #Prometheus

软件测试 | MyISAM是什么

测吧(北京)科技有限公司

测试

数字孪生搭高台,温控节能唱新戏

鲸品堂

数字孪生 建模 智慧机房

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

京东科技开发者

CRM CRM系统 企业号 7 月 PK 榜 系统化整合

从iOS App启动速度看如何为基础性能保驾护航 | 京东物流技术团队

京东科技开发者

ios 开发 企业号 7 月 PK 榜 APP冷启动 启动速度

安全文件传输:如何降低数据丢失的风险

镭速

文件传输 安全文件传输

比AD更好用的“PCB设计文件转生产文件”工具

华秋PCB

软件 工具 AD PCB PCB设计

敏捷实践的另一种声音_研发效能_崔康_InfoQ精选文章