睿诚科技协会

Jack Dorsey的编程技术核心是什么?

极致的简约、对底层系统的深刻理解、以及对实时性和稳定性的不懈追求。

Jack Dorsey的编程技术核心是什么?-图1
(图片来源网络,侵删)

下面我们从几个关键维度来详细解析他的编程技术。


技术哲学:简约主义

这是理解多西所有技术决策的基石,他深受极简主义美学的影响,并将其应用到软件工程中。

  • 少即是多:他认为最好的软件是“看不见”的软件,代码应该尽可能少,功能应该尽可能纯粹,一个复杂的问题,应该用最简单、最直接的方式解决,而不是引入更多的抽象层和框架。
  • 避免过度工程:在 Twitter 早期,团队曾面临“推文应该存放在哪里”的巨大技术挑战,是关系型数据库?是文件系统?多西和团队最终选择了一个看似“简单”的方案:将推文作为文本文件存储在文件系统中,这个决策在当时看来非常规,但它极其简单、快速、可靠,完美满足了 Twitter 早期“快速发布、快速迭代”的需求,这体现了他的哲学:用最简单的工具解决当下最核心的问题
  • 专注与克制:无论是 Twitter 还是 Square,其核心产品功能都非常聚焦,多西认为,一个伟大的产品应该像一把锋利的刀,只做好一件事,并且做到极致,这种哲学也延伸到了代码层面,每个模块、每个函数都应该有明确的单一职责。

编程语言与技术栈偏好

多西本人是多种编程语言的专家,但他的选择始终围绕“简约”和“高效”这两个原则。

  • Ruby:这是他创建 Twitter 时的首选语言,Ruby on Rails 框架的“约定优于配置”(Convention over Configuration)和快速开发能力,完美契合了 Twitter 早期快速验证想法的需求,他欣赏 Ruby 的优雅和表达力。
  • Go (Golang):在 Square 时期以及他后来的个人项目(如 Bluesky)中,多西对 Go 语言表现出了极大的兴趣和推崇。
    • 为什么是 Go?
      • 简洁性:Go 的语法非常简单,关键字少,易于学习和维护,这与他的简约哲学不谋而合。
      • 高性能与并发:Go 的原生并发模型(goroutines 和 channels)是处理大规模实时系统的利器,这对于需要处理海量支付交易的 Square 和需要全球信息分发的社交网络至关重要。
      • 静态编译:Go 编译成单个静态二进制文件,部署极其简单,没有复杂的依赖关系,这极大地提升了系统的稳定性和可预测性。
  • Rust:多西也对 Rust 语言表示赞赏,尤其是在系统编程领域,Rust 提供了内存安全和线程安全保证,能够在不牺牲性能的情况下,避免 C/C++ 中常见的内存错误,这与他追求稳定、可靠的系统目标高度一致。
  • C/C++:在早期职业生涯中,多西有深厚的 C/C++ 功底,尤其是在实时信号处理和驱动程序开发方面,这让他对计算机的底层工作原理有着比大多数硅谷创始人更深刻的理解。

系统架构思想

多西的架构思想是“简约主义”的集中体现,旨在构建简单、可靠、可扩展的系统。

Jack Dorsey的编程技术核心是什么?-图2
(图片来源网络,侵删)
  • 去中心化:这是他近年来技术思想的演进方向,尤其是在 Bluesky 项目中,他不再信任单一的中心化平台(如 Twitter 和 Facebook 本身),而是致力于构建一个开放的、去中心化的社交网络标准(AT Protocol)。
    • 核心技术联邦宇宙,类似于电子邮件的运作模式,用户可以拥有自己的数据,并可以在不同的服务提供商之间自由迁移,而不是被锁定在某个平台内。
  • 实时性:Twitter 的核心是“实时信息流”,多西非常看重系统的实时响应能力,他倾向于使用长轮询等技术,而不是传统的“请求-响应”模式,来确保用户能即时看到更新。
  • 状态与无状态:他推崇构建无状态的系统组件,无状态意味着每个服务器实例都是独立的,可以随时被替换或扩展,这大大提高了系统的弹性和可维护性,状态(如用户的会话信息)应该被外部化存储(如 Redis 或 Memcached)。
  • 拥抱 Unix 哲学:Twitter 早期将推文存为文件,Unix 哲学的经典实践——“一切皆文件”,他认为,使用经过长期验证、简单可靠的底层工具(如文件系统、简单的数据库),比发明一套全新的、复杂的系统要明智得多。

编程风格与习惯

  • 代码即沟通:多西认为代码是开发者之间最重要的沟通工具,代码必须清晰、易于理解,他非常重视代码的可读性和命名规范。
  • 实用主义驱动:他不是一个教条主义者,如果某个工具或框架(如 Ruby on Rails)能快速解决问题,他就会毫不犹豫地使用它,但当系统规模扩大,需要更高性能和更强健性时,他也愿意用更“底层”的语言(如 Go)去重构。
  • 关注基础设施:多西非常痴迷于基础设施,他曾花费大量时间研究网络协议、数据库内核、操作系统等底层技术,他认为,只有深刻理解了这些“地基”,才能在上面构建出真正稳固和创新的“摩天大楼”。

主要项目中的技术体现

项目 技术体现
Twitter (早期) - 语言: Ruby on Rails
- 架构: 简单的 Ruby on Rails MVC,后端用 Ruby 处理,数据存为文件,这种“粗糙但有效”的架构让 Twitter 在几个月内就上线并吸引了大量用户。
- 核心挑战: 解决“推文存储”和“实时信息流”两大难题。
Square - 语言: 早期大量使用 Java 和 Objective-C (for iOS),后期转向 Go。
- 架构: 构建了一个极其可靠和安全的支付处理网络,重点在于事务的原子性、一致性和安全性,Go 的并发和高性能在这里得到了充分发挥。
- 核心挑战: 处理金融交易的绝对可靠性、安全性和低延迟。
Block (前 Square) - 语言: Go 是其生态系统中的核心语言。
- 架构: 致力于构建一个开放的金融生态系统,通过 API 连接开发者、商家和用户,去中心化思想在这里开始萌芽。
- 核心挑战: 开放金融基础设施的可组合性和安全性。
Bluesky - 语言: Go 是项目的主要语言。
- 架构: 去中心化社交网络,核心是 AT Protocol,一个去中心化的社交网络协议,包含个人数据服务器、数据交换协议等。
- 核心挑战: 如何在不牺牲用户体验和功能的前提下,实现真正的去中心化,并解决内容治理等难题。

杰克·多西的编程技术并非追求时髦的框架或最前沿的语言,而是始终围绕一个核心问题:“如何用最简单、最可靠的方式,解决一个复杂问题?”

他的技术路径可以看作是从“快速实现”(Ruby on Rails)到“高性能构建”(Go),再到“开放未来”(去中心化协议)的演进,他是一位兼具工程师的严谨、哲学家的思考力和艺术家的审美感的独特人物,对于任何希望学习如何构建伟大软件的工程师来说,多西的技术哲学和实践都提供了极具价值的参考。

Jack Dorsey的编程技术核心是什么?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇