“在这个房间里,有多少人参与过软件项目,在项目过程中需求发生了重大变化?”
您在本网站上找到的大部分内容都是文字,但我知道许多人喜欢视频体验。我没有涉足视频制作,这是一项艰巨的工作,而且我认为不值得。但我确实会发表演讲,而且现在这些演讲通常都会被录制成视频。因此,我将所有我参与过的演讲和其他视频资料整理到这个页面上。
我会重复演讲,因此有几个演讲有多个视频版本可供选择。我还在此页面上放置了一些有用的链接,以帮助您探索演讲本身以外的内容。
“在这个房间里,有多少人参与过软件项目,在项目过程中需求发生了重大变化?”
敏捷软件开发的基本要素以及您在学习过程中如何获得流畅度
英国曼彻斯特
阿姆斯特丹
曼谷
为什么敏捷方法如此有效?
与 Neal Ford 合作
Neal Ford 和我在巴黎的 USI(2010 年)上发表了一个关于敏捷方法为何有效(而不是如何有效)的演讲。这探讨了使敏捷有效的一些核心力量,而不是关注技术。我们特别关注了沟通和反馈的作用,以及它们在敏捷环境中的相互作用。
遗憾的是,视频似乎被截断了,并在演讲中途结束。我一直无法弄清楚如何发布完整视频。
巴黎
拉斯维加斯
我们应该扼杀敏捷软件开发吗?
与 Dave Thomas、Jez Humble、Katherine Kirk 和 Tatiana Badiceanu 合作
2014 年,Dave "Pragmatic" Thomas 对敏捷软件世界的现状感到不满,他说敏捷已死。奥尔胡斯 goto 大会的主办方长期以来一直积极探索敏捷风格,他们认为这是一个很好的机会,可以将他和本人(作为宣言的两位作者)以及一些一直在接受敏捷方法并在该领域使用和扩展敏捷方法的人聚集在一起。
奥尔胡斯
软件开发中最重要的因素是用户和开发人员之间的沟通
与 Daniel Terhorst-North 合作
我和我的同事Daniel Terhorst-North在 2007 年 QCon 大会上发表了主题演讲。我们都认为开发人员与其客户/用户之间的差距是软件开发中最大的问题。(我们本来想称之为鸿沟,但这个词被过度使用了。)在这里,我们讨论了这种差距,为什么它很重要,以及我们需要做什么来跨越它。我们特别指出,传统中间人业务分析师的角色就像一艘渡轮,而我们真正需要的是一座能够让开发人员与其客户直接联系的桥梁(分析师可以建造和维护这座桥梁)。这是我最喜欢的联合主题演讲之一,因为它认为这个主题非常重要,而且因为 Dan 是一位非常有启发性的联合演讲者。
伦敦
架构是重要的东西,无论它是什么。
自从敏捷方法出现以来,关于软件架构应该在敏捷项目中扮演什么角色(如果有的话)一直存在着激烈的争论。这在很大程度上取决于您认为架构应该是什么。
什么是架构以及为什么它很重要
俄勒冈州波特兰
在自主团队的世界中,架构扮演着什么角色,我们如何实现它?
与 Birgitta Böckeler 合作
布达佩斯
在设计上花费精力的意义在于提高生产力——快速交付功能
人们经常通过指出对更高工艺和质量的需求来证明软件设计方面的努力是合理的。我的观点是,这种说教式的论点是错误的,我们应该关注经济效益。随着时间的推移,大多数软件工作都会放缓,因为糟糕的设计决策的负担会拖慢我们团队的速度。注重设计可以减少甚至逆转这种情况。
我发现技术债务的比喻是思考糟糕设计后果的好方法——我们是支付利息还是偿还本金。有些人认为技术债务不是草率设计的产物,但我指出技术债务有多种原因,即使是最好的团队也会产生一些技术债务。
拉斯维加斯
旧金山
架构师应该在敏捷项目中发挥重要作用,尽管作用不同。
与 Rebecca Parsons 合作
在 2008 年旧金山 QCon 大会上,Rebecca Parsons 和我发表了一个关于敏捷方法如何与企业架构团队合作的演讲。目前,敏捷项目团队和架构团队之间存在很多不信任和冲突。我们深入探讨了为什么会这样,并探索了这些团队如何协同工作的方法。
旧金山
六边形架构,选择如何与数据库交互,以及如何使用 Ruby on Rails 等框架进行设计
与 Badri Janakiraman 合作
什么是架构,为什么它很重要,以及我们如何确保它发生?
与 Molly Dishman 合作
软件架构是一个定义不清的概念,它从建筑行业借用了不恰当的术语。我们将架构视为系统最重要属性的选择,重点关注那些难以更改的内容。架构是可以随着系统增长而演变的东西,但只有通过努力和关注才能确保它得到照顾。我们可以通过结合初始构想和持续努力来做到这一点。
(达拉斯视频包括问答环节,总共 65 分钟。)
波士顿
达拉斯
构建软件,以便您始终可以部署当前代码,从而降低风险并获得更快的反馈
英国曼彻斯特
架构既重要,又不需要传统的软件架构师
与 Erik Dörnenburg 合作
“软件架构师”这个头衔带有很多含义,而且通常都不太好。开发人员认为他们是纸上谈兵的人,他们身处象牙塔,已经忘记了如何编写代码。项目经理认为他们是追求完美的技术人员,而这些完美主义的追求却服务于一些模糊的技术目的。然而,对于任何软件项目的成功来说,架构都是至关重要的,尤其是在当前人们对微服务架构兴趣浓厚的情况下。
我们认为,即使没有传统的架构师角色,我们也可以支持良好的架构,并引入一些技术来获得良好的设计和可持续的应用程序。
布达佩斯
微服务是 2014 年最热门的软件架构
柏林
悉尼
英国曼彻斯特
我们以一种不敬但批判性的眼光看待主流的 SOA,并提出了一种替代方案
与 Jim Webber 合作
我的同事 Jim Webber 在企业集成方面采用轻量级和面向业务的方法,并因此享有盛誉。他还以其强健有力且引人入胜的演讲风格而闻名。因此,当我在 2008 年 QCon 大会上与他一起做主题演讲时,我既紧张又兴奋。他准备了一场妙趣横生的演讲,其中穿插着一些严肃的干货。然后我们就全身心地投入其中——可能是演讲前喝的那一品脱啤酒起了作用。我们谈到了企业集成的历史、那些自以为强大但实际上只是臃肿的系统的增长、敏捷思维的作用、网络的影响(包括 Jim 关于网络发明原因的独特理论),以及这些因素如何导致了游击式 SOA。
伦敦
使用可执行代码定义您的基础设施配置
悉尼
在我的职业生涯中,我遇到过许多被称为“事件驱动”的架构。但我发现这个短语有很多不同的含义,我将其归纳为四种模式的组合。
2016 年年底,我参加了 Thoughtworks 高级开发人员的架构峰会,探讨了我们在“事件驱动”标题下所做的各种工作。我们确认,这个短语会导致截然不同的理解,而且经常混淆在一起。我们发现,关注四种模式更有帮助,我们可以更精确地定义这些模式
芝加哥
David Heinemeier Hansson 在 2014 年的 RailsConf 大会上发表了一次具有挑衅性的演讲,这引发了一系列的 Hangouts 讨论,他和 Kent Beck 以及我一起讨论了 TDD 在软件开发中的作用。
与 Rebecca Parsons 合作
伦敦
像使用版本控制一样对待所有数据
悉尼
通常,当人们说数据结构是无模式的时候,他们错了。模式是存在的,它只是一个隐式模式。
阿姆斯特丹
旧金山
NoSQL 数据库简介,涵盖数据库类型、一致性问题以及它们在数据存储中的作用。
“NoSQL”一词的起源是 Twitter 聚会的标签,但它们变成了对关系数据库二十年霸权的最严峻挑战。由于其名称的偶然性,它们涵盖了范围很广的内容,而且没有太多定义——但将其中许多内容归入面向聚合的数据库的旗帜下是很有用的。
NoSQL 数据库引入了关于一致性的问题,但值得记住的是,即使使用 ACID 事务,我们仍然经常需要在应用程序中管理并发更新。许多 NoSQL 数据库支持分布式数据的能力进一步复杂化了一致性,导致 CAP 定理在一致性和可用性(以及响应时间)之间进行权衡。这种权衡从根本上说是一个业务决策,而不是技术决策。
NoSQL 数据库是满足现代数据需求的严肃选择,但不是唯一选择。我们现在正处于多语言持久化的时代,我们必须根据特定的数据访问需求选择数据存储技术。
这是我最受欢迎的演讲(原始的 goto 奥胡斯视频的观看次数超过 750,000 次)。
奥尔胡斯
科隆
NoSQL 数据库如何改变我们对数据库一致性的思考方式?
旧金山
我对敏捷软件开发的最大问题,以及由此引发的问题。
这是一个很难描述的演讲。通常我喜欢用标题和摘要来描述演讲的内容——但这次演讲是一次旅程,我不想告诉你我要去哪里,而是想和你一起探索这片土地。我要说的是,它始于我对大多数敏捷软件开发采用方式的最大问题——用户、分析师和程序员之间的交互性质。它继续探讨了这些角色,提出了关于程序员与用户的关系、我们对用户的责任,以及我认为程序员需要面对的两大挑战的问题。
慕尼黑
墨尔本
柏林
软件开发人员有责任保护互联网上的隐私
与 Erik Dörnenburg 合作
软件专业人员不能认为自己仅仅是接受指令的人,只做资助者要求我们做的事情,我们有责任为我们的软件如何影响用户和更广泛的社会负责。即使我们认为自己没有什么可隐瞒的,我们的隐私对于保护那些防止腐败和促进社会进步的麻烦制造者也是必要的。电子邮件向在线服务的转移导致了电子邮件提供的集中化,这令人担忧,这使得对我们一种重要通信形式进行大规模监控变得更加容易。即使是看似无害的拦截也会导致严重的问题,因为这些关于我们的信息对企业来说是有价值的,即使对政府来说是无害的。
我们需要通过努力扩大电子邮件加密的使用来减少这些问题,这样大规模监控的成本就会变得令人望而却步。这方面的挑战主要是用户体验和软件打包方面的挑战,而不是需要对密码学有深入了解的挑战。
(本次演讲的前 12 分钟是我“不仅仅是代码猴子”演讲的压缩版。)
奥尔胡斯
与 Erik Dörnenburg、Ola Bini 和 Tim Bray 合作
奥尔胡斯
我的演讲大多是会议主题演讲,在过去的一二十年里,我一直以“21 世纪的软件开发”为题进行主题演讲。这个标题故意含糊其辞,让我可以相当自由地谈论我当天喜欢的任何内容。近年来,我将这些主题演讲构建成《系列演讲》,在主题演讲时段进行了两到三次,每次二十分钟的演讲。由于这些演讲都进行了视频录制,我鼓励会议组织者将视频拆分,并单独发布每个演讲,而不是将其捆绑到整个系列中。在这个页面上,我分别描述了这些简短的演讲。并非所有视频都将这些演讲片段分开,因此对于那些合并了它们的视频,我链接到了视频的中间部分,以便尽可能接近视频允许我接近实际演讲片段的开头(这些片段用“✂”标记)。
使用可执行代码定义您的基础设施配置
悉尼
像使用版本控制一样对待所有数据
悉尼
非确定性测试是一种疾病,它会破坏测试的所有价值。
拉斯维加斯
在设计上花费精力的意义在于提高生产力——快速交付功能
人们经常通过指出对更高工艺和质量的需求来证明软件设计方面的努力是合理的。我的观点是,这种说教式的论点是错误的,我们应该关注经济效益。随着时间的推移,大多数软件工作都会放缓,因为糟糕的设计决策的负担会拖慢我们团队的速度。注重设计可以减少甚至逆转这种情况。
我发现技术债务的比喻是思考糟糕设计后果的好方法——我们是支付利息还是偿还本金。有些人认为技术债务不是草率设计的产物,但我指出技术债务有多种原因,即使是最好的团队也会产生一些技术债务。
拉斯维加斯
旧金山
通常,当人们说数据结构是无模式的时候,他们错了。模式是存在的,它只是一个隐式模式。
阿姆斯特丹
旧金山
慕尼黑
墨尔本
NoSQL 数据库如何改变我们对数据库一致性的思考方式?
旧金山
微服务是 2014 年最热门的软件架构
柏林
悉尼
英国曼彻斯特
敏捷软件开发的基本要素以及您在学习过程中如何获得流畅度
英国曼彻斯特
阿姆斯特丹
曼谷
构建软件,以便您始终可以部署当前代码,从而降低风险并获得更快的反馈
英国曼彻斯特
我对敏捷软件开发的最大问题,以及由此引发的问题。
这是一个很难描述的演讲。通常我喜欢用标题和摘要来描述演讲的内容——但这次演讲是一次旅程,我不想告诉你我要去哪里,而是想和你一起探索这片土地。我要说的是,它始于我对大多数敏捷软件开发采用方式的最大问题——用户、分析师和程序员之间的交互性质。它继续探讨了这些角色,提出了关于程序员与用户的关系、我们对用户的责任,以及我认为程序员需要面对的两大挑战的问题。
慕尼黑
墨尔本
柏林
构建支持敏捷项目的代码库的关键实践。
当人们谈论敏捷方法时,他们通常关注的是产品和项目管理方面的事情。交付小版本,从每个版本中学习,使团队能够在我们了解用户需求时快速改变方向。这使得我们能够在不确定的环境中快速构建提供价值的软件。
这种工作方式有很多价值,但要使其发挥作用,我们需要一个支持快速变化的代码库,不仅要改变其细节,还要改变其整体架构。为了构建这样的代码库,我们需要几种技术实践,这些实践支撑着敏捷流畅度模型的交付区域。
曼谷
奥尔胡斯
与 Scott Shaw 合作
Thoughtworks 经常组织“季度技术简报”——在我们设有办事处的城市为社区举办的公开演讲。在多伦多举行的这次季度技术简报中,Scott Shaw 和我谈论了如何建立 IT 和业务之间的新关系。它解释了为什么我们认为应该解散 IT 部门。
多伦多
伦敦
与 Zack Exley 合作
伦敦
与 Giles Alexander 合作
移动设备在流量中所占的比例仍然小于传统网络,但其份额正在增长,因此我们需要考虑制定有效的移动应用程序开发战略。我们讨论了产品愿景,将用户参与风格分为“前倾”、“后仰”和“低头”三种风格;同时将它们整合到一个跨媒体应用程序中。我们谈论了为什么关注价值比关注流量更重要,激光和覆盖所有平台的平台战略,并认为 Android、iOS 和 Web 是三个可行的平台选择。Giles 最后以我们与一家大型航空公司的合作案例研究结束了演讲。
伦敦
与 Jez Humble 合作
墨尔本
为了在现代数字业务中取得成功,你需要一个技术娴熟的组织。文化、人才和技术是如何融合在一起创造出这样的组织的?
人们都在谈论将企业转型为数字化组织,这固然很好,但如果没有一个能够出色完成工作的技术组织,这一切都是不可能实现的。
Nicole Forsgren 做了一项研究,将 IT 绩效与组织绩效相关联,以及她的 DevOps 研究如何确定了 IT 绩效的三个重要指标:部署频率、部署交付周期和平均恢复时间。彩票的简单例子说明了快速周期时间的货币价值。
我们观察到的高绩效技术团队的特征包括:使用持续交付、以业务为导向的组织、技术领先,以及在信任的氛围中运作。要想走得更远,你需要朝着正确的方向前进,但也要照顾好你的交通工具。
墨尔本