免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

Naresh Jain 讨论“简单设计与测试”及其专题会议

  • 2010-07-04
  • 本文字数:2565 字

    阅读完需:约 8 分钟

“简单”这个价值观是敏捷的核心理念,特别是说到软件设计之时,甚至也是软件测试方法关注重点。从 2006 年开始,Gordon Pask 大奖得主 Naresh Jain 就在运作一个全球化的、以“开放空间”为形式的会议——“简单设计与测试会议”,让实践者们能够聚在一起,推动这个话题的发展,说明其真正含义和深层意义。

最近一次会议于印度孟买在6 月26 日、27 日召开,InfoQ 让Naresh 在百忙之中空出几分钟,告诉我们在这个小型却广为人知的会议之后都发生了什么,并说明他之所以对此话题充满激情的原因。

InfoQ:“简单测试与设计”(下文简称 SDT)对你来说意味着什么?为什么人们应该关注这个理念?

Naresh Jain:
“简单设计是什么?”“你的简单是否就是我的简单?”“我们是否总能为复杂问题找到简单的解决方案?”这些年来,我一直在寻找类似问题的答案。我觉得我还没有找到所有的答案,但是我已经可以肯定地告诉我自己:不影响我的工作进度的设计,就是简单设计。这个设计是否还能更简单?也许吧。有必要再简单么?不一定,除非它阻碍了你的前进。

测试是非常有意思的实践。它的深入程度和多样性可以与设计媲美。在测试和设计中,我们都能找到很强的对立性。一方面,存在测试妄想狂,他们希望能测试自己写的每一行代码。在另一个极端存在这样的开发人员,他们认为测试最好让第三世界国家的低等劳动力完成。很难找到能够正确平衡的人,这既需要具备对相关话题的真知灼见,还得有多年的一线真实实践。以我个人之见,社区必须要能找到正确的平衡点,这非常重要。不然我们就会错失良机。

InfoQ:因此,要找到这个平衡,对于你个人和其他人来说,也许就是推动你举办 SDT 会议的核心动力了?对于这个会议的意图,你还有什么要说的么?

Naresh Jain:
没错,提供能上手的、不断突破的环境,找到这些答案,这就是我一直渴求 SDT 会议达成的目标。再说,你去参加大型的敏捷会议,就会陷入大量关于流程的话题之中。即使你能参加一些技术方面的讨论,也是很基本的,很多时候还是在向与会者们(心存疑心的人们)说明进行演进式设计、TDD、自动化测试、低精度设计、持续集成、结对编程、持续部署等实践的价值。

我们在什么时间、什么地点才能推动这些话题的发展呢?我们如何才能不再讨论最基础的东西?人们在尝试这些实践,并在某些时候遇到问题;或者做出了某些决策,希望从真正的实践者那里得到反馈。他们应该去哪里寻求帮助?

我对于这个会议的目标,是希望创立一个安全的环境,让实践者们能够面对面交流,并尽最大可能拓宽他们的学习渠道,提升学习速度。

InfoQ: 是什么因素触动你要做这件事?为什么选择百分百“开放空间”的形式?

Naresh Jain:
我过去一直认为开放空间会议不适合技术话题,直到最近参加了第一届“持续集成和测试会议”。会上的学习质量让我大为吃惊。开发大型企业应用,要想产生“简单设计”并易于测试,是非常困难的。回溯到2006 年,这是我在手上所做的项目中遇到的2 个最大的难题。

于是我对自己说:我应该围绕着这两个话题组织一个会议,而且使用与“持续集成和测试会议”同样的开放空间形式。我跟Agile Philly 用户组的人们谈了谈,他们很喜欢这个主意。David Bogus 把我介绍给West Chester 大学,他们提供了第一次会议的场地。一年年下来,就这样发展起来了。我也挺惊喜的,真的。

InfoQ: 接下来的会议将是第五次了,恭喜!是什么激励你一直把这些 SDT 会议举办并领导下来呢?你从中学到的最重要的东西又是什么?

Naresh Jain:
在每次的会议上,我都能学到东西改变、提升我的编程风格。

举个例子,在第一次会议上,我们有一个非常有趣的话题——“没有勺子”,是 Corey Haines 带领的。后来我跟 Corey 一起结对编程,我们用这种方法尝试着写了一些测试驱动代码。当我处于“素描模式”——也就是不知道我需要什么对象的时候,用这种技术来推动测试驱动是非常棒的。

下一年,我主持了一个名为Avatars of TDD 的议题,我们讨论不同的人有不同的TDD 风格。我有机会与很多人一起结对,而且真得可以尝试很多想法,这些想法会影响我的 TDD 风格。同年,我们有另一个有趣的讨论——对于我的设计,我的测试告诉了我什么?这些年来,我已经在这个话题积累了很多模式。向大家解释不是测试的问题,而是设计需要改进(别把测试这个送信的打死),这让我受益良多。

去年,一个有趣的讨论是:消除某个代码异味(最大的臭味),将会解决代码库中80% 的设计问题。我学到的是:原始强迫症(Primitive Obsession,缺少正确层次的抽象)会导致大多数问题,包括代码重复和条件复杂度。

我提到了刚刚想到的一些内容,不过大家可以去看我们的wiki ,我们积累了很多有趣的话题(记录得也很周全)。是这些讨论和学习让我不断进步。

InfoQ: 随着 SDT 会议的前进,你希望看到哪些进展?

Naresh Jain:
啊,我希望人们不要再把“SDT 会议”与“STD 会议”【译注】这两个名字产生疑惑,后者当然会引起完全不同联想!不过也确实能让人们开怀大笑,所以那也不坏!

在目前的会议上,我们的确有很多关于设计和测试话题的密切讨论。我们有上手实做的课程,但没有我希望的那么多。我希望能有更多演示,而不仅是讨论。因为说到编程,最好是动手做,而不仅仅是空谈。空谈误国。

过去几年中,我们曾计划让人们在参会前先分享他们的代码,其中包括他们面对的设计问题。有了这样的语境,人们就能重构 / 重写他们的代码,并且在会议上看到不同的人展示不同的解决方案。这会引发更多学习。

我个人认为:参加这样质量的会议对所有的人都非常重要。因此,将其扩展到世界的其他部分很重要。我希望更多的人能够采纳会议的理念,并在他们自己所在的地方组织会议(类似于 Agile Coach Camp 发生的事情)。

InfoQ: 有哪些结论是你希望分享给社区的?

Naresh Jain:
我们正在看到更多更小规模的、上手实做的、以实践者为中心的、互相学习和探索的专题会议在世界各地涌现。这非常令人兴奋,因为我相信这些更小规模的会议设置能够激发真正的学习。实践者们需要找到经验验证的方法来提升他们的技巧和视角,而且与他人一起互相学习。不要等待别人组织,如果你对于某个话题充满热情,你也可以开始这样的活动。

感谢 Naresh!

译注:STD,sexually transmitted disease,你懂的。

查看英文原文: Naresh Jain Discusses “Simple Design & Testing” And The Conference Dedicated To It

2010-07-04 23:291185
用户头像

发布了 479 篇内容, 共 157.5 次阅读, 收获喜欢 49 次。

关注

评论

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

《垃圾回收的算法与实现》.pdf

田维常

垃圾回收

区块链,音乐,流媒体和版税

CECBC

区块链 艺术

Dubbo 接口,导出 Markdown ,这些功能 DocView 现在都有了!

程序员小航

markdown idea插件 IntelliJ IDEA 文档生成 Doc View

SQL数据库:窗口函数

正向成长

窗口函数

IoT企业物联网平台,从设备端到云端业务系统全链路开发实战

不吃米饭

阿里云 最佳实践 物联网 IoT

一次 Java 进程 OOM 的排查分析(glibc 篇)

996小迁

Java 编程 架构 面试 计算机

Jira停售Server版政策客观解读——如何最小化风险?

爱吃小舅的鱼

项目管理 研发管理 Jira Atlassian

#不吐不快# 三观很正的Boss,你遇到过么?

架构精进之路

职场成长 奇葩的经历 不吐不快

CSS 排版与正常流 —— 重学CSS

三钻

CSS 排版

什么是低代码(Low-Code)?

移动研发平台EMAS

工具 研发效能 低代码 开发 代码

DàYé的CTO姗姗学步路

曲水流觞TechRill

管理 CTO

Nginx-技术专题-技术介绍

洛神灬殇

【活动回顾】WebRTC服务端工程实践和优化探索

ZEGO即构

WebRTC 服务端工程

【涂鸦物联网足迹】涂鸦云平台消息服务—顺带Pulsar简单介绍

IoT云工坊

人工智能 物联网 云服务 Apache Pulsar 云平台

SpringBoot:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

比伯

Java 编程 架构 面试 计算机

区块链在债券市场如何应用

CECBC

区块链 债券

MySQL从库维护经验分享

Simon

MySQL 主从复制

前嗅教你大数据——什么是代理IP?

前嗅大数据

爬虫 数据采集 静态IP 代理IP 动态IP

synchronized 到底该不该用

古时的风筝

Java synchronized

小学妹问我:如何利用可视化工具排查问题?

田维常

可视化

云原生2.0时代下,DevOps实践如何才能更加高效敏捷?

华为云开发者联盟

云计算 数字化 华为云

科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同

华为云开发者联盟

华为 鸿蒙 IoT

高性能利器!华为云MRS ClickHouse重磅推出!

华为云开发者联盟

数据库 Clickhouse MRS

太赞了!腾讯T3-3架构师整理了5000页的Java学习手册免费开放下载

Java架构之路

Java 程序员 架构 面试 编程语言

Glide.with(view)挂在了谁的生命周期上

mengxn

生命周期 Glide Activity Fragment

#不吐不快# CV千千条,修改最重要。代码不规范,伙伴两行泪!

程序员小航

奇葩的经历 不吐不快

一瞬间让我秒变“快男”!腾讯内部强推Java性能优化手册,快了不止一点点。

Java架构追梦

Java 架构 jdk 面试 性能优化

圆通快递回应内鬼泄露用户信息:严打数据倒卖灰色产业

石头IT视角

什么是云服务?

anyRTC开发者

音视频 WebRTC 云服务 RTC

年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员

测试人生路

接口测试

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定

互联网应用架构

分布式事务 springboot

Naresh Jain讨论“简单设计与测试”及其专题会议_研发效能_Mike Bria_InfoQ精选文章