我们的故事
我和我的联合创始人正在Prisma上建立全栈工具包ZenStack。一个主要功能是允许在模式中声明地定义访问策略。它始于他报告一个问题:
-
HE:现在有一个方案用户现在可以表达。假设用户正在建造宠物商店,只有在尚未将其添加到任何订单中,才能将宠物添加到订单中。他需要在
Order
模型中制定的政策应如下:
model Order { pets Pet[] // order could only be created if all the pets in the order have not been added to any order yet. @@allow('create', !pets?[orderId != null]) }
,但现在无法使用。 ð
-
我:等一下。我们可以支持它,他只需要在
Pet
模型中定义它:
model Pet { orderId String order Order @relation(fields: [orderId], references: [id]) // The pet could only be added to an order if it has not been added to any order yet. @@allow('update', orderId == null || future().orderId == orderId) }
我们都很好。 ð
-
he:但是在我上面写的示例中它不起作用ð
-
我:但是我们可以告诉用户以我的方式写它。 ð、
-
HE:但是您可以停止用户以这种方式写作。 ð
我没有感觉到任何错误。
为什么DX现在很重要
用户体验
在过去15年中,软件中最重要的突破之一是设计思维的到来,围绕用户体验,这是一个很明显的想法,即当普通人拿起新计算机或使用新应用程序时,他们应该迅速了解如何它有效。
-
松弛
在Slack之前,许多团队都依靠电子邮件或即时消息服务(例如Skype或Google Hangouts)进行交流。这些平台很笨拙,缺乏Slack提供的用户友好功能,例如自定义表情符号和与其他应用程序集成。
-
airtable
在Airtable之前,许多团队使用Excel等电子表格来组织数据。虽然Excel是一种强大的工具,但通常以用户体验的负面示例。通常需要大量时间来学习如何使用它,这可以通过查看市场中的多少个课程来证明这一点是合理的。取而代之的是,Airtable的可自定义和直观的UX使用户可以轻松地组织和操纵数据,即使他们没有电子表格的经验。
-
概念
与传统的笔记和项目管理工具相比,概念也脱颖而出。在概念之前,用户必须依靠每个功能的单独应用程序,从而导致工作流碎片。 Intion的UX提供了一个无缝且可自定义的工作空间,用户可以将其所有生产力工具组合在一个地方。
开发人员的经验
很长一段时间以来,重点一直放在软件的最终用户体验上。但是,事实证明,软件开发人员也是最终用户。人们最终认识到简单的因果关系:是开发人员创建了产品。
当开发人员拥有积极的经验建造产品时,他们更有可能制定高质量的代码,满足截止日期并与同事更好地合作。反过来,这为最终用户提供了更好的用户体验(UX)。
当公司提供更好的DX时,它可以保持人才吸引力和保留率的竞争力。
解释了为什么近年来,投资DX工具包的趋势越来越大。也许这一趋势的最显着例子是Vercel,它通过提供了Next.JS的强大组合和一个平台来简化构建和部署Web应用程序的过程。
,它筹集了超过3亿美元。如何制作好DX
因此,如果您要构建开发人员工具包,则可能会问:
制作好DX的最重要的事情是什么?
我的答案很简单:
对开发人员的同情
作为工程师,我们经常优先考虑工作的技术方面,并减少对人类体验的关注。这种趋势不仅限于经验不足的工程师。它甚至会影响比尔·盖茨(Bill Gates)等高级领导者。
。在接受Netflix纪录片Inside Bill's Brain: Decoding Bill Gates的采访中,梅琳达·盖茨(Melinda Gates)谈到了比尔(Bill
Bill拥有出色的科学家和创新的想法,可以使新的厕所技术绝对改变发展中国家。但是他们可以考虑一个妈妈带孩子上厕所的经历。妈妈告诉我,男人是否可以在墙上看到,我不去那里。这是不安全的,也不是私人的。如果我能带我的孩子和我一起走到小摊位,那就不起作用。我可以把孩子留在外面。那是我愿意与比尔在一起的一点。我会戳他一点。
因此,您要么找到梅琳达(Melinda)戳您,要么您自己做。 ð
听起来很容易,但是该怎么做?在书中有两个收获Don’t make me think我发现提醒我同情非常有帮助。
我们没有做出最佳选择。我们满意。
有一个共同的假设,即开发人员在仔细权衡所有选项并选择最佳选择方面表现出色。但是,情况并非总是如此,尤其是在使用新工具或技术时。在这些情况下,他们倾向于选择提出自己的第一个合理解决方案,一种称为满足的策略。
为什么?因为我们的大脑通常很着急。优化很难,花费更多的能量。因此,如果我们发现有效的东西 - 无论多么严重 - 我们倾向于在偶然发现之前寻找更好的方法。
在下面构建的数据仪表板SaaS的一次客户面试中:
一个客户要求一个功能:
- 客户:您还记得文件夹扩展状态吗?文件夹中有一些仪表板。每次都会扩大它的繁琐。 ð
- me:好的,我将其添加到我们的积压中。但是在此之前,为什么不将其添加为收藏夹,以便您可以在“收藏夹”选项卡中直接看到它? ðρ
- 客户:我忘了有一个收藏夹。 ð
客户仍然愿意要求您提供解决方案,已经很幸运。请记住,每个绊倒都是客户对您的信心。持续的绊脚石可能会导致客户放弃您的服务,而有利于其他选择。在当今市场上尤其如此,那里有许多新兴的竞争对手可供选择。
我们不知道事情是如何工作的。我们混淆了。
作为开发人员构建工具包,我们对其运作方式有了完全的了解。但是,我们可能会忽略一个事实,即客户对工具包没有相同水平的熟悉程度。他们可能只遇到了一个简单的帖子或视频,突出了该工具包的特定功能或好处。期望他们在利用它之前阅读大量文档或检查源代码是不合理的。
您可以通过问自己很容易得到它:
在开始编写代码之前,您花了多少时间阅读文档或源代码?
对于我们大多数人来说,只要我们以这种方式完成事情,我们是否了解事情的工作方式也不重要。
我们能做的就是遵循爱因斯坦的建议:
使一切尽可能简单,但不是更简单
因此,人们很容易得到它。同时,我们需要确保可以随时提供资源,以便用户遇到任何问题或问题。
最后一个外卖
真正了解开发人员并同情开发人员,最有效的方法是直接与他们进行交流。因此,如果您想协助ZenStack创建用于开发Web应用程序的最佳DX,为什么不在GitHub或Discord中与我们互动?