在网页设计和开发中,“简单”是一个有趣的形容词。我敢肯定,它几乎是每个项目的目标。没有人会像这样走进项目启动会议:“嘿,团队,为我设计一些复杂的东西。哦,还要确保实现也很复杂。过度设计它,好吗?”
当然,他们想要简单。每个人都想要简单。我们想要简单的设计,因为简单意味着我们的客户会理解它并喜欢它。我们希望开发过程简单。没有人梦想着去上班,整天花时间弄清楚一个复杂系统来修复一个错误。
尽管如此,关于简单性,我们还有很多话要说。很难说服大家,网页开发近年来变得更简单了。因此,这个词最近经常出现在许多网页设计师和开发人员的口中。让我们一起漫步,看看其他人对简单性的看法。
Bridget Stewart 在她的文章 “一个更简单的网页:我同意。” 中回忆了与过度设计的斗争。她被聘为 UI 实现专家,她的任务是让视频在点击时播放…
我查看了代码,却迷失在循环函数和变量中,无法弄清楚代码应该做什么。我找不到任何被引用的 HTML
<video>
。我也看不到链接或按钮是如何生成的。我迷路了。我请他解释这些函数的作用,这样我就可以帮他找出原因,因为浏览器可以在不需要太多提示的情况下播放视频。但他没有成功地让我理解他构建的东西,反而和我争论是否真的可以做到。我一开始试图平静地向他解释,我之前在工作中做过很多次,所以我非常肯定这是可以做到的。但他继续拒绝我的解释,事情变得激烈起来。在我对他大吼大叫之后(我知道这不是最专业的做法),我回到工作区,启动了一个仓库分支来实现它。20分钟后,我就让它工作了。
这里的主要问题似乎是这个家伙是一个固执己见的人,但他复杂的方法确实阻碍了工作的完成。
在网页上,简单性通常意味着让浏览器为我们做一些事情。你见过多少次,复杂地重新设计下拉菜单,结果不如一个 <select>
可用或可访问?
Jeremy Wagner 在他的文章 让它变得无聊 中写道
我猜静态网站生成器的兴起——以及那些找到方法尽可能进行服务器端渲染的网站——是行业渴望这种健壮性的一个征兆。
正如他们所说,少做点。Lyza Danger Gardner 在她的文章 中发现这在她的工作中很有价值
… 当我们构建未来的网络时,我们需要尽可能少做。
这不是对懒惰或逃避责任的合理化——这些特征并非成功的网页开发人员所具有的。也不是建议我们构建平淡无奇、同质化的网站和应用程序,牺牲所有细微差别或火花,以实现完全兼容的更大目标。
相反,它呼吁简单和优雅:优先考虑共性,谨慎地对待差异化,并倡导在 Web 标准的创建和应用中保持一致性。
Christopher T. Miller 在他的文章 “一个更简单的网页” 中写道
我们能否找到一条通往更简单、更易访问的道路?
我认为我们可以。通过简化我们的网站,我们可以实现更广泛的覆盖范围、更好的性能,以及更可靠地传递任何网站的核心信息。我认为我们在用户体验周围充满激情的对话增多中看到了这一点,但这不能仅仅停留在 UX 团队。开发人员需要为他们在 Web 中添加的复杂性负责。
值得记住的是,我们在构建网站时所叠加的复杂性是可选的。我们经常有充分的理由这样做,但有可能不这样做。 Garrett Dimon
今天,你只需要使用语义 HTML 就可以构建一个健壮、可靠且完全响应式的 Web 应用程序。没有图片。没有 CSS。没有 JavaScript。这是完全可能的。它将在所有现代浏览器中运行。它将易于维护。就 Web 体验而言,它可能不符合美的标准定义,但它将起作用。在许多情况下,它将比那些使用现代前端框架构建的应用程序更易用和更易访问。
这并不是说这是最好的方法,但它很好地提醒我们,Web 在没有我们所有额外层的情况下默认情况下也能运行。当我们添加这些额外的层时,就会出现问题。或者,如果我们一开始就忽视良好的标记和 CSS,我们就会从一个已经出现问题的东西开始,然后花费时间试图让它再次工作。
我们假设复杂的问题总是需要复杂的解决方案。我们试图通过发明工具和技术来解决问题来解决复杂性;但在这个过程中,我们又创建了另一层复杂性,而这又会引发一系列问题。
— Max Böck, “论简单性”
也许选择复杂解决方案最糟糕的理由是它是新的,而新颖让人感觉选择它就意味着你掌握了最新技术,并且出色地完成了你的工作。旧的和无聊的可能正是你出色完成工作所需要的。
Dan McKinley 写道
“无聊”不应该与“不好”混淆。有些技术既无聊又不好。你不应该使用任何这些。但有很多技术选择既无聊又好,或者至少足够好。MySQL 很无聊。Postgres 很无聊。PHP 很无聊。Python 很无聊。Memcached 很无聊。Squid 很无聊。Cron 很无聊。
无聊的好处(非常有限)是,这些东西的功能非常清楚。但更重要的是,它们的故障模式也很清楚。
Rachel Andrew 写道,为她构建的 CMS 选择成熟的技术 是一个明智之举,因为这是她的客户已有的。
你会听到越来越少关于旧的和无聊的技术。如果你正在阅读健康的科技新闻,你可能不会读到很多关于旧的和无聊的技术的博客文章。这真的很可惜,我个人来说,我很享受这些文章。但我也理解,出版物需要有新鲜的写作,而作者对几十年来一直在讨论的话题没有那么兴奋。
正如 David DeSandro 所说,“新技术会引发热议”。当没有太多可说的时,你就不说它。
你不会听到关于 TextMate 的消息,因为 TextMate 很老。我会发什么推文?仍在使用 TextMate。仍然好用。
虽然我们更多地听到的是新技术,但实际上是更广为人知的是旧技术,包括它的不足之处。如果需要更新的技术,也许是更复杂的技术,因为它解决了已知的问题,那很好,但如果它没有…
你完全可以坚持对你有效的方案。你使用某种东西越多,它的痛点就越清晰。当你准备好解决这些痛点时,再尝试新技术。不要因为热议而被迫改变你的工作流程。新技术会引发热议,但这并不意味着它更好。
Adam Silver 说,一个无聊的开发人员充满了疑问
“调试代码是否会更困难?”,“性能是否会下降?”,“我会因为编译时间而被拖慢吗?”
Dan Kim 也以无聊而自豪
我有一个秘密要告诉你——我不是一个摇滚明星程序员。我也不是黑客。我不会忍术。没有人曾经叫我巫师。
尽管如此,我仍然为我是一个优秀、可靠的程序员而感到自豪。
复杂性不是敌人。复杂性是有价值的。如果我们所做的工作没有复杂性,它的价值就会低得多,因为没有什么可以阻碍竞争对手。我们的工作就是复杂性。或者更确切地说,我们的工作是管理复杂性的程度,使其既有价值又易于管理。
Santi Metz 有一篇很棒的文章深入探讨了这方面的各个方面,其中一部分是关于考虑需要更改多少复杂代码
我们厌恶复杂性,但如果代码从不改变,它就不会让我们损失金钱。
你的 CMS 在幕后可能非常复杂,但如果你从不碰它,谁在乎呢。但如果你的 CMS 限制了你能够做的事情,你花费了很多时间与它作斗争,那么这种复杂性就很重要。
读到 Sandi 的分析令人欣慰,它可以预测代码在哪里会崩溃,而这些点是由复杂性定义的。“异常类”(代码库中导致最多问题的部分)无需查看代码库即可识别出来
我不熟悉这些应用程序的源代码,但我敢肯定,即使没有看到它,我也能对异常类做出一些预测。我怀疑它们
- 比大多数其他类更大,
- 充满了条件语句,并且
- 代表了领域中的核心概念
我感觉被看到了。

Cap Watkins 在他的文章 “无聊的设计师” 中写道
无聊的设计师值得信赖和珍视,因为人们知道他们是为了产品和用户而努力的。无聊的设计师会提出问题,并依靠他人的经验和专业知识,随着时间的推移,他们会建立更多信任。他们很少假设自己知道答案。
无聊的设计师可以成为团队中最优秀的领导者之一。
所以,要出色。要无聊。
说服设计师使用标准选择框而不是自定义主题版本真是太难了。如果我们坚持使用标准,就可以直接继承所有功能、可访问性和跨平台能力。低开销,无需维护。
但我们却花了好几个小时试图重新创建一款像样的自定义设计选择框。真是令人沮丧。
21,000% 同意。
是的,我同意。我们几乎到了用“简单”这个口号对大家说教的阶段。我想我们都明白这一点(或者至少现在很多开发人员都认同这一点)。下一步就是弄清楚如何让其他利益相关者(设计师和希望拥有独特品牌体验的品牌经理,我完全理解)也认同这一点。当我们能够解决这个问题时,我们将取得真正的进展。
虽然框架和工具可以加快开发速度,但也可能减慢开发速度。我遇到过框架设置不当、与更新冲突以及过度依赖特定开发流程导致的挫折。
我想用汽车来举例说明。虽然外观和内饰对于销量很重要,但性能、可靠性和维护是提高客户忠诚度的关键。
我看到很多针对一些流行的 JavaScript 框架(Node、React、Vue 等)的尖刻言论,我不得不承认,我自己也有过这样的想法。但老实说,它们并不是问题,至少就其本身而言不是。问题在于它们被不加区分地使用。它们有各自合适的应用场景,而静态登录页面通常并不在其中。
我同意你的观点。“不加区分”是恰如其分的表达。
这篇文章让我在使用热门技术或老旧技术构建新应用程序时有许多思考。
毫无疑问,写得很好!
我很感谢这篇文章。过去几年,科技博客/文章/讨论都集中在需要庞大技术堆栈才能实现“Hello world”的前端系统上。
多年来,我故意避开了技术前沿,从而避免了投资于毫无用处的趋势。但偶尔,一些“看似”复杂的趋势实际上对简化其他事情很有用。
但如果我们总是热衷于最新最好的东西,我们辨别“为了追赶潮流而采用的复杂系统”和“为了简化其他事物而采用的复杂系统”的能力就会大大降低。
复杂的系统、框架、JavaScript 解决方案,它们都会破坏可访问性,除非你付出额外的努力,有时甚至是巨大的努力,才能将可访问性加入其中。HTML 自带基本的可访问性,而像盲人使用的屏幕阅读器之类的辅助技术都遵循 HTML 规范。
在平等和可访问性法律具有约束力的国家,所有这些复杂的解决方案可能看起来非常漂亮,但它们可能会让你的企业面临昂贵的诉讼或来自你所在国家法律合规检查员的访问。保持简单;它仍然可以看起来很漂亮,而且每个人都可以使用它。
是的!
我经常看到两个主要问题 -
设计师不一致。排版在不同的屏幕上发生变化,那些几乎相同的东西可以被模块化,但它们之间又足够不同,需要条件样式。这对所有人来说都增加了复杂性,包括无法在将来重用自己作品的设计师。
“UX”设计师通常不知道他们是在为谁设计。他们没有花时间与他们应该为之解决问题的人在一起。因此,他们浪费时间在细节上,而这些细节价值很低。定期与你的用户在一起,你就能以正确的顺序设计正确的东西。而且你不会太担心装饰。
我是一名平面/网页设计师和前端开发人员。
根据我的经验,大多数人,包括经理甚至客户,都对我的有效且简单的设计解决方案持怀疑态度。因为解决方案中没有明显的复杂性,他们觉得没有得到足够的价值。我经常听到有人说,“我也能设计出这个。”
在我们奖励体系以创建简单有效的作品为基础之前,复杂性将依然是王道。
我不确定是否能够仅使用语义 HTML 在前端构建一个完全响应的 Web 应用程序,不使用 CSS 也不使用 JavaScript。
我也是,这句话让我的眉毛弯了一下。
根据我的经验,Web 应用程序和软件通常的复杂性,一般都是由于开发人员没有理解他们工作的意义,而他们的工作意义就是——让软件按照预期工作。很多开发人员过于关注技术,而忘记了他们的主要关注点应该是工作、可维护、健壮的软件,能够很好地解决它们被设计用来解决的问题。
我们允许自己比应该的更享受技术,而忘记了它们只是工具。
当你不得不更新自己几年前写的代码时,你会感谢自己选择了无聊的方案。
我一直试图在 CMS 废话的海洋中保持无聊。很高兴看到我不是唯一一个认为这很重要的人。去看看我的网站 rgbk.org 并查看源代码,你就会明白我的意思 :)
Michael Scharnagl: