AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

信仰驱动的产业?热门词和指南 vs. 思考和审视

  • 2007-10-13
  • 本文字数:1415 字

    阅读完需:约 5 分钟

“由于某种原因,我们创造并追随信仰……。”James O. Coplien 就是这样描述当今的产业。他认为,这个行业如今是建立在热门词(buzzwords)和指南(checklists)的基础上,而不是建基于思考,审视和努力去找寻最合适且最节约成本的解决方案。

你引入到公司里的最新技术,你仔细考虑过它们的代价吗:Ajax、TDD、现场客户,或者其他热门词?你研究过它的发展轨迹吗?亦或你只是看过它的广告?

James 引用了一个例子,那就是在 JAOO 2007 Conference 的尾声时,一个 blog 上发生的关于 TDD 的争论。当争论焦点集中在“什么测试方法最好,是 TDD,亦或是验收测试”时,实际上这个问题本身就是一个错误。它掩盖了我们的真正目标。我们的目标是“交付用户想要的且最高质量的软件,为客户创造价值”。测试的确是在我们为提高质量而写到指南上的,但它远远不能涵盖真正影响质量的所有问题:

如果你没有正确理解客户想要的是什么,或者代码里有很难预计到的内部干扰,或者局部代码超过了数组边界,用了未定义的指针,都会出现质量问题;假如设计出来的交互界面允许用户提交非法数据,或者输入常规信息需要太多次按键,也同样是质量问题。

对于质量问题需要考虑我们“兵工厂”中的所有“武器”:

意思是:使用 UseCases(它是使客户融入项目的一个敏捷方法) 代替 XP 风格的用户故事(这样你可以提前理解特性间的相互作用),进行结对编程或频繁的代码走查,实行契约式设计,流程由可用性专家推进并做有效的可用性测试,以及其它一些事情。

Coplien 强调:什么事都做是不可能的,一定要考虑成本效率。但是一味地强调技术或者一味受到热门词的驱动,我们可能会局限于并非最有效的实践。某些技术或方法论的使用(例如 TDD)已经成了“一个信仰问题”,James 提到:

我们被告知“只有做 TDD 你才是一个专家”……,却不告诉我们为什么要相信这一点,没有证明,也没有证据。只是说“你就相信这一点吧,没错儿!”。

例如,Coplien 认为:集成与系统测试早就已经被证明是找 bug 最没有效率的方法;TDD 只会使架构恶化;而与传统的代码走查相比,验收测试的效率要低几个数量级,而且极其昂贵,由于是在最后阶段,对设计没有一点帮助。同时他也说,很难通过讨论来挑战这样的“信仰”问题,因为任何批评都是带有情绪的。

人们把敏捷的成功归于他们将 TDD 引入到工作中。TDD 是他们作为个体,不依赖于企业,所仅能做的事情。

Coplien 提倡关注质量而不是测试。更通俗一点说就是“关注思考而不是对指南亦步亦趋”。不管怎样,他都强调“理清这些东西需要从一个系统的角度”,而在当今的行业中是极其缺乏的。他认为“新时代的敏捷运动总是脱离”系统工程上的考虑。Coplien 还说到,“问题的根源在于现代教育,因为现代教育更注重技术而不是思考”。现在的学生“越来越不了解软件历史,而且只知道什么时候用–v,什么时候用 v–”,却“不知道做一些逻辑设计”。

学术界与产业之间的紧密关系也是该问题的一部分。大学更倾向于教授那些产业中所需要的课程,以便帮助学生就业。因此,对于学术界来说,向这种主流观点挑战就更难啦,可能和牛顿说服人们相信他“发现了宇宙运行的原理”有得一拼。

产业已经选择采纳那些 Agile、SOA 和编程语言热门词的既定解释,为了与这种普遍的误解作斗争,我们跟牛顿一样,面对的不仅仅是一种信仰,而且我们由产业资助的安逸的学术职位也同样受到威胁。

查看英文原文: Religion driven industry? Buzzwords and checklists vs. thinking and inspection

2007-10-13 12:34991
用户头像

发布了 100 篇内容, 共 24.3 次阅读, 收获喜欢 5 次。

关注

评论

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

学习一下:我的学习之道

非著名程序员

学习 程序员 程序人生 提升认知

听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理

小林coding

面试 计算机网络 计算机基础

Libra教程之:来了,你最爱的Move语言

程序那些事

比特币 区块链 以太坊 libra blockchain

一款开源的Diffy自动化对比测试框架:超详细实战讲解

狂师

开源 测试 测试驱动开发实战营 自动化测试

第二周总结

changtai

如何高效开会?

石云升

高效工作 时间管理 高效 开会

Spring BeanPostProcessor 你不能不知道的事

CoderLi

Java spring 程序员 源码分析 后端

第二周作业

大雄

依赖倒置

「架构师训练营」第 2周作业

旭东(Frank)

架构 极客大学架构师训练营

BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案(建议收藏)

程序员生活志

Java spring 面试 分布式 mybatis

面向对象设计原则

陈皮

【架构师第二周】总结

浪浪

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

小傅哥

设计模式 小傅哥 重构 代码优化

Redis系列之扫盲篇(一)

z小赵

Java 分布式 高并发系统设计

Libra教程之:Libra testnet使用指南

程序那些事

比特币 区块链 以太坊 libra blockchain

Libra教程之:运行自定义move modules

程序那些事

比特币 区块链 以太坊 libra blockchain

程序员开发色情游戏,赴日寻找AV女优真人拍摄,结果...

程序员生活志

程序员 游戏开发

架构师训练营作业 --Week2

吴炳华

极客大学架构师训练营

架构师训练营-week2命题作业

J.Smile

极客大学架构师训练营

【架构师训练营】第2周总结

花生无翼

极客大学架构师训练营

架构师训练营-第二周-作业1

狂奔嘀兔纸

极客大学架构师训练营

[Redis源码阅读]redis持久化

老胡爱分享

数据库 redis 缓存 持久化

架构师训练营第二周总结:软件开发简史和框架设计的方法

hifly

设计模式 极客大学架构师训练营

「架构师训练营」第2周作业 - 设计原则

guoguo 👻

极客大学架构师训练营

0616作业2

Geek_10

为什么 Vue 更符合这个时代的大势所趋

葡萄城技术团队

Vue SpreadJS

基于 Docker 实现 MySQL 主从复制

ytao

MySQL Dockerfile

2020年6月17日 MySQL基准测试

瑞克与莫迪

依赖倒置原则理解

Thrine

架构师训练营第二周总结

极客大学架构师训练营

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十二)编写测试-超时

编程道与术

Java 编程 TDD 单元测试 JUnit

信仰驱动的产业?热门词和指南 vs.思考和审视_研发效能_Sadek Drobi_InfoQ精选文章