扎温斯基定律
每个程序都会不断扩张,直到它能够读取邮件。
显示原始英文内容
Zawinski's Law
Every program attempts to expand until it can read mail.
Takeaways
- Feature creep is unavoidable. Over time, software tends to accumulate more features, leading to software bloat.
- A lean, minimal application that gains popularity will continually add features until it becomes as complex as its competitors.
- Programs expand because users (and product managers) keep asking for 'just one more feature'. There is constant pressure to incorporate popular capabilities to keep users from leaving for other tools.
- Each new feature increases complexity, which makes the product confusing for users. Developers should protect the tool's focus and resist platform sprawl.
Overview
Zawinski's Law is a humorous observation about software evolution stating that applications continually gain features until they do everything, even things completely outside their original scope. It highlights feature creep, the gradual expansion of scope in software development.
As an application attracts more users, it faces growing expectations to add more capabilities. A basic note-taking app might later incorporate chat or sharing.
Zawinski's point was about "platformization": once users live in an app for a significant part of their day, there is pressure for that app to become a platform that can do everything. Unchecked expansion can sabotage a product's original value. Adding features is easy, but adding only the right features and saying "no" to the rest is essential.
Examples
Netscape Navigator grew from a slim browser into Netscape Communicator, an expansive suite with browser, email, news, and web editing. It became sluggish and over-complicated, paving the way for Firefox, which deliberately stripped down to just a fast browser. Firefox itself later became heavier with plugins and themes.
Slack set out to "kill email" but integrated voice calls, video meetings, file sharing, bots, and app plugins. It now wants to be a one-stop workplace hub, far beyond simple messaging.
GitHub started hosting code, then expanded to issue tracking, wikis, project boards, discussions, CI pipelines, and package registries.
Origins
Jamie Zawinski (known as jwz) formulated this law around 1995 during his time at Netscape. He was a key programmer on Netscape Navigator and later added the integrated Netscape Mail reader.
He described the browser's evolution as "our contribution to the proof of the Law of Software Envelopment." Netscape started as a web browser but by version 2.0-3.0 had expanded to include an email client and news reader.
"Reading mail" was the chosen example because in the mid-90s, you often had to exit your current application and launch a mail program separately.
核心含义
软件一旦拥有用户,就会不断吸收相邻需求:通知、消息、协作、文件、搜索,最后从一个专用工具变成庞大的综合平台。功能增加并不等于价值线性增加,复杂度、维护成本和界面负担也会随之增长。
产品需要明确核心任务,定期删除低价值功能,并为扩张设定边界。
实践例子
一个代码编辑器先后加入终端、聊天、任务管理、浏览器和协作功能。每一项单独看都有理由,但整体可能让启动速度、认知成本和稳定性变差。
来源与边界
这条幽默的经验通常归于 Jamie Zawinski。它是对产品膨胀的讽刺,不是说所有集成都是错误;当功能共享数据和工作流时,整合仍可能产生真实价值。