代码简洁性
开发者傲慢
2011年11月15日 by Max Kanat-Alexander
你的程序对我来说并不重要。我不关心它的用户界面。我不关心它叫什么名字。我不关心是你开发的,也不关心它的版本号。
我唯一关心的是你的程序能否帮助我达成目标。如果它能做到这一点,那真是了不起的成就,你应该为此感到自豪。没有必要仅仅因为你觉得它重要,就让程序占用我更多的注意力。
当然,你的程序对你来说很重要!当你长时间处理代码时,很容易对它产生依恋。编写代码是如此困难。你的聪明才智无边无际,在你智慧的山峰上投下了普通人的阴影。你克服了人类曾经面临的一些最大心理障碍。确实,你应该在每个塔顶、每个城市的街道上,甚至地球的洞穴中大声宣扬这一点。
但是请不要。因为你的用户不在乎。你的开发伙伴可能会感兴趣,但你的用户不会。
当你真正聪明时,用户看到的将是程序很棒。它如此出色,以至于用户几乎注意不到它的存在。这才是真正的卓越。
违反这一理念的最糟糕行为是那些每次我启动电脑时弹出窗口的程序。我知道你的软件在那里。是我安装的。你真的不需要提醒我。如果我的目标是启动电脑以便使用它,你的弹出窗口如何帮助我实现这一目标?它没有帮助,所以请去掉它。
还有一些较小的问题制造方式,都围绕着向用户索取过多时间或注意力:
- “用户肯定会愿意点击通过三屏的表单才能使用我的产品。”
- “我确定用户会想学习我为这个程序发明的所有图标,所以去掉这些图标的文字标签没问题!”
- “我确定弹出这些对话框来中断用户工作是可以接受的。”
- “用户肯定会愿意在这个巨大的页面上搜索一小段文字以便点击它。”
- “我们为什么要简化这个?那会需要很多工作,而且对我来说已经很容易了…”
诸如此类。
开发者所需的真正谦逊是愿意将自己的身份从用户的世界中移除。停止告诉用户程序的存在。不要认为用户关心你的程序,想要花时间使用它的界面,或者想要了解它。他们关心的不是你的程序——而是他们自己的目标。完美地帮助他们实现目标,你就为他们创造了完美的程序。
-Max
评论
Tony Mechelynck 说: 2011年11月15日 晚上9:48
我要补充一点:是的,你的程序应该是透明的(“不被注意”),并尽可能做用户期望的事情。但是用户有不同的偏好和期望。如果某个特定用户发现程序运行"与期望相反"(也许因为他有不寻常的期望),更改配置设置的方式应该是显而易见的(需要很少搜索)且容易的(每个更改的设置需要很少用户操作)。
Max Kanat-Alexander 回复: 2011年11月16日 凌晨1:08
这似乎是一个合理有效的观点。我确定我们都会同意必须谨慎添加偏好设置的数量,但这都包含在使偏好设置本身简单化的过程中。
-Max
John P 说: 2011年11月16日 上午9:15
不同的用户想要不同的东西。虽然一个用户(可能是偶尔使用者)可能欣赏带有图标的文本标签以便轻松找到功能,但另一个用户(重度日常使用者)可能讨厌它们占用的额外屏幕空间。对一个人因缺失而引人注目的东西,对另一个人却因存在而引人注目。
不过,我认为没有多少用户真正希望在启动时出现侵入性弹出窗口来宣传程序的存在。另一方面,如果它们成功提高了对生产者品牌的认知度,那么它们就为创建者服务了目的,可能会继续存在。
Max Kanat-Alexander 回复: 2011年11月16日 晚上11:02
我倾向于认为这类事情大多可以以一种既适合高级用户又适合新用户的方式完成。实际上,我多年来一直在维护一个产品,其整个用户界面都必须做到这一点,我认为我们最近正在学习如何以一种对两个群体都相当可行的方式来实现。
至于弹出窗口:开发者的目的不是软件的目的。此外,计算历史表明,赢家是那些最好地服务用户同时在业务方面执行良好的人。拥有优秀的产品是建立品牌认知度的完全体面的方式。我没有看到Chrome在我的浏览器界面上到处弹出它的名字或标志,然而它获得市场份额的速度比历史上任何其他浏览器都快。我通常认为,以损害用户为代价的"品牌认知度"论点是软弱和短视的。
-Max
Fredrik Carlén 说: 2012年12月3日 中午12:59
说得好,说得好。
Vladimir Dzhuvinov 说: 2011年11月16日 晚上10:48
Max,你是在暗示某个更广泛使用的PC环境吗?
Max Kanat-Alexander 回复: 2011年11月16日 晚上10:57
哈哈哈!我没想到这一点,但有时候确实是这样,当然!
-Max
Ben Morrow 说: 2011年11月16日 晚上10:49
这里的一个重要因素是通过通知创建品牌认知度。这很糟糕,但大多数用户没有意识到通知很糟糕,并将其与品牌负面关联。傲慢可能最终是更大的因素。
伙计,你能想象如果你的医生以自我祝贺的方式不断打电话给你,说你最近没有感染艾滋病,然后向你提供健康保险升级以确保万无一失吗?对不起,Norton医生,我要更换服务提供商了。
Max Kanat-Alexander 回复: 2011年11月16日 晚上10:58
哈哈哈!是的,我喜欢医生的类比!
-Max
Reilly Sweetland 说: 2011年11月29日 中午12:01
我认为当一个程序允许用户用尽可能少的"程序"来实现他们的目标时,也有某种美学。换句话说,你如何占用用户最少的心理周期来完成他们的目标?
由此产生了很多有趣的用户体验讨论,但我想你在这里抓住了重点,Max。对于开发者或设计师来说,很容易陷入机制中而忽视大局。
最新文章节选
Max Kanat-Alexander 10月15日
我很高兴今年在Developer Productivity Engineering Summit 2025上发表了主题演讲之一。我谈到了什么造就了出色的开发者体验。特别是,这次演讲涵盖了我们在所有开发者体验工作中试图优化的三个核心要素。希望对大家有帮助!:)
Max Kanat-Alexander 10月13日
为什么谷歌有如此出色的开发者体验?它只是在这方面花费了比任何人都多的钱吗?
嗯,是的,如果你合计一下谷歌基础设施上花费的所有人力成本,谷歌可能在开发者体验上花费的钱比任何人都多。但这实际上不是谷歌在这方面成功的核心原因,因为谷歌开发者体验的早期并没有涉及很多工程师。它实际上涉及相对较少的一些体面工程师,他们随着时间的推移相当缓慢地构建工具。谷歌一些最受喜爱的工具最初是由三四人构建的,总共。
关键是这些工程师被允许专注于开发者基础设施的基础要素,无论需要多长时间都要把它做好。每个人都在朝着开发者体验的长期全局最大值努力,而不是短期即时需求。非常好的工程师被赋予自由去问诸如"完美的构建工具应该是什么样子"这样的问题,然后尝试构建它。对于源代码控制、代码审查、编程语言基础设施、CI、IDE、通用库以及开发者体验的许多其他部分也是如此。当然,有时我们在这个过程中构建了糟糕的东西,但公司足够关心把它做好,以至于我们(通常)回去修复它,最终。
谷歌开发者体验和速度的关键是对软件工程基础要素的这种关注。这也不仅仅是在开发者工具团队中,而是贯穿整个公司——谷歌的工程师比我在其他地方看到的更关心代码质量、测试等。
技术领导者在行业中其他地方最常犯的错误之一是没有关注所有这些工程基础要素。代码库可维护吗?你是否有需要的基础工具来高效有效地构建可靠、高质量的软件?是否有系统确保新软件工程师能够快速上手项目,并随着时间的推移提高他们的技能?等等。
相反,我经常看到领导者坚持在破碎的基础要素之上紧急解决即时问题,没有任何真正能在未来解决这些基础要素的计划。这有点像是一个酒店建造者,看到所有其他酒店都有很棒的顶层套房,然后坚持让团队建造一个美丽的顶层套房,而建筑却有裂缝的地基和漏水的管道。修复那个地基可能很困难,但如果你不修复,你肯定会后悔。
基础要素有时感觉抽象或不重要,因为它们不是你被要求交付的即时产品。但让我告诉你,如果你希望能够交付任何东西,基础要素才是最重要的。