自制软件和赤脚开发者
自制软件和赤脚开发者
自制软件和赤脚开发者 自制软件和赤脚开发者 它可以为你创建漂亮的界面元素,它可以为你管理状态,进行 API 调用,并编写基本逻辑。但它不会告诉你如何将所有这些东西整合到一个可运行的应用程序中。 同时,你想要一座很酷的城堡,但却不清楚如何用这些不相连的乐高积木建造一座城堡。 目前,您仍然需要专业开发人员的知识来将它们粘合在一起。 如果你在 Vercel's V0 或 TLDraw 生成某些内容,您仍然不知道如何将其部署到特定的网络域或 iPhone。 或者通过设置数据库来保存数据。你可能不知道数据库是什么。 添加多人协作 让多个用户以不同的查看和编辑权限登录 还有其他 99 个我还没有想到的,Hacker News 稍后会告诉我。 我们缺少将所有这些部分组合成可运行软件的粘合剂。粘合剂有两种形式。 我们首先需要语言模型代理,它被设计为自制软件项目的中央协调器。 这些代理可以指导赤脚开发人员完成编写技术规范的过程,并帮助他们确定开发某个软件可能需要哪些类型的工具。 然后,我们还需要专门设计用于与这些编排代理对话和协作的工具。 我希望这些代理将拥有一套默认工具,他们已经被教导如何使用这些工具,并且在人类需要构建一些新软件时调用它们。 这些可能是多人协作基础设施、数据库管理器和部署管道的 API。 5. 我们如何将本地优先融入到一切事物中 这让我回到大家最关心的话题:本地优先。 如果我对本地自制软件突然爆发式增长的看法完全正确,那么这会对本地优先运动的战略产生什么影响? 您将如何尝试确保“本地优先”默认融入到未来中? 因为这个为赤脚开发人员提供的默认工具集实际上应该有一个本地优先的数据库,对吗? 一旦他们的应用程序部署完毕,如果它们能够离线工作那就太好了,对吗? 赤脚开发人员可能不知道在他们的技术规范或提示中要求这些内容。无论这些代理中嵌入了什么默认设置,他们可用的工具都会为他们做出很多决定。 如果您目前正在构建本地优先工具,那么您应该考虑哪些类型的界面可以让赤脚开发人员及其未来的代理访问它们。 有人能用简单的英语提示他们进入本地优先设置吗?他们能用 markdown 写一份技术规范并最终得到一个可以工作的数据库吗? Vercel's V0 TLDraw 它可以为你创建漂亮的界面元素,它可以为你管理状态,进行 API 调用,并编写基本逻辑。但它不会告诉你如何将所有这些东西整合到一个可运行的应用程序中。 同时,你想要一座很酷的城堡,但却不清楚如何用这些不相连的乐高积木建造一座城堡。 目前,您仍然需要专业开发人员的知识来将它们粘合在一起。 如果你在 Vercel's V0 或 TLDraw 生成某些内容,您仍然不知道如何将其部署到特定的网络域或 iPhone。 Vercel's V0 TLDraw 或者通过设置数据库来保存数据。你可能不知道数据库是什么。 添加多人协作 让多个用户以不同的查看和编辑权限登录 还有其他 99 个我还没有想到的,Hacker News 稍后会告诉我。 我们缺少将所有这些部分组合成可运行软件的粘合剂。粘合剂有两种形式。 我们首先需要语言模型代理,它被设计为自制软件项目的中央协调器。 这些代理可以指导赤脚开发人员完成编写技术规范的过程,并帮助他们确定开发某个软件可能需要哪些类型的工具。 然后,我们还需要专门设计用于与这些编排代理对话和协作的工具。 我希望这些代理将拥有一套默认工具,他们已经被教导如何使用这些工具,并且在人类需要构建一些新软件时调用它们。 这些可能是多人协作基础设施、数据库管理器和部署管道的 API。 5. 我们如何将本地优先融入到一切事物中 这让我回到大家最关心的话题:本地优先。 如果我对本地自制软件突然爆发式增长的看法完全正确,那么这会对本地优先运动的战略产生什么影响? 您将如何尝试确保“本地优先”默认融入到未来中? 因为这个为赤脚开发人员提供的默认工具集实际上应该有一个本地优先的数据库,对吗? 一旦他们的应用程序部署完毕,如果它们能够离线工作那就太好了,对吗? 赤脚开发人员可能不知道在他们的技术规范或提示中要求这些内容。无论这些代理中嵌入了什么默认设置,他们可用的工具都会为他们做出很多决定。 如果您目前正在构建本地优先工具,那么您应该考虑哪些类型的界面可以让赤脚开发人员及其未来的代理访问它们。 有人能用简单的英语提示他们进入本地优先设置吗?他们能用 markdown 写一份技术规范并最终得到一个可以工作的数据库吗? 为了给你一些动力,我希望你想象一下未来我们确实会迎来本地自制软件的爆炸式增长,但它并不是本地优先的。 我们拥有强大而灵活的工具,让赤脚开发人员可以制作大量本地的自制软件。他们为周围的人解决各种特定的本地问题。他们的社区喜欢它。他们变得依赖他们所构建的东西。 但软件和背后的数据都保存在云端。你必须每月支付订阅费才能访问。然后服务条款突然改变。每个主页中间都有一个巨大的广告。订阅费翻倍。 但事实证明,他们所建造的东西从来就不属于他们。 我预计这将是一个超级利润丰厚的商业模式。 所以我认为你应该关心这一点,因为本地优先运动和本地家庭软件愿景虽然不同,但在哲学上是一致的。 它们建立在相同的基本价值观之上:用户应该对其数据和软件拥有控制权和所有权。 目前,这个社区专注于解决棘手的技术问题,但您应该密切关注周围的发展,因为软件制作过程的各个部分正在迅速变得更加容易获得和民主化。 我们可以将本地化和本地优先的理念结合在一起,并构建同时服务于这两种理念的工具。我真的希望本地优先成为本地软件的默认选择。替代方案无疑会让人感觉更糟糕。 这两种愿景的重叠和互补程度取决于这个社区中的每个人的决定。 我想以伊万·伊里奇的一句话来结束我的演讲,我相信很多人都听说过他的话。 他写了一本精彩的书,名为《Tools for Conviviality》他谈到了人们能够为自己制造工具的重要性。 Tools for Conviviality 他说:“人们不仅需要获得物质,他们首先需要自由去创造他们赖以生存的物质,按照自己的品味塑造物质,并用物质去关心他人。” 软件也不例外。 我的演讲到此结束。非常感谢大家的聆听。 🔗 原文链接: https://maggieappleton.com/home coo... https://maggieappleton.com/home coo... ⏰ 发表时间:2024 05 30 作者:Maggie 这是我 2024 年 5 月在柏林发表的一个演讲 。它专门针对社区,但它与任何参与构建软件的人都相关。 在过去的一年里,我一直在密切关注语言模型如何显著改变软件开发的速度、易用性和可访问性。我在这次演讲中提出的一个略显大胆的理论是,我们正处于本地、自制软件和一种新型开发人员的黄金时代的边缘——我称之为赤脚开发人员。 以下是幻灯片和分享逐字稿—— 首先,简单介绍一下。我是 Maggie。在互联网上我是这个样子。我是一家名为 Elicit 的初创公司的产品设计师。我们使用机器学习和语言模型为科学研究人员制造工具。我也是一名平庸的开发人员,这意味着我会尝试构建一些东西,但有时它们无法正常工作。 Elicit 我公开撰写并研究许多事物,包括思维工具、语言模型接口和最终用户编程。 我想今天和你讨论一些这方面的问题。 我在这里是想让你相信两件事。 首先,语言模型将创造本地、自制软件和赤脚开发人员的黄金时代。 我马上就解释这些术语。 其次,我想让你相信本地优先社区在建设光辉未来中扮演着重要角色。 本地优先 以下是我们要讨论的内容: • 超越本地数据的本地优先 • 家庭软件与工业软件 • 我对赤脚开发者的建议 • 为什么语言模型乐高需要胶水 • 我们如何将本地优先融入到一切事物中。 1. 超越本地数据的本地优先 因此,让我们来谈谈本地优先,超越本地数据。 我知道这里的每个人都知道什么是 local first(本地优先)的内容,但这里还是给观看的人快速总结一下。 local first 当我们谈论"本地优先"时,我们主要谈论数据存储位置及其在我们设备间的同步方式。 在云计算出现之前的传统世界里,我们的数据和软件都存储在单一的机器上,我们也没有任何协作的方式,除了举办局域网游戏派对。 我们然后转移到云时代,所有的程序和所有的数据都存在云中,通过互联网传输到我们的设备上。 现在,这里的每个人都在努力创造一个全新美好的本地优先的未来,在这个未来中,软件和数据都存储在我们的本地设备上,仅在获得网络访问时使用云端来同步它们。 现有的本地优先理念非常棒。我赞同它,我知道你们也赞同。 但是,请和我一起拓展一下思路,想象一下本地软件更全面的愿景。 如果它不仅仅涉及数据库呢? 本地传统上意味着某种离你家近的事物,某种熟悉、亲密和你信任的事物,某种当地独有的事物,以及某种以社区为导向的事物,比如支持本地企业。 因此,对本地软件有一种解释,即在靠近家庭的地方构建并满足家庭需求的软件。 它是人们为自己、家人、朋友、邻居和社区构建的软件。 它为当地人解决当地问题。 在过去的 20 年里,这个想法一直被提出并且被赋予了各种名称。 Clay Shirky 在 2004 年首次提出了"情境软件"的概念。 情境软件 他将其定义为“为特定社会状况或环境而设计的”软件。 他描绘了这样一种愿景:应用程序可供数十名用户使用,而不是数千名或数百万名用户。无论当时还是现在,这都是一个荒谬的目标人群。 我们的梦想是,社区能够获得非常适合其特定需求的工具,而不是试图采用通用软件来解决这些问题。 不幸的是,Shirky 太超前了——在 2004 年开发这种小规模的软件几乎是不可能的。 16 年后,也就是 2020 年,罗宾·斯隆发表了一篇博客文章,名为“应用程序可以是一顿家常饭” 中谈到了许多相同的主题。 应用程序可以是一顿家常饭 他谈到要开发一款小型应用,供家人互相发送短视频。只有家人可以使用。他不会把它变成一家初创公司。它没有任何商业或市场价值。 他出于对周围人的关心和爱,帮助他们解决小问题,并一起度过愉快的经历。 就像他为他们做一顿家常饭一样。 家常烹饪应用程序就像饭菜一样,是你为你熟悉和喜爱的人制作的应用程序。 自 2004 年以来,我们已经取得了足够的进步,人们可以自己制造出其中一种。 • 它们很简单——需要一些技能,但不需要太多。 • 它们运行成本低廉或免费——您不会受到公司定价策略的摆布。 • 您可以控制对它们进行的操作 – 您可以控制是否添加或删除功能,以及是否关闭或弃用它们。 • 私密——不会出售您的数据。 • 满足您的特定需求。 • 无需承受任何财务压力来将其货币化或从中获利。 • 安全——恶意行为者或错位激励的风险非常小。 • 充满爱与关怀地制作。 我喜欢收集这些例子。 这是一款追踪新生儿母乳喂养和尿布更换情况的应用程序。 为什么要将您宝宝的身体健康数据放在别人的服务器上? 这是一款用于协调个人财务的软件,据说是 Superhuman 和 Tinder 的混合体,听起来比标准财务软件有趣得多。 用旧手机制作的实时销售仪表板——一种重复使用硬件的好方法。 这是某人专门为他们的糖尿病伴侣制作的。他们的血糖监测仪上的默认界面无法提供他们所需的关键信息,因此他们自己动手制作了一个可以显示这些信息的界面。 我认为所有这些家庭应用程序的例子都处理那些你不想公开的个人家庭数据,比如你的孩子、身体机能、健康和财务状况。 Robin Sloan 关于自制应用程序的帖子引起了人们的关注。这篇文章在编程社区中广为流传。 我认为这是因为它指出了我们在当前软件构建方式上存在的许多矛盾。 这些小规模的个人应用程序…… ..与我们大多数人每天使用的软件(专业制作的软件)截然不同。 这就像是餐厅里专业厨师制作的餐点或蛋糕。可能比你的要美味得多。 但它可能更加复杂,制造成本更高,并且需要许多具有专业知识的人员。 你无法控制它是如何建造的、使用寿命有多长、或者在里面放多少黄油。 心里只想着商业利益,而不是家庭的爱与关怀。 安全性和隐私性较低——您不知道数据去了哪里。 专业软件是世界上几乎每个人都在使用的软件。它由大型公司在全球范围内为大众开发。 目前,我们正处于软件的工业化、高度现代化时代,这些标准化、千篇一律的应用程序是由那些对我们不太了解的人为我们制作的。 主要是为加州大公司工作并将其软件运往海外的人。 他们坐在旧金山,试图通过 Zoom 电话和客户支持票了解我们的痛苦和问题。 他们对我们的生活、我们需要解决的问题以及我们重视的东西知之甚少。 一个在山景城拿着六位数薪水的美国人怎么会懂得如何为东京的家庭主妇、土耳其的街头小贩或突尼斯的医生发现问题并设计解决方案呢? 大部分情况下,他们都不会这么做。或者即使他们尝试了,也做得很糟糕。 我的朋友 Kasey Klimes 写了一篇精彩的文章,名为“何时设计应对突发状况”,这篇文章涉及大规模软件的设计动态,是 Kasey 在为 Google Maps 工作后的心得。 何时设计应对突发状况 他指出,我们当前的做法仅仅是为了解决大多数用户最常见的需求。 除此之外的任何东西都是我们所说的长尾用户需求。这些是只有少数人需要的东西,但数量却几乎是无限的。 以谷歌地图为例,用户需求的长尾不仅仅是“我如何从这里到达那里?” 谷歌地图永远不会支持显示(国家)历史边界或(车道)潮汐模式,即使这些对于几十个人甚至几百人来说至关重要。 在现行体制下,这些内容总是被认为超出范围。 因为支持长尾理论在经济上没有任何意义。 工业软件只能针对大多数人(理想情况下是拥有可支配收入的富人)的最大问题。 这是经济限制。构建解决每个长尾需求的功能需要大量的工程劳动…… ...而且工程师的费用非常昂贵。 对于工业软件,你需要庞大的开发人员、设计师和产品人员团队,他们会要求高薪来换取他们宝贵的、来之不易的专业知识。 我们的融资方式主要是通过美国的风险投资基金,这要求回报是曲棍球棒式增长。 他们所有的精力都集中在赚取数亿甚至数十亿美元的利润来回报投资者。 作为正在做这件事的团队的一员,我可以说它影响了我们如何构建软件以及优先考虑哪些功能的每一个决定。 我画了一张小地图来帮助清楚地了解这些动态。 我们在横轴上有尺度,从小型特殊的软件到全球工业软件。 纵轴是利润,独角兽公司赚取了数十亿美元,而经营不好的公司财务会陷入困境。 当今大多数软件都处于右上象限,规模庞大,旨在赚取尽可能多的钱。 任何低于利润线的事情最终都会以短暂的失败告终——它无法在市场上长期生存。 但在小规模、特定软件的左侧,我们拥有机遇之地。 这种软件甚至不需要盈利,只需要以非常低的成本运营,尽管从长期来看它可能能够带来一些小额到中等的利润。 但这块充满机遇的土地目前存在技能问题。 因为具备制作自制软件和专业开发人员技能的人群范围差异极小。 ...同心圆。 我展示的所有自制软件示例均由专业开发人员制作。 大多数人可能想自己开发一款软件,但都做不到,因为软件开发太复杂了。即使是我们这些专业人士也不一定具备开发全栈应用所需的知识。 这对任何人来说都不是新鲜事。几十年来,这一直是最终用户编程倡导者的主要抱怨。 因此,普及的、本地化的、家庭式的软件仍然只是一个白日梦。 这很可惜,因为我们知道这个世界充满了需要解决的问题。虽然并非所有这些问题都有软件解决方案,但其中很多问题都有。 很难说,如果更多的人能够设计和构建自己的软件来解决当地社区的问题,那不会带来巨大的利益。 2. 家庭软件与工业软件 那么,如果软件开发的某些部分变得更快、更容易、更便宜,会发生什么情况呢? 4 年前,OpenAI 发布了 GPT 3,这是第一个真正意义上的大型语言模型。从那时起,我们就踏上了一段不平凡的旅程。 现在,当我说大型语言模型时...... 我谈论的是其他人所说的人工智能。但我认为这个术语太笼统了。 我特指的是使用深度学习和神经网络创建的模型。 这些主要是大型语言模型,但也包括视觉和动作模型。 它们是基于人类训练数据来理解单词、代码语法、图像和界面操作的模型。 我也在谈论所谓的智能体。 当我们让大型语言模型表现得像一个智能体时,它可以制定计划和决策,以尝试实现我们设定的目标。 我们允许这些代理访问外部工具,如网络搜索、计算器,以及编写和运行代码的能力。 以及数据库中存储的长期记忆。 我们让他们模仿逻辑思维模式,比如让他们观察他们所知道的东西,计划他们下一步要做的事情,批判他们自己的工作,并一步一步思考。 智能体可以决定在任何时候使用什么工具来解决我们给出的问题。 这种将工具和逻辑链接在一起的架构使得语言模型比其他模型功能更强大。 他们最终能够在我们现有的编程环境中完成相当复杂的任务。 除非这里有人一直生活在与世隔绝的地方,否则你们就会知道我们一直在将语言模型和智能体部署到旨在帮助专业开发人员的工具中,例如 GitHub Copilot、Cursor 和 Replit。 他们可以读写代码、调试、创建文档和编写测试。 一项研究表明,使用 Copilot 的开发人员完成任务的速度提高了 55%,所以我们至少知道这可以加快人们的速度。 从个人经验来看,我可以说,使用这些工具后,我会成为一名更优秀的程序员,但我知道人们对这些工具有很多怀疑和争议。 也许他们只是在创建更多的垃圾代码和错误,供大家以后处理。 3. 我对赤脚开发者的建议 但实际上我不想谈论人工智能的进步将如何影响专业开发人员。恕我直言,我们过得还不错。我们的问题很无聊。 我想谈谈不同类型的开发人员。 我称之为赤脚开发者。 这是我根据赤脚医生的想法引申的一个术语。 赤脚医生。 这是中国政府在 20 世纪 60 年代发起的一项计划,这是一个相当不错的计划。 当时,80%的人口生活在农村,没有医疗保健或医疗保健服务很差。医疗资源都集中在城市地区。 他们从农村挑选人员,并将他们培训成社区的医疗保健提供者。这些村民接受了预防保健、治疗简单疾病、诊断和接种疫苗方面的培训。 然后他们会回到家乡,为熟悉的人们服务。他们和其他人一样,仍然是赤脚农民,但现在掌握了更多的技能。 该项目取得了巨大成功。到 20 世纪 70 年代中期,中国农村的赤脚医生人数已超过 150 万。 这一时期的预期寿命从 35 岁急剧上升到 63 岁。 开发者版本不会由中央政府组织。 目前它仅以非常有限的方式存在。 为了解释这一点,我们需要考虑对编程感兴趣的人的规模。 一方面,我们有常规的计算机“最终用户”。 现在,从理论上讲,我是终端用户编程的坚定支持者,但我不得不承认,大多数人根本不关心编程,也不想学习它。我认为我们需要停止劝说普通护士、教师和治疗师,让他们在不愿意的时候编写代码。 所以无论如何,这与最终用户无关。 这也与天平另一端的专业开发人员无关。 我们都喜欢为了编程而编写代码。我们会编出各种借口来编程。 赤脚开发商就是居住在这个中间地带的人。 目前,这些人就像老师一样,制作精美的 Notion 电子表格来管理课程。 或者制作夸张的个人仪表板的学生。 或者财务规划专家制作大量电子表格。 他们精通技术,有兴趣为自己和周围的人解决问题,但不想成为成熟的程序员。 它们仍然生活在面向最终用户的应用程序世界中。 目前,他们依赖低代码和无代码工具。他们在这些工具中执行极其复杂的操作,将这些应用程序推向极限。 他们是这样的人:如果能拥有对计算机更多的控制权和权力,他们就会非常兴奋。 但他们永远无法跨越我所说的命令行墙。 它们永远不会进入终端,因为与使用 Airtable 或 Notion 之类的工具相比,复杂性、可用性和挫败感是一个巨大的飞跃。 这意味着他们的大部分工作都被托管在云端,需要他们每月支付订阅费才能访问。 与成熟的开发人员相比,他们对自己的创作拥有的自主权和权力要小得多。 但我对赤脚开发者有一个梦想,就像赤脚医生一样。 这些人深深扎根于他们的社区,因此他们了解周围人的需求和问题。 因此他们非常适合解决当地的问题。 如果获得正确的培训和工具,他们可以提供相当于基本医疗保健的服务,但相反,这只是基本的软件护理。 它们可以成为一种非官方的、分散的、自发的公共服务。 他们可以开发工业软件公司不会开发的软件解决方案——因为这样做没有足够的市场价值,而且他们对问题空间的理解也不够。这就是用户需求的长尾。 这些人对我们的新语言模型功能非常感兴趣。 我感兴趣的问题是语言模型能为赤脚开发人员做些什么。