简单而无聊

在网页设计和开发中,“简单”是一个有趣的形容词。我敢肯定,它几乎是每个项目的目标。没有人会像这样走进项目启动会议:“嘿,团队,为我设计一些复杂的东西。哦,还要确保实现也很复杂。过度设计它,好吗?”

当然,他们想要简单。每个人都想要简单。我们想要简单的设计,因为简单意味着我们的客户会理解它并喜欢它。我们希望开发过程简单。没有人梦想着去上班,整天花时间弄清楚一个复杂系统来修复一个错误。

尽管如此,关于简单性,我们还有很多话要说。很难说服大家,网页开发近年来变得更简单了。因此,这个词最近经常出现在许多网页设计师和开发人员的口中。让我们一起漫步,看看其他人对简单性的看法。

Bridget Stewart 在她的文章 “一个更简单的网页:我同意。” 中回忆了与过度设计的斗争。她被聘为 UI 实现专家,她的任务是让视频在点击时播放…

我查看了代码,却迷失在循环函数和变量中,无法弄清楚代码应该做什么。我找不到任何被引用的 HTML <video>。我也看不到链接或按钮是如何生成的。我迷路了。

我请他解释这些函数的作用,这样我就可以帮他找出原因,因为浏览器可以在不需要太多提示的情况下播放视频。但他没有成功地让我理解他构建的东西,反而和我争论是否真的可以做到。我一开始试图平静地向他解释,我之前在工作中做过很多次,所以我非常肯定这是可以做到的。但他继续拒绝我的解释,事情变得激烈起来。在我对他大吼大叫之后(我知道这不是最专业的做法),我回到工作区,启动了一个仓库分支来实现它。20分钟后,我就让它工作了。

这里的主要问题似乎是这个家伙是一个固执己见的人,但他复杂的方法确实阻碍了工作的完成。

在网页上,简单性通常意味着让浏览器为我们做一些事情。你见过多少次,复杂地重新设计下拉菜单,结果不如一个 <select> 可用或可访问?

Jeremy Wagner 在他的文章 让它变得无聊 中写道

当简单性成为默认选择时,便会产生极具可用性的设计和架构。这就是为什么朴素的 HTML 能发挥作用的原因。它出色地解决了将文档呈现到屏幕上的问题,我们甚至不会考虑用户代理样式表在提供其完全无聊的呈现方面付出了多少心思。我们可以从中吸取教训,尤其是在更多网站被用作 Web 应用程序的时代,通过坚持语义和本地 Web 技术,使它们更加健壮。

我猜静态网站生成器的兴起——以及那些找到方法尽可能进行服务器端渲染的网站——是行业渴望这种健壮性的一个征兆。

正如他们所说,少做点。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 的分析令人欣慰,它可以预测代码在哪里会崩溃,而这些点是由复杂性定义的。“异常类”(代码库中导致最多问题的部分)无需查看代码库即可识别出来

我不熟悉这些应用程序的源代码,但我敢肯定,即使没有看到它,我也能对异常类做出一些预测。我怀疑它们

  1. 比大多数其他类更大,
  2. 充满了条件语句,并且
  3. 代表了领域中的核心概念

我感觉被看到了。

无聊是长久的。

Cap Watkins 在他的文章 “无聊的设计师” 中写道

无聊的设计师值得信赖和珍视,因为人们知道他们是为了产品和用户而努力的。无聊的设计师会提出问题,并依靠他人的经验和专业知识,随着时间的推移,他们会建立更多信任。他们很少假设自己知道答案。

无聊的设计师可以成为团队中最优秀的领导者之一。

所以,要出色。要无聊。

要无聊!