这是用户在 2024-6-3 12:17 为 https://maggieappleton.com/home-cooked-software 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
notes

Home-Cooked Software and Barefoot Developers
家庭烹饪软件和赤脚开发者

The emerging golden age of home-cooked software, barefoot developers, and why the local-first community should help build it
家庭软件的新兴黄金时代,赤脚开发者,以及为什么本地优先社区应该帮助构建它

This is a talk I presented

in Berlin, May 2024. It's specifically directed at the community, but its relevant to anyone involved in building software.
这是我在 2024 年 5 月在柏林举办的 Local-first Conference 上发表的演讲。它专门针对本地优先社区,但对于任何参与软件构建的人都是相关的。

For the last ~year I've been keeping a close eye on how language models capabilities meaningfully change the speed, ease, and accessibility of software development. The slightly bold theory I put forward in this talk is that we're on a verge of a golden age of local, home-cooked software and a new kind of developer – what I've called the barefoot developer.
在过去的一年里,我一直密切关注语言模型如何显著改变软件开发的速度、便捷性和可访问性。我在这次演讲中提出的稍微大胆的理论是,我们正处于一个本地、家庭制作软件的黄金时代,以及一种新型开发者——我所称之为赤脚开发者。

The video recording will be up here in a few weeks, but until then, here's the transcript and slides.
视频录制将在几周后上传,但在那之前,这里是文字记录和幻灯片。

First, a quick intro. I’m Maggie. I look like this on the internet. I’m a product designer at a start-up called

. We use machine learning and language models to make tools for scientific researchers. I’m also a mediocre developer, meaning I try to build things but they sometimes don’t work.
首先,快速介绍一下。我是玛吉。在互联网上我看起来像这样。我是一家名为 Elicit 的初创公司的产品设计师。我们使用机器学习和语言模型为科研人员开发工具。我也是一个平庸的开发者,意味着我尝试构建东西,但有时候它们不起作用。

I write about and research lots of things in public, online including tools for thought, language model interfaces, and end-user programming.
我在公开的在线平台上写作和研究很多事情,包括思维工具、语言模型界面和终端用户编程。

Some of which I want to talk to you about today.
今天我想和你谈谈其中的一些。

I'm here to convince you of two things.
我在这里要说服你两件事。

First, that language models will create a golden age of local, home-cooked software and barefoot developers.
首先,语言模型将创造一个本地、家庭制作软件和赤脚开发者的黄金时代。

I’ll explain these terms in a minute.
我会在一分钟内解释这些术语。

And the second thing I want to convince you of is that the

community has a significant role to play in building that future golden age.
我想说服你的第二件事是,本地优先社区在构建未来黄金时代中发挥着重要作用。

And so here's what we're going to talk about:
所以这就是我们要谈论的内容:

  • Local-first Beyond Local Data
    本地优先超越本地数据
  • Home Cooked vs Industrial Software
    家常菜 vs 工业软件
  • My Pitch for Barefoot Developers
    我为赤脚开发者的提案
  • Why Language Model Legos Need Glue
    为什么语言模型乐高需要胶水
  • How We Can Bake Local-first Into Everything.
    我们如何将本地优先融入一切。

So let's talk about local-first, beyond local data.
让我们谈谈本地优先,超越本地数据。

I know everyone here knows what

is about, but here's a quick recap for people watching who might not.
我知道这里的每个人都知道本地优先是什么意思,但是这里为那些可能不清楚的观众做一个快速回顾。

When we talk about “local-first,” we’re primarily talking about where data lives and how it syncs to our devices.
当我们谈论“本地优先”时,我们主要是在谈论数据存储的位置以及它如何同步到我们的设备。

So in the old school world, before the cloud, our data and our software lived on a single machine and we had no way to collaborate. Except by throwing LAN parties.
所以在旧学校的世界中,在云计算之前,我们的数据和软件存储在一台机器上,我们没有协作的方式。除了举办局域网派对。

We then moved to the cloud era where all the programs and all the data live in the cloud and stream to our devices via the internet.
我们随后进入了云时代,在这个时代,所有的程序和数据都存储在云端,并通过互联网流式传输到我们的设备。

And now, everyone here is trying to make a new, beautiful local-first future happen, where the software and the data all live on our local machines and just use the cloud to sync between them whenever we get internet access.
现在,这里的每个人都在努力实现一个新的、美丽的本地优先的未来,软件和数据都存储在我们的本地设备上,只在我们获得互联网访问时使用云来进行同步。

The existing philosophy of local-first is fantastic. I’m on board with it, I know you all are too.
现有的本地优先哲学太棒了。我支持它,我知道你们也是。

But come expand your minds with me for a moment, and imagine a more holistic vision for local software.
但请跟我一起打开思维,想象一下对本地软件有一个更全面的愿景。

What if it was about more than just databases?
如果不仅仅是关于数据库呢?

Local traditionally means something close to your home, something familiar, intimate, and trusted by you, something unique to its location, and something community-oriented, as in supporting local businesses.
本地传统上意味着与您家庭附近的事物有关,是您熟悉、亲密并信任的事物,是独特于其位置的事物,是以社区为中心的事物,比如支持本地企业。

So there's an interpretation of local software that means software that is built close to the home and serves the needs of the home.
因此,本地软件的解释是指那些接近家庭并满足家庭需求的软件。

It’s software someone might build for themselves, their family and friends, their neighborhood and community.
这是某人可能为自己、家人和朋友、邻里和社区建立的软件。

It solves local problems for local people.
它解决了当地人的当地问题。

This idea has been floating around with various names attached to it for the last 20 years.
这个想法在过去 20 年中一直在各种名称下流传。

Clay Shirky first proposed the concept of ‘

’ in 2004.
Clay Shirky 在 2004 年首次提出了“situated software”概念。

He defined this as software “designed in and for a particular social situation or context.”
他将这定义为软件“在特定社会情境或背景中设计和开发的”。

He painted a vision of applications that could be used by dozens of users rather than thousands or millions. This is an absurd target population both then and now.
他描绘了一种应用程序的愿景,可以被数十个用户而不是数千或数百万用户使用。这是一个荒谬的目标人群,无论是过去还是现在。

The dream was that communities would get very form-fit tools for their particular needs, rather than trying to adapt generic software to solve them.
梦想是社区会得到非常贴合其特定需求的工具,而不是试图调整通用软件来解决问题。

Unfortunately, Shirky was ahead of his time – it was practically impossible to build this small-scale software in 2004.
不幸的是,Shirky 领先于他的时代 - 在 2004 年几乎不可能构建这种小规模软件。

Sixteen years later, in 2020, Robin Sloan published a blog post called “

” which picked up on many of the same themes.
十六年后,2020 年,Robin Sloan 发表了一篇名为“应用程序可以是一顿家常饭”的博客文章,其中涵盖了许多相同的主题。

He talked about building a tiny app for his family to send short videos to one another. Only his family have access. He’s not going to turn it into a start-up. It doesn’t have any commercial or market value.
他谈到为他的家人建立一个小应用程序,用于彼此发送短视频。只有他的家人可以访问。他不打算将其变成一家初创公司。它没有任何商业或市场价值。

He made it out of care and love for the people around him to help them solve a small problem and have enjoyable experiences together.
他出于对周围人的关心和爱而制作出来,以帮助他们解决一个小问题,并一起享受愉快的经历。

Just like he would if he had made them a home-cooked meal.
就像他如果为他们做了一顿家常饭一样。

Home-cooked apps, like meals, are apps you make for the people you know and love.
家常应用程序,就像家常菜一样,是您为您认识和爱的人制作的应用程序。

We’ve progressed enough since 2004 that someone can make one of these on their own.
自 2004 年以来,我们已经取得了足够的进步,以至于有人可以自己制作其中之一。

They’re simple – they require some skills, but not tons.
它们很简单 - 它们需要一些技能,但不需要很多。

They’re cheap or free to run – you’re not at the mercy of a corporate pricing strategy.
它们的运行成本低廉甚至免费 - 您不受企业定价策略的控制。

You control what happens to them – you control whether features are added or removed, and whether they’ll be shut down or sunset.
您控制他们的命运 - 您控制功能是添加还是删除,以及它们是否会被关闭或被淘汰。

Private – won’t sell your data.
私密 - 不会出售您的数据。

Serve your specific needs.
满足您的特定需求。

No financial pressure to monetize them or make a profit off them.
没有财务压力来将它们货币化或从中获利。

Safe – very little risk of nefarious actors or misaligned incentives.
安全-非常小的恶意行为者或不一致激励的风险。

Made with love and care.
用爱心和关怀制作。

I like collecting examples of these.
我喜欢收集这些的例子。

Here's an app to track newborn breastfeeding and diaper changes.
这是一个用于追踪新生儿哺乳和换尿布的应用程序。

Why put your baby’s bodily functions on someone else's server?
为什么要把你宝宝的生理功能放在别人的服务器上?

Here’s one for reconciling personal finances that’s described as a mashup between Superhuman and Tinder, which sounds much more fun than standard financial software.
这是一个用来调和个人财务的工具,被描述为超级人和 Tinder 之间的混合体,听起来比标准财务软件更有趣。

A live sales dashboard made with an old phone - a nice way to reuse hardware.
用旧手机制作的实时销售仪表板-重新利用硬件的好方法。

This is one someone made for their diabetic partner. The default interface on their glucose monitor wasn't giving them the critical information they needed, so they took matters into their own hands and made one that did.
这是某人为他们的糖尿病伴侣制作的。他们的血糖监测仪上的默认界面没有提供他们所需的关键信息,因此他们自己动手制作了一个能提供这些信息的界面。

I think it's fitting that all of these examples of home-cooked apps deal with the kind of data you don't want leaving your personal home, like your children, bodily functions, health, and finances.
我认为所有这些家庭烹饪应用程序的例子都很合适,因为它们涉及到您不希望离开个人家庭的数据,比如您的孩子、身体功能、健康和财务。

Robin Sloan’s post on home-cooked apps hit a nerve. It’s been a wildly popular piece endlessly passed around the programming community.
Robin Sloan 关于家庭烹饪应用的帖子引起了共鸣。这是一篇在编程社区中广受欢迎的文章,被无数人传阅。

I think this is because it pointed to many tensions we have around the way software is currently built.
我认为这是因为它指出了我们在当前软件构建方式周围存在的许多紧张关系。

These small-scale, personal apps...
这些小型、个人化的应用程序...

..are drastically different from the kind of software most of us use every day, which is professionally made software.
..与我们大多数人每天使用的专业软件截然不同。

This is like a meal or cake made by a professional chef at a restaurant. Probably much more delicious than yours.
这就像是在餐厅由专业厨师制作的一顿饭或蛋糕。可能比你的要美味得多。

But it is likely more complex, more expensive to make, and requires many people with expertise.
但这很可能更加复杂、更昂贵,并且需要许多具有专业知识的人。

You can’t control how it’s built, how long it lives for, or how much butter they put in it.
你无法控制它是如何建造的,它能活多久,或者他们放了多少黄油进去。

Has commercial interests at heart, rather than familial love and care.
以商业利益为重,而不是家庭的爱和关怀。

Less security and privacy – you don’t know where the data is going.
安全性和隐私性较差 - 您不知道数据去哪里。

And professional software is the kind of software almost everyone in the world uses. It's made for masses of people, at a global scale, by huge corporations.
专业软件是世界上几乎每个人都在使用的软件。它是由大型公司为全球大众量身定制的。

At the moment, we’re in the industrial, high-modernism age of software, where these standardized, one-size-fits-all apps are made for us by people who don’t know much about us.
目前,我们正处于工业化、高现代主义软件时代,这些标准化的、一刀切的应用程序是由不太了解我们的人为我们制作的。

Primarily people working for large Californian corporations and shipping their software overseas.
主要是为加利福尼亚大型公司工作并将他们的软件运往海外的人。

They’re sitting in San Fransisco trying to understand our pains and problems over Zoom calls and customer support tickets.
他们坐在旧金山,通过 Zoom 电话和客户支持票尝试理解我们的痛苦和问题。

They have so little context on our lives, what problems we need solved, and what we value.
他们对我们的生活了解甚少,不清楚我们需要解决什么问题,以及我们重视什么。

How could an American getting paid six figures in Mountain View understand how to identify problems and design solutions for a homemaker in Tokyo, a street seller in Turkey, or a doctor in Tunisia?
一个在 Mountain View 拿着六位数薪水的美国人如何能够理解如何为东京的家庭主妇、土耳其的街头卖主或突尼斯的医生识别问题并设计解决方案呢?

For the most part, they don’t. Or if they try, they do it badly.
在大多数情况下,他们不这样做。或者如果他们尝试,他们做得很糟糕。

My friend Kasey Klimes wrote a fantastic piece called “

” on the design dynamics of large-scale software after working on Google Maps.
我的朋友 Kasey Klimes 在谷歌地图工作后写了一篇名为“何时设计出现”的奇妙文章,讨论了大规模软件设计动态。

He points out that our current approach is designed to only solve the most common needs of the most number of users.
他指出,我们目前的方法只是设计来解决最多用户最常见需求。

Anything beyond that is what we call the long tail of user needs. These are things only a few people need, but there's a nearly infinite amount of them.
超出这个范围的就是我们所说的用户需求的长尾。这些是只有少数人需要的东西,但数量几乎是无限的。

In the case of Google Maps, the long tail of user needs is anything beyond "how do I get from here to there?”
在谷歌地图的情况下,用户需求的长尾是指除了“我怎么从这里到那里?”之外的任何事物

Google Maps is never going to support showing historical borders or tidal patterns, even if those things are essential to a few dozen, or even a few hundred people.
谷歌地图永远不会支持显示历史边界或潮汐模式,即使这些对几十人甚至几百人至关重要。

In the current system, this stuff is always considered out of scope.
在当前系统中,这些东西总是被视为超出范围。

Because it doesn't make any financial sense to support the long tail.
因为支持长尾并没有任何财务意义。

Industrial software can only target the biggest problems for the most people, ideally wealthy people with disposable income.
工业软件只能针对最多人的最大问题,理想情况下是有可支配收入的富人。

This is an economic limitation. Building features that solve every single long tail need requires a lot of engineering labor...
这是一个经济限制。构建能够解决每一个长尾需求的功能需要大量的工程劳动...

...and engineers are very expensive.
工程师非常昂贵。

For industrial software, you need large teams of developers and designers and product people who demand high salaries in exchange for their valuable, hard-won expertise.
对于工业软件,您需要庞大的开发人员、设计师和产品人员团队,他们要求高薪以换取他们宝贵、辛苦赢得的专业知识。

And the way we fund this is primarily through US-based venture capital funding, which demands hockey stick growth in return.
我们主要通过美国的风险投资来资助这一点,这要求回报率呈现“曲棍球杆”式增长。

All the focus goes into making hundreds of millions or ideally billions of dollars in profit to pay back their investors.
所有的关注都集中在赚取数亿甚至数十亿美元的利润,以偿还投资者的资金。

As a member of a team that's in the middle of doing this, I can say it affects every single decision about how we build the software and what features are prioritized.
作为正在进行此工作的团队成员,我可以说这影响了我们构建软件以及哪些功能优先考虑的每一个决定。

I've drawn a little map to help make these dynamics clear.
我画了一张小地图,以帮助澄清这些动态。

We have scale on the horizontal axis, going from small, special snowflake software up to global industrial software.
我们在水平轴上有一个尺度,从小型、特殊的雪花软件到全球工业软件。

And profit on the vertical axis, so unicorn companies making billions of dollars versus financial sinkholes.
在垂直轴上获利,所以独角兽公司赚取数十亿美元与金融陷阱相比。

Most software today sits in this upper right quadrant of being large-scale and aiming to make as much money as possible.
大多数软件今天都位于这个右上象限,规模庞大,旨在赚取尽可能多的钱。

Anything that falls below the profit line ends up being a short-lived failure—it's not allowed to survive long in the marketplace.
任何低于利润线的东西最终都会成为短暂的失败——在市场上无法长期生存。

But over here on the left-hand side of small-scale, specific software, we have the land of opportunity.
但是在这里,在小规模、具体的软件左侧,我们有机会之地。

This kind of software doesn't even need to make a profit; it just has to operate at a very low cost, although maybe it could make some small to medium amount of profit over the long term.
这种软件甚至不需要盈利;它只需要以非常低的成本运作,尽管也许它可以在长期内获得一些小到中等规模的利润。

But this land of opportunity currently has a skill issue.
但是这片机会之地目前存在技能问题。

Because the Venn diagram of people with the skills to make home-cooked software and professional developers is essentially...
由于具备制作家庭软件和专业开发人员技能的人员的维恩图基本上是...

...a concentric circle. 一个同心圆。

All the examples of home-cooked software I showed were made by people who work as professional developers.
我展示的所有家庭软件示例都是由专业开发人员制作的。

The vast majority of people who might want to make a piece of home-cooked software can't because software development is too complex. Even those of us who are professionals don't always have the right knowledge to make a full-stack app for ourselves.
绝大多数想要开发一款家庭软件的人无法实现,因为软件开发过于复杂。即使是我们这些专业人士,也并非总是拥有制作全栈应用程序所需的正确知识。

This isn’t news to anyone. This has been the main complaint of end-user programming advocates for decades.
这对任何人都不是新闻。这是终端用户编程倡导者几十年来的主要抱怨。

So widespread, local, home-cooked software is still just a pipe dream.
如此广泛、本地化、家庭烹饪的软件仍然只是一个白日梦。

This is a shame because we know the world is full of problems to be solved. While not all of those problems have software-shaped solutions, a whole bunch of them do.
这是一种耻辱,因为我们知道世界充满了需要解决的问题。虽然并非所有这些问题都有软件形式的解决方案,但其中有很多问题确实有。

It's hard to argue it wouldn't be overwhelmingly net good for more people to be capable of designing and building their own software to solve problems for their local communities.
很难否认,让更多人有能力设计和构建自己的软件来解决本地社区问题,这将是一种极大的好处。

So what happens if some parts of software development get faster, easier, and cheaper?
那么,如果软件开发的某些部分变得更快、更容易和更便宜,会发生什么?

Well, 4 years ago, OpenAI released GPT-3, the first meaningfully capable large language model. And since then, we've been on a bit of a ride.
嗯,4 年前,OpenAI 发布了 GPT-3,第一个具有实质能力的大型语言模型。从那时起,我们一直在经历一段旅程。

Now, when I say large language model...
现在,当我说大型语言模型时...

I'm talking about what everyone else calls AI. But I think that term is too general.
我在谈论其他人所称的人工智能。但我认为这个术语太笼统了。

I'm specifically talking about models that are made using deep learning and neural networks.
我特别指的是使用深度学习和神经网络制作的模型。

These are primarily large language models, but this also includes vision and action models.
这些主要是大型语言模型,但也包括视觉和行动模型。

They are models that can understand words, code syntax, images, and interface actions based on human training data.
它们是能够根据人类训练数据理解单词、代码语法、图像和界面操作的模型。

I'm also talking about what's come to be called agents.
我也在谈论所谓的代理商。

This is when we get large language models to behave like an agent that can make plans and decisions to try and achieve goals we give them.
这就是当我们让大型语言模型表现得像一个能制定计划和决策、试图实现我们给予的目标的代理人时。

We give these agents access to external tools like web search, calculators, and the ability to write and run code.
我们让这些代理人可以访问外部工具,如网络搜索、计算器,以及编写和运行代码的能力。

As well as long-term memory stores in databases.
以及数据库中的长期记忆存储。

And we get them to mimic logical thought patterns like having them observe what they know, plan what they want to do next, critique their own work, and think step by step.
我们让他们模仿逻辑思维模式,比如让他们观察他们所知道的事情,计划接下来要做什么,批评自己的工作,并逐步思考。

The agent gets to decide what tool it wants to use at any one point to solve the problem we've given it.
代理人可以决定在任何时候使用什么工具来解决我们给定的问题。

This architecture of chaining together tools and logic makes language models far more capable than they would be otherwise.
将工具和逻辑链接在一起的这种架构使得语言模型比它们本来能够做到的更有能力。

They end up being able to do quite sophisticated tasks within our existing programming environments.
他们最终能够在我们现有的编程环境中执行相当复杂的任务。

Unless anyone here has been living under a rock, you know we've been deploying language models and agents into tools designed to help professional developers like GitHub Copilot, Cursor, and Replit.
除非这里有人一直生活在石头下,否则你们都知道我们一直在部署语言模型和代理到旨在帮助专业开发人员的工具中,比如 GitHub Copilot、Cursor 和 Replit。

They can read and write code, debug things, create documentation, and write tests.
他们可以阅读和编写代码,调试程序,创建文档,并编写测试。

One study showed that developers using Copilot were 55% faster at completing tasks, so we at least know this speeds people up.
一项研究显示,使用 Copilot 的开发人员完成任务的速度提高了 55%,所以至少我们知道这可以加快人们的速度。

I can say from personal experience I am a much better programmer with access to these tools, but I appreciate there's a lot of skepticism and controversy over them.
我可以从个人经验中说,有了这些工具,我成为了一个更好的程序员,但我也意识到很多人对它们持怀疑态度并存在争议。

Perhaps they’re just creating more crap code and bugs for everyone to deal with down the line.
也许他们只是在为每个人制造更多的垃圾代码和错误,以便以后处理。

But I actually don't want to talk about how advances in AI will affect professional developers. With all due respect, we have it pretty good. Our problems are boring.
但实际上,我并不想谈论人工智能的进步将如何影响专业开发人员。恕我直言,我们的情况相当不错。我们的问题很无聊。

I want to talk about a different kind of developer.
我想谈谈一种不同类型的开发者。

What I call barefoot developers.
我所说的赤脚开发者。

This is a term I’ve made up, based on the idea of...
这是我编造的一个术语,基于的想法...

Barefoot doctors. 赤脚医生。

Initiative by Mao’s government in China in the 1960s. I'm not saying everything Mao did was great, but this was a pretty good program. I'm sure he had very little to do with it.
毛泽东政府在 1960 年代在中国发起的倡议。我不是说毛泽东所做的一切都很伟大,但这是一个相当不错的计划。我相信他与此几乎没有什么关系。

At the time, 80% of the population lived in rural areas but had no or poor access to healthcare. Medical expertise was all concentrated in urban areas.
当时,80%的人口生活在农村地区,但却无法或很少能够获得医疗保健。医疗专业知识都集中在城市地区。

They selected people from rural villages and trained them up to become healthcare providers for their communities. These villagers were taught preventative care, curing simple ailments, diagnoses, and giving vaccines.
他们从农村村庄中挑选人员,并对他们进行培训,使他们成为社区的医疗服务提供者。这些村民接受了预防保健、治疗简单疾病、诊断和接种疫苗的培训。

And then they would return to their home villages to serve the people they knew. They were still barefoot peasants like everyone else, but now with more skills.
然后他们会回到自己的家乡为他们认识的人服务。他们仍然像其他人一样赤脚的农民,但现在拥有更多的技能。

The program was a wild success. By the mid-1970s, there were over 1.5 million barefoot doctors serving in China's villages.
该计划取得了巨大成功。到了 1970 年代中期,中国农村有超过 150 万名赤脚医生。

Life expectancy over that period rose dramatically from 35 years to 63 years.
在那段时期,预期寿命从 35 岁大幅提高到 63 岁。

The developer version isn’t going to be organized by a central government.
开发者版本不会由中央政府组织。

It only exists in very limited ways at the moment.
目前它只以非常有限的方式存在。

To explain this, we need to think about the scale of people interested in programming.
为了解释这一点,我们需要考虑对编程感兴趣的人群规模。

On one side, we have regular “end-users” of computers.
一方面,我们有常规的计算机“终端用户”。

Now, in theory, I’m a big proponent of end-user programming, but I have to admit most of these people don’t give a shit about programming and don’t want to learn it. I think we need to stop harassing normal nurses, teachers, and therapists to code when they don't want to.
现在,在理论上,我是终端用户编程的坚定支持者,但我不得不承认,大多数人根本不在乎编程,也不想学习它。我认为我们需要停止骚扰普通的护士、教师和治疗师去编程,当他们不想要时。

So anyway, this is not about end-users.
所以无论如何,这不是关于最终用户的。

It is also not about professional developers on the other side of the scale.
这也不是关于另一端的专业开发人员。

We all love writing code for its own sake. We will invent excuses to program.
我们都热爱编写代码本身。我们会编造借口来编程。

Barefoot developers are going to be people who live in this middle bit.
赤脚开发者将是生活在这个中间地带的人。

At the moment, these are people like the teachers who make elaborate Notion spreadsheets for managing classes.
目前,这些人就像那些为管理课程制作精心设计的 Notion 电子表格的教师一样。

Or students who make over-the-top personal dashboards.
或者制作过度个性化的个人仪表板的学生。

Or financial planning wonks producing extensive spreadsheets.
或者制作大量电子表格的财务规划迷。

They are people who are technically savvy and interested in solving problems for themselves and people around them, but don't want to become fully-fledged programmers.
他们是技术娴熟且乐于为自己和周围人解决问题的人,但不想成为全职程序员。

They still live within the world of end-user-facing applications.
他们仍然生活在面向最终用户的应用程序世界中。

At the moment, they rely on low and no-code tools. And they do wildly complex things within them, pushing these apps to their limits.
目前,他们依赖于低代码和无代码工具。他们在这些工具中做出了极其复杂的事情,将这些应用程序推向了极限。

They are the kinds of people who would be thrilled to have more agency and power over computers.
他们是那种会为能够拥有更多对计算机的控制权和权力而感到兴奋的人。

But they never make it over what I call the command line wall.
但他们从未越过我所称之为命令行墙的障碍。

They never end up in the terminal, because that is a huge jump in complexity, usability, and frustration from using something like Airtable or Notion.
他们永远不会最终停留在终端,因为从使用类似 Airtable 或 Notion 的东西跳转到终端会带来复杂性、可用性和挫折感的巨大飞跃。

This means most of their work is held hostage in the cloud and requires them to pay monthly subscription fees to access it.
这意味着他们的大部分工作被托管在云端,需要他们支付每月订阅费才能访问。

They have far less agency and power over their creations than full-blown developers.
他们对自己的创作拥有的权力和能力远远不如专业开发人员。

But I have this dream for barefoot developers that is like the barefoot doctor.
但我对赤脚开发者有一个梦想,就像赤脚医生一样。

These people are deeply embedded in their communities, so they understand the needs and problems of the people around them.
这些人深深扎根于他们的社区,因此他们了解周围人们的需求和问题。

So they are perfectly placed to solve local problems.
因此,他们非常适合解决当地问题。

If given access to the right training and tools, they could provide the equivalent of basic healthcare, but instead, it’s basic software care.
如果他们获得了正确的培训和工具,他们可以提供相当于基本医疗的服务,但实际上,他们提供的是基本软件维护。

And they could become an unofficial, distributed, emergent public service.
他们可以成为一个非官方的、分布式的、新兴的公共服务。

They could build software solutions that no industrial software company would build—because there’s not enough market value in doing it, and they don’t understand the problem space well enough. This is the long tail of user needs.
他们可以构建工业软件公司不会构建的软件解决方案——因为在这方面没有足够的市场价值,并且他们对问题领域了解不够。这就是用户需求的长尾。

And these people are the ones for whom our new language model capabilities get very interesting.
这些人就是我们新的语言模型能力变得非常有趣的人。

I’m interested in the question of what language models can do for barefoot developers.
我对语言模型能为赤脚开发者做什么这个问题很感兴趣。

This is a now infamous tweet by one of OpenAI's co-founders, Andrej Karpathy, claiming "The hottest new programming language is English.”
这是 OpenAI 联合创始人之一 Andrej Karpathy 发布的一条臭名昭著的推文,声称“最热门的新编程语言是英语”。

What he meant by this is that these models can accept natural language input in the form of descriptions of interfaces or software functionality and output working code.
他的意思是,这些模型可以接受自然语言输入,例如接口或软件功能描述,并输出可工作的代码。

We are still in the very early days of this, but there are already a few prototypes out in the wild that show what's becoming possible.
我们仍处于这个阶段的早期阶段,但已经有一些原型在野外出现,展示了可能变得可能的东西。

This is

. It generates working interfaces based on text descriptions of what you want.
这是 Vercel 的 V0。它根据您想要的文本描述生成工作界面。

I've told it to make me a personal finance dashboard with feature cards showing me my daily purchases, my recent transactions, and my income over the last couple of months.
我已经告诉它为我制作一个个人财务仪表板,其中包括显示我的日常购买、最近交易和过去几个月收入的功能卡。

It’s given me three versions to pick from.
它给了我三个版本可供选择。

I can add follow-up instructions for how I want it to iterate on this interface. This gives me a good feedback loop.
我可以为如何在这个界面上进行迭代添加后续说明。这为我提供了一个良好的反馈循环。

I asked to add accounts and bills pages to the sidebar. It produced working code I can view and edit.
我要求将账户和账单页面添加到侧边栏。它生成了我可以查看和编辑的工作代码。

I can also directly select elements and ask it to edit them.
我也可以直接选择元素并要求编辑它们。

Another good example of this is

's prototype.
这个的另一个很好的例子是 TLDraw 的 Make Real 原型。

I'm lucky enough to hang out with them sometimes and – unbiasedly – I think they're doing some of the most interesting work in generative interfaces.
我很幸运能有时和他们一起出去玩,客观地说,我认为他们在生成界面方面做了一些最有趣的工作。

The odd thing is they're nominally just building whiteboarding software.
奇怪的是,他们名义上只是在开发白板软件。

But they hooked up a multi-modal language model (GPT-4 Omni) to their canvas so that you can draw any kind of interface you like and annotate it with red drawings and text to tell the system how you want it to work
但他们将一个多模态语言模型(GPT-4 Omni)连接到他们的画布上,这样你就可以绘制任何你喜欢的界面,并用红色的图画和文本进行标注,告诉系统你希望它如何工作

And then click this “make real” button and it will make your selection into a real working piece of software.
然后点击这个“使真实”按钮,它将把您的选择变成一个真正的工作软件。

Here's another one that instantly makes a photo booth app with a live camera feed from your device.
这是另一个可以立即使用您设备的实时摄像头视频流制作照相亭应用程序的工具。

This required no custom code to make work. GPT-4 Omni just made it work.
这不需要定制代码就能运行。GPT-4 Omni 只是让它运行。

Because this environment is an infinite whiteboard, you can select your current prototype, add annotations to it, and generate new versions.
因为这个环境是一个无限白板,您可以选择您当前的原型,对其进行注释,并生成新版本。

This

tool is online – you can go use it now.
这个 Make Real 工具是在线的 - 你现在可以去使用它。

If you're someone who's skeptical about the capabilities of language models, I suggest you spend some time playing with this.
如果你对语言模型的能力持怀疑态度,我建议你花一些时间来玩玩这个。

This all feels exceptionally promising for the future of local, home-cooked software.
这一切对本地、家庭烹饪软件的未来都感觉异常有希望。

Remember that the stuff barefoot developers need to build is not as complex as professional industrial software we’re all used to working on.
记住,赤脚开发者需要构建的东西并不像我们都习惯于工作的专业工业软件那样复杂。

They don't need to scale up to millions of people, juggle conflicting user needs, or pivot their business plans, or ship lots of features very fast to make a high return for venture capitalists.
他们不需要扩大规模到数百万人,同时满足冲突的用户需求,或调整他们的商业计划,或快速推出大量功能,以便为风险投资者带来高回报。

Most of the software needs of local communities could be solved with simple CRUD apps persisting data over time, with some basic user authentication, and a few API calls.
大多数本地社区的软件需求可以通过简单的 CRUD 应用程序解决,这些应用程序可以持久保存数据,具有一些基本的用户身份验证和一些 API 调用。

So as much as I expect the number of professional developers to grow in the coming years.
尽管我期待未来几年专业开发人员的数量会增长。

I expect the number of barefoot developers to grow exponentially more.
我预计赤脚开发者的数量将呈指数级增长。

But to get to that world of millions of barefoot developers, we have some problems to work through in the current moment.
但要进入那个数百万赤脚开发者的世界,我们在当前时刻有一些问题需要解决。

And the way I'm going to put this is that language model legos need glue.
我要说的是,语言模型积木需要胶水。

Language models give you a bunch of disconnected lego pieces.
语言模型给你一堆不相连的乐高积木。

It can make pretty interface elements for you, it can manage state for you, make API calls, and write basic logic. But it doesn't tell you how to stick all these things together into a working application.
它可以为您创建漂亮的界面元素,可以为您管理状态,进行 API 调用,并编写基本逻辑。但它不会告诉您如何将所有这些东西组合成一个可运行的应用程序。

Meanwhile, you want a cool castle, and it's very unclear how you are supposed to make a castle from these disconnected lego pieces.
同时,你想要一个酷酷的城堡,但很不清楚你应该如何用这些不连贯的乐高积木来建造城堡。

At the moment, you still need the knowledge of professional developers to glue them together.
目前,您仍然需要专业开发人员的知识来将它们粘合在一起。

If you generate something in

or you still have no idea how you might deploy that to a particular web domain or to your iPhone.
如果您在 Vercel 的 V0 或 TLDraw 中生成了某些内容,您仍然不知道如何将其部署到特定的网络域或您的 iPhone。

Or persist data by setting up a database. You probably don't know what a database is.
通过设置数据库来持久化数据。你可能不知道什么是数据库。

Add multiplayer collaboration
添加多人合作

Have multiple users log in with different view and editing permissions
具有不同视图和编辑权限的多个用户登录

And 99 others I haven’t thought of that Hacker News will tell me about later.
还有 99 个我没有想到的,Hacker News 以后会告诉我的。

We're missing the glue that brings all these pieces together into working software. And the glue comes in two forms.
我们缺少将所有这些部分组合成可运行软件的粘合剂。而这种粘合剂有两种形式。

We first need language model agents that are designed to act as central orchestrators for home-cooked software projects.
我们首先需要设计为家庭软件项目充当中央协调器的语言模型代理。

These agents can guide barefoot developers through the process of writing technical specifications and help them work out what kinds of tools they might need for a piece of software.
这些代理可以指导赤脚开发者编写技术规范的过程,并帮助他们确定为软件所需的工具类型。

And then we also need tools that are designed to talk to and work with these orchestration agents.
然后我们还需要设计用来与这些编排代理进行交流和协作的工具。

I expect these agents will have a set of default tools they’ve been taught how to use and call on whenever their human needs to build some new software.
我期望这些代理人将拥有一套默认工具,他们已经学会如何使用,并在他们的人类需要构建一些新软件时调用。

These might be APIs to multiplayer collaboration infrastructure, database managers, and deployment pipelines.
这些可能是用于多人协作基础设施、数据库管理器和部署流水线的 API。

Which brings me back to the topic near and dear to all of your hearts. Local-first.
这让我回到了大家心中最关心的话题。本地优先。

If I'm at all right about there being a sudden explosion of local, home-cooked software, how does this affect the strategy of the local-first movement?
如果我对本地、家庭制作软件突然爆发的看法有一定道理,那么这将如何影响本地优先运动的策略?

How would you try and make sure local-first is baked into this future by default?
你会如何确保本地优先默认地融入到未来中?

Because this default tool set for barefoot developers should really have a database that’s a local-first database, right?
因为这个针对裸奔开发者的默认工具集应该真的有一个本地优先的数据库,对吧?

And once their apps are deployed, it would be nice if they worked offline, right?
一旦部署他们的应用程序,如果它们可以离线工作,那就太好了,对吧?

Barefoot developers might not know to ask for these things in their technical specs or prompts. Whatever defaults are baked into these agents and their available tools are going to make a lot of decisions for them.
光脚开发者可能不知道在他们的技术规范或提示中要求这些东西。这些代理和可用工具中预设的内容将为他们做出许多决定。

If you're currently building local-first tools, you should consider what kinds of interfaces would make them accessible to barefoot developers and their future agents.
如果您目前正在构建本地优先工具,您应该考虑哪种界面能够让赤脚开发者及其未来代理人轻松使用。

Can someone prompt their way into a local-first setup in plain English? Could they write a technical spec in markdown and end up with a working database?
有人能用简单的英语提示他们进入本地优先设置吗? 他们能够用 Markdown 编写技术规范并最终获得一个可用的数据库吗?

Could you develop your own small language model that guides someone through setting up your tool?
你能开发自己的小型语言模型,引导某人设置你的工具吗?

Frankly, can you stick

onto the front of your system and start letting people build full-stack apps with it?
坦率地说,您能把 TLDraw 粘贴到您的系统前面,然后让人们用它构建全栈应用程序吗?

To give you some motivation, I want you to imagine a future where we do get the explosion of local, home-cooked software, but it's not local-first.
为了给你一些动力,我希望你能想象一个未来,在那里我们确实会看到本地、家庭烹饪的软件爆炸,但它并不是本地优先。

We get powerful, flexible tools that let barefoot developers make lots and lots of local, home-cooked software. They solve all kinds of specific, local problems for the people around them. Their communities love it. They become dependent on what they’ve built.
我们获得了强大、灵活的工具,让光脚的开发者能够制作大量本地、家庭制作的软件。他们解决周围人的各种具体、本地问题。他们的社区喜欢这些软件。他们变得依赖于他们所建立的东西。

But the software and the data behind it are all held in the cloud. And you have to keep paying a monthly subscription fee to access it. And then suddenly the terms of service change. And there's a giant advertisement in the middle of every homepage. And the subscription fee doubles.
但是软件和其背后的数据都存储在云端。您必须继续支付每月订阅费才能访问它。然后突然服务条款发生变化。每个主页中间都有一个巨大的广告。订阅费也翻倍。

And it turns out what they’ve built was never actually theirs all along.
结果表明,他们所建立的东西从一开始就不是真正属于他们的。

I expect that would be a super lucrative business model.
我预计这将是一个非常赚钱的商业模式。

So I think you should care about this because the local-first movement and the local, home-cooked software vision are distinct but philosophically aligned.
所以我认为你应该关心这个,因为本地优先运动和本地、家庭烹饪软件愿景在哲学上是不同但是相互一致的。

They’re built on the same foundational values: that users should have agency and ownership over their data and software.
它们建立在相同的基本价值观上:用户应该对自己的数据和软件拥有自主权和所有权。

At the moment this community is focused on solving hard technical problems, but you should keep an eye on what’s developing around you as parts of the software-making process rapidly become more accessible and democratized.
目前,这个社区专注于解决困难的技术问题,但您应该密切关注周围正在发展的事物,因为软件制作过程的某些部分迅速变得更加易于访问和民主化。

We can weave the local and local-first philosophies together and build tools that serve both of them. I really want local-first to be the default choice for local software. The alternative feels unquestionably worse.
我们可以将本地和本地优先的理念结合起来,构建同时服务两者的工具。我真的希望本地优先成为本地软件的默认选择。另一种选择无疑感觉更糟。

The extent to which these two visions overlap and complement each other is up to everyone in this community to decide.
这两种愿景重叠和互补的程度取决于这个社区中的每个人来决定。

I want to end this with a quote by Ivan Illich, who I'm sure many of you have heard of.
我想以伊凡·伊利奇的一句话结束这篇文章,我相信你们很多人都听说过他。

He wrote a wonderful book called "

" where he talked about the importance of people being able to make tools for themselves.
他写了一本名为《共荣工具》的精彩书籍,在书中谈到了人们能够为自己制造工具的重要性。

He says, "People need not only to obtain things; they need above all the freedom to make things among which they can live, to give shape to them according to their own tastes, and to put them to use in caring for and about others."
他说:“人们不仅需要获得东西;最重要的是他们需要自由地创造能够生活的东西,根据自己的口味塑造它们,并将它们用于关心和照顾他人。”

Software is no exception to this.
软件也不例外。

That is the end of my talk. Thank you very much for listening.
这就是我的讲话结束了。非常感谢你们的倾听。

I want to say this was a very challenging talk to write and it's the first time I've done it. I had to try to make some very big claims and back them up.
我想说这是一次非常具有挑战性的演讲写作,这是我第一次这样做。我不得不尝试提出一些非常重要的主张并加以支持。

I would really love constructive criticism about places you think I'm wrong or I've overlooked important details. Just please be kind about it.
我真的很希望得到建设性的批评,关于你认为我错了或者我忽略了重要细节的地方。请友善地提出。

Want to share? 想分享吗?