有些软件的变化很有意思。
第一次装它的时候,你可能只想完成一件事:记笔记、剪视频、传文件、聊天、看文档,或者连上一台服务器。
用几年以后再打开,首页已经塞进了资讯流、模板中心、社区、会员、云盘、插件市场、商城、AI 助手、积分任务和几个你从来没有点过的入口。原来三秒能找到的按钮,被挪进了二级菜单。更新日志每个月都很热闹,但你真正天天用的那个功能,可能两年没修好。
软件当然会发展。问题在于,很多产品后来已经不知道自己到底想解决什么问题了。

图:Microsoft Learn 的 Windows 应用控件示例。平台本身提供大量组件,真正的设计工作仍然是决定什么时候该用、什么时候不该出现。
加功能很容易解释,删功能很难交差
一个团队做季度汇报时,“新增 12 个功能”很好写。
“我们把三个没人需要的入口删了”“把设置页从 17 项缩到 9 项”“某个流程少点两次鼠标”,听起来就没那么壮观。它们对用户可能更有价值,却很难在 PPT 上显得像一次大升级。
于是很多产品慢慢形成一种惯性:旧功能没人敢碰,新功能不断往上叠。
每加一个按钮,往往还会顺手带来一串东西:权限、配置项、帮助文档、埋点、错误状态、兼容逻辑、后端接口、客服话术。用户看到的是一个新入口,维护者背后多了一整条生命周期。
更麻烦的是,这些功能通常不会自然消失。哪怕只有 0.5% 的用户在用,产品团队也会担心删除以后被骂。最后软件就像一个几年没整理过的仓库,东西都“可能有用”,所以谁也不敢扔。
AI 又给这个问题添了一把火
这两年最明显的变化,是很多软件突然多了一个 AI 输入框。
有些确实解决问题。搜索、总结、生成初稿、跨文档查询,这些场景很自然。
还有一些就显得很勉强。一个原本点一下就能完成的操作,被改造成“你可以问 AI”;一个固定规则就能算出来的结果,被包装成“智能分析”;甚至设置页旁边也要放一个闪闪发光的按钮,好像没有它就赶不上时代。
AI 很容易成为新的功能堆积方式,因为它几乎可以被塞进任何地方。
问题还是那个老问题:用户打开这个软件的时候,到底想干什么?
如果产品连这句话都答不清楚,模型再聪明也只是在给混乱加自然语言入口。
好软件往往很克制
Apple 2026 年重新整理的 Human Interface Guidelines,把 Simplicity 写得很直白:界面应该清晰、直接,每个元素都要有存在的理由。它还特别强调,简单不等于把东西全藏起来,关键在于让重要任务始终容易找到。
Microsoft 的设计文档也一直强调 progressive disclosure,也就是把高级选项留到需要的时候再展开。常用功能摆在眼前,复杂能力留在下一层。
这听起来像废话,真正做产品时却很难。
因为克制意味着你要拒绝需求。
老板说能不能加一个入口,客户说同行有这个,销售说某个大客户想要,运营说这里最好放个活动,AI 团队说应该加个 Copilot。每一条单独看都合理。半年以后,它们一起出现在首页上。

图:Microsoft 在 Windows 11 中重新整理了右键菜单,把常用命令放到更直接的位置,低频选项继续保留在下一层。
这也是为什么做一个“功能很多的软件”并不稀奇,能长期维持清晰边界的软件反而难得。
功能越多,用户越像客服
产品复杂到一定程度以后,会出现一个很荒唐的现象:软件自己没把逻辑整理清楚,最后要求用户学习它的组织结构。
“这个功能在工作台,不在项目里。”
“要先创建空间,再创建团队,然后把成员加入组织。”
“这个设置只在网页版有。”
“新版入口移到了头像下面。”
“普通会员有功能 A,高级会员有 A+,企业版还有一个同名功能,但权限不同。”
用户本来只是想完成任务,最后先学了一遍产品公司的组织架构。
这类成本很难出现在性能监控里。服务器没有报错,接口也返回 200,埋点甚至可能显示“用户停留时长上涨”。实际上大家只是找不到按钮。
我之前写过一篇 《系统越建越多,为什么办事的人还是要一遍遍填同样的信息》,里面讲的是信息化系统之间的割裂。单个软件内部的功能膨胀,其实是同一种病:组织没有消化复杂度,复杂度就会顺着界面流到用户手上。
一个简单指标:完成最常见任务需要多久
很多产品指标都很复杂。我觉得有一个特别朴素的东西值得长期盯着:
老用户打开软件以后,完成最常见的三件事,各需要多久?
版本升级以后,这个时间是变短了,还是变长了?
如果一个笔记软件增加了 30 个功能,但“新建一条笔记”越来越麻烦,这个版本很难叫进步。
如果一个聊天软件拥有支付、会议、文档、日程、机器人、短视频和 AI,但用户为了找一个三个月前的文件要点七八次,这套生态至少有一部分复杂度已经失控。
软件工程经常讨论性能预算,其实产品也需要一份“复杂度预算”。每增加一个入口,都该问一句:它值得长期占据这里吗?
有些团队需要学会删除
删除功能很痛苦。
你会碰到历史用户、兼容数据、旧接口、文档、客服记录,还有内部某个人对这个功能的感情。可如果什么都不删,软件最终一定会变成博物馆。
真正健康的产品应该允许功能退休:提前公告、给迁移方案、保留数据导出、统计真实使用情况,然后在合适的时候结束它。
开发者也一样。个人项目尤其容易陷进“以后可能用到”的心理,把插件、配置、实验功能全部留着。最后自己都不敢改。
我之前整理 Windows 桌面时也写过类似的体验:《Windows 桌面别再堆图标了:几个不折腾的小改造》。桌面图标和软件功能其实差不多,数量超过某个点以后,继续增加就很难再提高效率。

图:Microsoft Learn 的主题示例。好的界面能力应该服务于用户选择,而不是把所有选择同时摊在用户面前。
最后
我不反对大而全的软件。
IDE、本地开发工具、办公套件、3D 软件,本来就需要大量能力。专业用户也愿意学习复杂工具,只要这种复杂是有回报的。
真正让人烦的是另一种复杂:为了 KPI 加出来的入口,为了商业化塞进去的横幅,为了追热点硬接进去的 AI,为了不承担删除责任而永久保留的历史包袱。
一个产品真正成熟以后,最难的工作往往已经不是继续证明“我们还能加什么”。
它需要开始回答另一句更难的话:
这个东西,我们真的还需要吗?
资料来源
- Apple Human Interface Guidelines:Design principles
- Apple Human Interface Guidelines:Disclosure controls
- Microsoft Learn:Windows Application Development - Best Practices
- Microsoft Learn:Progressive Disclosure Controls
文中 Microsoft Learn 图片版权归原作者/微软所有,仅用于技术讨论与说明。
当一个软件什么都想做,它通常也开始什么都做不好
https://wangling.hauchet.cn/archives/when-software-tries-to-do-everything
评论