作者 | teawaterwire
译者 | 弯月
出品 | CSDN(ID:CSDNnews)

本文回顾了互联网的发展,从 Web1 到 Web2.0 再到 Web3。笔者从事去中心化应用程序和聊天机器人的构建工作已经三年了,希望本文分享的经验和看法能对你有所启发。
在这里插入图片描述

Web3 只不过是一种形式

打开一个标签页,然后一遍又一遍地重复完全相同的步骤,你是否也有相似的经历?例如,打开同一个地图应用搜索同一个地点,打开同一个搜索引擎搜索相同的信息,或者打开同一个购物应用浏览某个商品。这种体验实在不好。

但是,如果每个新网站都需要学习才能使用,也会让人觉得很麻烦。虽然多样性的网络非常好,但是会降低我们的效率。因此在现实中,各个网站之间相互抄袭,还打出“简单易用”的口号。
有些网页上包含太多信息,一大堆的按钮和链接。而且你还需要注意操作的顺序:先点这个按钮,然后输入那个,然后弹出一个菜单……

用户打开这些网页有自己的目的,他们只想尽快达成这些目的。收集这些意图的方法是:使用表单,其中包含输入框、按钮、复选框、链接等元素,允许用户将数据发送到 Web 应用程序(比如将一条记录保存到数据库,或者导航到一个新页面)。

自从互联网创建以来,这一切从未发生过变化。如今,我们仍然需要创建表单,然后保存到数据库。
作为一名软件工程师,我的职业生涯始于编写 JavaScript,然后是 jQuery,然后是 Angular,再到 React,现在是 re-frame (ClojureScript)。请不要误会,如今的框架有很大的提升。但我觉得我们已经触及了“天花板”。我们改进的是工具,而不是结果。我们还在焦油坑里挣扎。

对了,我还忘了说该死的 CSS,我认为它是我们这个时代最糟糕的技术(当然蓝牙有过之而无不及)。虽然游戏开发者仍在嘲笑我们这些可怜的 Web 开发,但我们知道编写 CSS 的最佳方式就是不要使用 CSS。

为什么我认为我们触及了“天花板”?主要原因有两个:

  1. 表单是动态的(填写表单、提交、加载、重置、重复操作),但它们仍存在于静态网页上。这就会造成一种不和谐。换句话说,我们正在努力将方形的钉子钉入圆孔中。
  2. 开发人员没有改变现状的动力。都是那些专家的错。

专家兜售专业知识

你可以问问周围的创业公司,他们是否有不得不裁掉团队中的软件开发人员的经历。我猜,只有当他们快撑不下去的时候,才会裁掉这些人,否则就不会。事实上,即便他们快撑不下去了,也仍然会努力保留开发人员,期待着连开发人员一起被收购。或者,反之亦然,看看他们不断招聘新的开发人员就知道了。

原因很简单:开发人员会制造技术负债,只有通过更多开发人员才能减少这些负债。或者,换一种说法:每一行新代码都是负债,而不是资产。

通常开发人员不喜欢走捷径或者交付半成品。但在内心深处,无论是有意还是无意,他们都会为了自己创造更多的市场需求。

这是一个绝对的卖方市场。非开发人员已经非常清楚这一点,他们会加入培训班或通过自学掌握这些高薪的技术。

开发人员越多,产生的技术负债就越多,而公司所需的开发人员也越多。可笑的是,这些开发人员被赋予了一种非常特殊的地位:“专制奴隶”,虽然他们位于这条生态链的最底端,但拥有的权利却巨大。

最重要的是,随着设计水平的提高,用户的要求也越来越高。建立最小可行产品(MVP)已经不够了,你还需要建立最小受欢迎产品(minimum lovableproduct,MLP)。然而,受欢迎从来都不便宜。
因此,许多公司十分重视设计师。完善网页,研究用户,确保用户可以在正确的时间在正确的页面上找到正确的表单。当然,还得弄那些烦人的 CSS。

然而现实情况是,大多数公司都没有钱聘请这些 Web 工程师、设计师、移动开发人员、产品设计师和艺术总监等等。

那么他们怎么办?他们使用 Intercom 或者类似的客户服务系统。

Intercom的谬论

对于 Intercom 或类似的网站,第一印象就是网站右下角会显示一个非常烦人的聊天窗口,不停地骚扰你。

为什么企业会求助于这些服务?他们有一个问题:他们的网站发展或适应速度不够快,流失了很多用户,或者用户决定不再购买他们的产品。由于这些公司没有办法聘请更多的开发人员和设计师来解决这个问题,于是他们寄希望于一个聊天助手。基本思想是:我们的网站设计不佳,如果用户浏览网站时遇到任何问题,就可以通过这个窗口给予反馈,帮助我们修复问题。

熟悉正则表达式的人都清楚这个谬论:有些人遇到问题时会想:“我知道,我会使用正则表达式”。然后,他们就要面对两个问题。

如此一来,企业的网站仍然有问题,而且他们还必须支付这个昂贵的新工具的费用。顺便说一下,这款工具不过是另一版的微软 Word Clippy。

Intercom的目标是让互联网业务更加个性化,但他们并未实现这个目标。但他们不仅在业务上取得了成功,而且还围绕产品愿景创造了一种热潮,早在 2018 年,反对 Intercom 的呼声就与如今反对加密货币一样高。

没有找到“Intercom 被高估”的记录。
——Google搜索,2018 年

不过,我们无需对他们太苛责,他们也为我们指出了正确的道路:为什么就不能在一个空白的页面中全屏显示一个 Intercom 窗口?我认为这样至少用户不会感到困惑。

第二层网络

加密货币与早期的互联网发展有许多相似之处。拿以太坊区块链为例,开发人员可以在其上部署任何应用程序,也就是我们所说的智能合约。就好像任何人都可以在互联网上发布网站一样。

但加密货币的有趣之处在于一切都在快速变化之中,因为金钱的诱惑力比信息更大。而且加密货币已经达到了我们前面所说的天花板。相关的系统和平台必须发展,而且也正在发展。

如今我们有了这些所谓的第二层(Layer 2)协议。基本思想是为开发人员提供一种构建更高级别抽象的方法,同时避免了基础层的难题(高昂的交易费用、缓慢的交易时间等)。这是另一个范式转变,解锁了全新的用法。我们再说一个简单的例子,GodsUnchained NFT 卡的低额买卖不仅没有任何费用,而且也没有延迟。

通常,我们希望在每一层强大的抽象之上建立更强大的抽象,从芯片上的晶体管到流媒体视频的发展都是如此。不幸的是,我们一直被有漏洞的 Web 抽象所困扰。此外,大量的无代码应用都不是抽象,它们只不过是更好的工具,但结果都一样,它们的服务对象都是我们想要竭力避免的不和谐的 Web 格式。

聊天机器人回归

曾几何时,聊天机器人风靡一时,有些人甚至认为它们将取代电子商务等领域的所有应用。然而,这一愿望未能成真。其实,聊天机器人很烦人,人们在聊天机器人身上寄予了太多希望,但最终一事无成。我就犯过这样的错误,但也并非一无所获。

2017年,我构建了一个 Slack 机器人,以一种有趣的方式帮助同事更好地了解彼此(这款机器人成功吸引了大量用户,并让我有生以来第一次登上了 Hacker News 的头版)。2018 年,我为 Facebook Messenger 构建了一个机器人,帮助用户创建自己的数字电影库(不幸的是,这款机器人没什么名气)。两次构建都经历了重重困难,因为很少有人为这些平台构建产品。但我通过这两款产品结识了一些朋友,我们认为聊天机器人拥有强大的能力:

  • 登录系统是现成的;
  • 可以准确监控活动;
  • 可以与用户进行真实的交谈;
  • 跨平台;
  • 通知系统也是现成的;
  • 可以提供最佳新用户引导流程;

总体而言,由于对话的限制,开发聊天机器人的效率很高。

但聊天机器人的发展不是很乐观,而且很有可能被锁定到某个供应商内。最终,用户还是会被限制在 Facebook、Salesforce 或亚马逊等的平台中。想一想,如果我们不得不在这些围墙花园中开发加密货币支付,会怎么样?所以,我们不希望掉入这样的陷阱,我们希望在互联网上享受聊天机器人带来的便利。

主要思想

下面,我们来讨论本文的主要思想。回到 Intercom 的谬论:如果网站是一个全屏的对话页面,但 Web 组件放在消息内部,会怎么样?我们来看看下面这张图,并解释一下“反转”。
在这里插入图片描述
如上图所示,传统网页上的组件被移动到了对话中。这个对话代表了与用户交互的整个过程:组件可以被复制,也可以处于不同的状态。只需向上滚动即可继续与它们的交互。

这种反转可以让我们利用组件有效地构建 Web 应用程序。各个组件都是独立的,有人已经很好地应用了这种实践,比如Storybook(https://storybook.js.org/)、以及 Next.js 的 url 导入(https://nextjs.org/docs/api-reference/next.config.js/url-imports)。

但是,请不要误会,我们没有使用 Intercom 或任何闭源供应商。我们希望保持互联网开放,简单地通过一个应用程序的运行时,将交互变成一个(几乎)不可见的对话。

你可能觉得这样做没有意义,请别着急,下面我们会介绍具体的案例。
不过,在此之前,我想先讨论一下支持。

无处不在的支持

许多公司会等到应用程序的构建和发布完成之后,再考虑支持。例如,他们突然意识到用户没有按照预期的方式使用应用程序。他们已经做了用户研究呀,这是怎么回事?!

人们在支持上投入了大量的精力和资源。有的公司求助于 FullStory 等工具来检查用户究竟在干什么。有时,为了针对某个用户面临的特殊情况调试应用程序,却发现根本无法获得完整的上下文。调试工具和日志系统只能提供应用程序的间接信息。

支持必须构建到应用程序内部,而且需要遍布各个角落,不能留到产品发布后再考虑。如果用户通过对话与应用程序进行交互,那么支持就只需要在对话中加入客服。双方都可以访问相同的信息,以及与组件交互的历史记录。这种方法不会形成信息的不对称!

这种“无处不在的支持”只不过是对话式交互的副产物,但这也是我最关心的方面,尤其是现有的支持工具(只能与应用程序并行运行)让我倍感受挫。

这种 Web 的对话形式可以建立更好的支持。

案例研究:WAWA

我想通过一个最小化但真实的用例实践这个主要思想。由于永远不会脱离 Web3,所以我有了一个思路:最简单的加密钱包,并为该产品取名 WAWA,基本功能就是付款、收款和查看余额。
基本功能:

  • 无密码注册;

  • 原生新用户引导流程;

  • 查看钱包余额;

  • 获取钱包地址,并通过 MetaMask 为其提供资金;

  • 与客服聊天;

  • 支持发送文本或直接发送 Web 组件;

  • 向交易对方发送 ETH;

  • 停止与客服的聊天;

  • 通过历史记录中的第一个组件检查更新后的余额。

构建技术:

  • 付款、收款和查看余额组件都采用了 React,应该单独构建。
  • 全局状态由框架(ClojureScript)处理,组件也可以保存局部状况,用于保存不重要的信息。
  • 聊天系统基于 Matrix 协议:它是对话优先架构的关键组成部分。
  • 与服务器的通信就是发送一条消息,由对话中代表应用程序的“用户账号”解释(客服也可以加入此对话)。
  • 提供自由文本输入框,一方面是支持需要,另一方面也是为了做笔记。我们的愿景是建立类似于 Mac Spotlight 的产品,用户可以根据上下文显示输入内容或执行操作。

Web4ᵗʰ

如今的 Web 大多是二维的:上、右、下、左。但是也有一些三维的页面:x、y、z。我们可以通过触摸屏或鼠标与这些界面进行交互。当我们对操作进行排序或使用 Ctrl+Z 操作时,时间维度就会显现出来:可以在本地回滚,或者作为临时的、不会保存的调试模式。

如果时间成为一个新维度,我们可以自由穿梭于不同的时间点,就像使用鼠标左右键一样简单,会怎么样?

这个想法在数据库的世界中已经很成熟了,那就是“时态数据库”,你可以查询不同时间点的数据。此外,我们还有 XTDB 这样的“双时态数据库”,你可以查询两个时间轴:事务时间和有效时间。

不幸的是,我无法使用“双时态”这个非常酷的技术,但可以尝试单时态,即“时态网络”,也就是说把时间作为一个新的维度——第四个维度,具体的定义如下:

  • Web4ᵗʰ 又名“时态网络”:用户可以跨屏幕空间和时间,通过不可修改的对话进行交互。
  • 时态网络的功能
  • 时态网络具有对话优先的接口,利用了去中心化的通信协议。
  • 迫使开发人员思考独立的组件,减少需要考虑的内容(别忘了移动设备优先,约束也是一件好事)。
  • 减轻开发人员的负担。
  • 最重要的是简化用户的使用:更注重用户的需求,并添加出色的内置支持。

保持美感

你可以构建登陆页面或产品页面,这些页面需要保持美感,不一定要高效。
在网站 Mirror(https://mirror.xyz/)上写文章也很好,但这是一种“被动”消费,而不是主动互动。
游戏就是游戏,我不想在对话中玩游戏《Gods Unchained》,因为我想完全沉浸其中。况且,它也算不上真正的 Web……

参考链接:

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!