复杂性

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费额度!

Frank Chimero 发布了一篇新的演讲文章,一切简单的事情又变得困难了

愿我们所有人有一天都能像 Frank 一样拥有如此出色的自我反省能力和表达能力。 这篇文章内容丰富,请务必阅读。 主题之一是,网页设计和开发似乎存在重复的循环,甚至可以让经验丰富的从业人员跌落谷底

20 年后,我仍然觉得制作 [网站] 并不容易。 我的知识和技能有所进步,但随后情况发生了变化,我所知道的知识有一半变成了累赘。 我做的其他工作中很少出现这种情况。

罪魁祸首就是复杂性。

复杂性是目前人们热议的话题之一。 Kevin Ball 写道 “我们正处于从后端到前端的复杂性大规模快速转变期。” Roneesh 刚刚 分享了他的观点,他讲述了自己如何理清前端复杂性的思路。

我还阅读了许多人对 Frank 文章的回应。 我特别喜欢我们自己的 Robin Rendle 的回应,来自 时事通讯

我认为,这项工作中出现所有这些复杂性和细微差别的原因是,我们不再期望网络只是一系列简单的超链接文档。

作为网络用户,我们的期望已经完全改变。

网站本身就是机器;它们拥有状态、通知、警报和警告、在特定情况下出现的组件、位置感知功能以及 15 年前我们无法实现的复杂性。 越来越多的设备和视窗宽度正在呈现我们的网站,对性能提出了越来越高的要求。

我觉得这很合理。 这正是我在撰写 前端网页开发的未来是什么? 时所想。

人们对网站的要求越来越高。 开发人员被要求快速构建非常复杂的东西,并确保它们运行良好且速度快。

不过,Frank 指出,即使是布局、字体和图像也变得越来越复杂。 我认为其原因是人们对性能的重视(实际上是需求)。 但对复杂性的反应通常包括这些内容,以及其他十几二十项内容。

也许事物变得复杂并非没有原因,而是为了竞争而变得复杂。 网络功能更强大,因此我们要求它做更多的事情。

人们很容易认为复杂性完全来自这种“更多”。 拥抱网络的更多潜力,赶超原生应用,为人们构建更强大的工具。 但我相信事情远比这(咳咳)复杂。 有人曾经告诉我,他认为开发人员工具之所以发展并变得更加复杂,是因为通常不会要求开发人员在业务和产品方面进行创新。 他们根据指示构建东西,因此他们利用自己的智慧来创新他们自己的工具。

不过,这取决于情况。 我举几个个人例子。

我已经运营 CSS-Tricks 超过十年。 它是一个普通的 WordPress 网站,虽然它一直在发展,但与最初几年相比,它并没有变得更加复杂。 我在操作它方面变得更加熟练,部分原因是它变化不大,因此我对这项工作更加得心应手。 大多数情况下,我知道所有旋转齿轮的作用以及在哪里加润滑油。

另一方面,通过 CodePen,我经历了漫长的产品开发过程,从最初的简单开始,最终变得极其复杂。 有时候我们会质疑我们是否过度复杂化了,但大多数情况下,朝着这个方向的每一步都是为了让其他东西变得更简单,讽刺的是。 其中一个例子是添加 React’n’Redux’n’Friends,这在开发流程、构建和部署过程的复杂性方面迈出了一步,但令人难以置信的是,它在代码库的复杂性方面迈出了一步。 这些工具帮助我们构建速度更快、调试更容易、测试更完善,并提供高性能体验,这些只是其中的几个优势。 我们不是为了好玩而添加工具;我们添加工具是因为我们有越来越多的问题需要解决。

并不是每个人都遇到相同的问题。 网络是一个巨大的地方,这是我经常听到的一句话,我很喜欢。 据说,网络上有超过十亿个网站。 确实是一个巨大的地方。

看看 Dan Cederholm 最喜欢的网站

它没有响应式设计。 它没有针对 iPhone 进行优化。 它在视网膜显示屏上看起来很模糊。 它没有使用最新的 HTML5/CSS3 框架。 它没有经过深思熟虑的垂直节奏。 字体没有什么特别之处。 它既不是拟物化的,也不是扁平化的。 它没有自己的网站图标。 它没有原生应用程序或 Twitter 或 Instagram。 它没有使用 AJAX 或 SCRUM 或 node.js 或 Sinatra。 它没有 API 或 RSS 提要或风投融资。 它没有在著名的科技博客上刊登或获奖。

它告诉我当天的汤。

我怀疑它不需要任何额外的复杂性,而且事实上没有人主张它需要额外的复杂性。 这就是为什么“网络是一个巨大的地方”这句话如此有用。 我们谈论复杂性,但一切都是可选的。 十年前一个功能强大(且简单)的网站仍然功能强大且简单。 幸运的是,对于所有相关人员来说,网络迄今为止一直非常重视兼容性。 旧网站不会直接崩溃。

我敢肯定,Frank 文章中关于网页布局的内容会引起许多本网站读者的共鸣。 Frank 将表格布局和网格布局联系起来。 这种观点并不罕见。 例如

我相信 Frank 了解新网格布局的优势(例如,尝试在媒体查询断点处重新排列一个 <table>),但他的观点更多地是关于周期,而不是深入的技术分析。

我认为,可以合理地认为,尤其是在 CSS 方面,现在更容易了。 过去的 CSS 让我们为跨浏览器支持而苦恼,在代码中散布供应商前缀,并且(哈哈)向盒模型祈祷。 Eric Meyer 最近出版了一本关于 CSS 知识的厚重书籍,他 表示

CSS 确实比以往任何时候都具有更多功能。 从“潜在需要了解的内容数量”的角度来看,是的,CSS 确实更具挑战性。

但核心原则和机制并不比十年前或二十年前更复杂。 如果有区别,它们现在更容易理解,因为我们不必再为浮动行为或内联布局而绞尽脑汁,只是为了尝试布局页面。

回到开发人员创新他们自己的工具这个话题,另一个需要考虑的是网站构建器对我们行业的影响。 在合适的条件下,我始终推荐网站构建器应用程序。 您的摄影业务需要一个作品集网站吗? 您的面包店需要一个主页吗? 您的定制围巾网站需要一个博客和电子商务网站吗? 假设这是一份低于 10,000 美元的项目,我宁愿看到您使用专业的网站构建器产品,也不愿将其外包给任何要构建完全定制内容的人。 我不想钻牛角尖,但我要说的是,因为我不是唯一这么想的人,低端定制设计和开发工作市场实际上已经消失了。

现在,越来越多的开发人员在内部团队或代理商中工作,为大客户服务。 也就是说,越来越多的人在大型、长期、高度复杂的任务中工作。 因此,他们的想法也随之改变。 规模庞大、复杂的问题需要规模庞大、复杂的解决方案。 这就是人们讨论的内容。 这就是人们写博客的内容。 这就是人们争论的内容。 这是我在参加的许多会议中讨论的话题。

虽然您当然可以使用 index.html 文件和 FTP 来创建简单的汤类网站,但关于此类网站的博客文章越来越少,而且点赞数也越来越少。


向我的朋友兼 ShopTalk Show 联席主持人 Dave Rupert 致敬,他一直在抵制各种形式的复杂性,从我认识他开始就一直如此。 我仍在努力赶上。