开发者谦逊 » 代码简洁性
管理同意
为了提供最佳体验,我们使用Cookie等技术存储和/或访问设备信息。同意这些技术将允许我们处理诸如浏览行为或本网站唯一ID等数据。不同意或撤回同意可能会对某些特性和功能产生不利影响。
功能性
始终激活 技术存储或访问对于明确允许用户使用特定服务的合法目的是绝对必要的,或仅为了通过电子通信网络进行通信传输的唯一目的。
偏好
技术存储或访问对于存储用户未请求的偏好的合法目的是必要的。
统计
技术存储或访问仅用于统计目的。仅用于匿名统计目的的技术存储或访问。没有传票、互联网服务提供商的自愿合规或第三方的额外记录,仅为此目的存储或检索的信息通常无法用于识别您的身份。
营销
技术存储或访问需要创建用户配置文件以发送广告,或在网站或跨多个网站上跟踪用户以实现类似的营销目的。
管理选项 管理服务 管理{vendor_count}供应商 阅读更多关于这些目的 接受 拒绝 查看偏好 保存偏好 查看偏好 Cookie政策 {title} 印记
代码简洁性
开发者谦逊
2011年11月15日 by Max Kanat-Alexander
你的程序对我来说不重要。我不关心它的用户界面。我不关心它叫什么名字。我不关心是你制作的,或者它是什么版本。
我唯一关心的是你的程序能帮助我完成我的目标。这才是真正了不起的壮举,如果你的程序做到了这一点,你应该感到自豪。没有必要仅仅因为你认为它重要就让你的程序占用我更多的注意力。
当然,你的程序对你来说很重要!当你长时间编写代码时,很容易对它产生感情。编写它是如此困难。你的聪明才智是无界的,在你智慧的山峰上遮蔽了凡夫俗子。你已经克服了人类曾经面临的一些最大的心理障碍。真的,你必须从每座塔的顶端、每条城市的街道,甚至地球的洞穴中大声呼喊这一点。
但不要这样做。因为你的用户不在乎。你的开发同事可能会感兴趣,但你的用户不会。
当你真正聪明时,用户看到的是程序很棒。它太棒了,用户几乎注意不到它的存在。这才是真正的才华。
最违反这一理念的是每次我电脑启动时弹出窗口的程序。我知道你的软件在那里。我安装了它。你真的不需要提醒我。如果我的目的是启动电脑以便使用它,你的弹出窗口如何帮助我实现这一目标?它没有帮助,所以去掉它。
还有更小的问题制造方式,都围绕着要求用户花费太多时间或注意力:
- “用户肯定能接受在使用我的产品之前点击三屏表单。”
- “我确定用户会想学习我为这个程序发明的所有图标,所以去掉这些图标的文本标签没问题!”
- “我确定通过弹出这些对话框来阻止用户工作是可以的。”
- “用户完全会想在这个巨大的页面上搜索一小段文本以便点击它。”
- “我们为什么要简化这个?那会很费功夫,而且对我来说已经很容易了…”
等等。
开发者所需的真正谦逊是愿意从用户的世界中移除自己的身份。停止告诉用户程序在那里。不要认为用户关心你的程序,想花时间使用它的界面,或想了解它。他们关心的不是你的程序——而是他们的目标。完美地帮助他们实现这一目标,你就为他们创造了完美的程序。
-Max
分享 点击在Facebook上分享(在新窗口中打开) Facebook 点击在LinkedIn上分享(在新窗口中打开) LinkedIn 点击在Hacker News上分享(在新窗口中打开) Hacker News 点击在Reddit上分享(在新窗口中打开) Reddit 点击在Threads上分享(在新窗口中打开) Threads 点击在X上分享(在新窗口中打开) X
10条评论 留下回复
Tony Mechelynck 说:2011年11月15日晚上9:48 我要补充一点:是的,你的程序应该是透明的(“不被注意”),并尽可能做用户期望的事情。但用户有不同的偏好和期望。如果某个特定用户发现程序运行"与期望相反"(也许因为他有不寻常的期望),更改配置设置的方式应该是显而易见的(需要很少搜索)和容易的(每个更改的设置需要很少用户操作)。
回复
Max Kanat-Alexander 说:2011年11月16日凌晨1:08 这似乎是一个合理有效的观点。我相信我们都会同意必须谨慎添加多少偏好,但这都包含在使偏好本身简单中。
-Max 回复
John P 说:2011年11月16日上午9:15 不同的用户想要不同的东西。虽然一个(可能是偶尔使用的用户)可能欣赏带有图标的文本标签以轻松找到功能,但另一个(重度日常用户)可能讨厌它们占用的额外屏幕空间。对一个人来说因缺失而吸引注意的东西,对另一个人来说因存在而吸引注意。
请注意,我不认为有很多用户真正想要在启动时 intrusive 弹出窗口广告程序的存在。另一方面,如果它们成功提高了生产者品牌的知名度,那么它们就为创建它们的人服务了一个目的,并且可能会继续存在。
回复
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 6月27日 我目前认为,AI代理可以成功输出的数量和质量取决于:
- 模型的质量。
- 代理的质量。
- 输入的质量(如提示或其他上下文)。
- 代理可以独立运行的确定性、客观验证的质量。
我目前认为,除非你是模型开发者,否则最重要的部分是"确定性、客观验证"。
简单来说,如果你告诉AI做某事,它需要某种方式能够自行验证它做了正确的事。在软件中,这通常意味着运行测试、linter等,如果系统做错了就会失败。
这意味着你的测试和验证工具越好,从模型获得的输出就越好。这不仅仅是测试数量的问题。它们必须是好的测试,具有智能断言和良好的错误消息。
这也意味着代理成功涉及思考如何将任务分解成可以分别通过自动化测试、linter等客观验证的单个部分。
请注意,输入的质量也很重要并且在我们的控制之下。如果我们编写更好的文档和更清晰的代码,代理会做得更好。令人惊讶的是,几乎一切帮助人类编写代码的东西也帮助代理。
阅读更多 2010 分享
Max Kanat-Alexander 6月4日 技术债务有价值的想法大多是个神话。当你做出糟糕的软件工程决策时,它会在几小时、几天或几周内减慢你的速度。那是上限。许多人认为需要数月或数年才能看到在软件设计上偷工减料的影响,但这根本不对。它几乎立即开始。做正确事的成本通常是几个小时,也许一天,而且你几乎总是立即收回那个时间。也就是说,做对通常花费与做错相同的时间。“等等,什么?怎么可能?我们偷工减料是为了节省时间!“结果几乎总是它根本不会节省你的时间!它使处理变更更加混乱。它使代码审查时间更长。它在测试期间以更混乱的方式失败,需要更长时间调试。它几乎从未节省你的实际时间。
偶尔,你的路径中会有一些如此巨大的"岩石”,你根本无法移动它。没有人应该花三个月设计一个新工具,只是为了你能一次交付一个一天的功能。但那是技术债务决策中极小极小的一部分。
这变得更加疯狂,因为如果你在过程中做对一切(你总是重构系统,使其看起来像是被设计成现在做的 exactly 那样),那么一切在整个过程中都保持相对容易。但如果你偷工减料,一切都会变得复合性更困难,以至于你生成没有人能移动的"岩石”。复杂性不是某种线性的东西,你可以后来投入线性时间修复。你绝对可以让自己陷入如此糟糕的境地,以至于你公司中没有人有时间或专业知识来修复它。
这一切感觉如此无辜:“让我们偷工减料吧,它会帮助我们 meet 这个截止日期,"(一个截止日期通常是虚构的,你可以推迟几周而没有后果)。“很难弄清楚如何做对,我们可以推迟它吗?“然后砰,很快你发现自己陷入了一个沼泽,一切都很难,“我们不知道为什么!”
我最后留给你一件事:当我每天直接编码时,我在这方面完全 uncompromising。我基本上无法看坏代码——我必须重构它,否则我无法工作。不知何故,在我整个职业生涯的那部分中,我从未错过一个截止日期。
阅读更多 9342 分享
Max Kanat-Alexander 5月30日 我估计,我每看到或被告知一万条坏建议,才收到一条好建议。互联网充满坏建议,因为文明充满坏建议。文明充满坏建议,因为全球的教育大多不教人们思考、研究或确定什么是真实的。相反,它教人们 memorizing 和 repeating 事实,其中大多数是不重要、不真实或无用的。
所以总的来说,我们不应该惊讶互联网(尤其是社交媒体)充满不重要、不真实或无用的信息。并非全部如此——我在网上学到了大量非常有用的东西。有大量有价值的内容。我会说,人们对事物的意见,无论是在报纸、博客文章、论坛还是其他什么,很少具有那种价值。
那么要点是什么?嗯,最好有某种方式在开始依赖或向他人重复之前确定某事是否重要或有用的。最简单的工具是说:“它有效吗?“这条数据是否可靠地帮助你完成某事?它100%有效,还是更少?
对于许多帖子,你会发现:这条数据根本无助于你做任何事。
阅读更多 219 分享
Max Kanat-Alexander 5月29日 你对系统所做的任何更改在推出时都会收到某个人的负面反馈。这发生不是因为每次更改都有问题,而是因为用户习惯了系统的工作方式,他们不喜欢它改变了。他们可能会批评新的用户界面,或者有一些情感论点关于新东西为什么"烂”,但通常他们真的只是对任何更改发生感到不安。这不是什么不寻常的事;这是几乎所有人中都存在的因素。人们往往对在一段时间内愿意经历多少变化有一定的 appetite,如果你超出那个,他们会不安。
重要的是要认识到人们的反馈是简单的这种"变化厌恶"与关于有价值事物的真实反馈。有几种方法可以判断:
- 变化厌恶通常持续3到10天。如果你在推出更改后的头3到10天内收到用户的反馈,并且同一反馈没有被大量用户提供,值得考虑用户的响应是否只是变化厌恶。
- 变化厌恶反馈通常是情感的。它可能是侮辱性的。它可能 expressed 为 just an opinion(“新菜单的颜色丑”)vs a fact(“我测量了,新工具比旧工具慢10倍。")。
在管理变化时,你要避免的是创造如此多的变化厌恶以至于引起反抗。反抗基本上看起来像如此多的人生气以至于他们去找你的管理层并阻止你的工作。如有疑问,向更少的人推出更小的变化,扩展速度更慢。随着时间的推移,你将学习可以推出多少变化,多快。永远不要做"大爆炸"发布,让你所有用户一次体验 massive 变化。
现在,所有这些 said,永远不要将所有反馈归因于"变化厌恶”。通常人们确实有合法的反馈。如果许多人提供你相同的事实反馈,你查看它,他们的反馈有道理,你认为修复它会改进产品,那很可能不是变化厌恶。另外,说"这只是变化厌恶"并不意味着你应该完全忽略反馈。你至少应该承认它,让人们知道他们被听到了。这确实意味着你不应该与那个人争论或试图与他们推理,因为他们正在有情感反应,你试图用"逻辑"让他们摆脱它不会帮助任何人。如果你认为是变化厌恶,你承认他们,他们只是继续与你斗争,有时你应该忽略他们并继续做你的工作。如果他们3天后带着更合理的论点回来,那么你知道这不仅仅是变化厌恶,而且他们到那时可能也更有帮助。
阅读更多 234 分享 加载更多
© 2025 版权所有。由 The Fox 提供支持。 管理同意联系 关于 书籍:《理解软件》 书籍:《代码简洁性》
转到顶部