---
title: "在一个拥挤的市场中，通过长期耕耘，将副项目发展至100万美元的年经常性收入 - Angryecho"
description: "公司 Buttondown 创始人 Justin Duke 营收 8.3万美元/月 Justin Duke 并不喜欢现有的大型公司运营 Newsletter（通讯邮件）的方式。因此，他在全职工作之余，利用业余时间打造了 Buttondown。这份工作为他提供了所需的“启动资金”——以及“安心感”。"
canonical_url: "https://www.angryecho.com/c/zi_you_zhi_ye_she_qu/p/P2TBAVWvTu5WaPsGye3YB"
meta:
  "og:description": "公司 Buttondown 创始人 Justin Duke 营收 8.3万美元/月 Justin Duke 并不喜欢现有的大型公司运营 Newsletter（通讯邮件）的方式。因此，他在全职工作之余，利用业余时间打造了 Buttondown。这份工作为他提供了所需的“启动资金”——以及“安心感”。"
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBAVWvTu5WaPsGye3YB%2Crevision_~MjAyNi0xMC0yNFQwMjo1Nzo1MC43NTE0MjFa%2Cp_Ii9jL3ppX3lvdV96aGlfeWVfc2hlX3F1L3AvUDJUQkFWV3ZUdTVXYVBzR3llM1lCIg%2Cs_OIlj_yOXgMjpqu_u.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": 在一个拥挤的市场中，通过长期耕耘，将副项目发展至100万美元的年经常性收入
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **在一个拥挤的市场中，通过长期耕耘，将副项目发展至100万美元的年经常性收入**

# 公司

Buttondown

# 创始人

Justin Duke

# 营收

> 8.3万美元/月

Justin Duke 并不喜欢现有的大型公司运营 Newsletter（通讯邮件）的方式。因此，他在全职工作之余，利用业余时间打造了 Buttondown。这份工作为他提供了所需的“启动资金”——以及“安心感”。如今，该业务年经常性收入（ARR）已超过 100 万美元。

以下是 Justin 分享他是如何做到的。👇

## 内容

1. 构建一款尊重人的产品
2. 由恨意与傲慢驱动
3. 构建第一个版本
4. 技术栈
5. 增长策略
6. 定高价，少道歉
7. 组建团队
8. 为何独立黑客应该保留全职工作
9. 两条建议
10. 接下来呢？

## 构建一款尊重人的产品

我是 Justin Duke，我运营着 Buttondown，这是启动并发展您 Newsletter（通讯邮件）的最佳方式。

我学习过计算机科学，职业生涯初期曾作为工程师，后来升任工程经理，就职于 Stripe 和 Amazon。我在这两家公司都学到了大量的知识——关于如何构建优秀的软件、如何管理优秀的团队、以及一家公司的成功在多大程度上依赖于枯燥但卓越的运营能力，而非任何单一天才的创意。

在加入 Stripe 之前，我创建了 Buttondown 作为一个副业项目。它始于 2017 年，是我为自己构建的一个工具，因为当时其他所有的 Newsletter 平台都感觉臃肿、充满敌意，或者两者兼有——我想要一个以 Markdown 优先、安静、并对作者和读者都充满尊重的工具。结果发现，想要这种东西的并不只有我。Buttondown 如今是一家完全自力更生且盈利的企业，为数以万计的作者提供服务，从只发给十几个朋友的业余爱好者，到向数十万用户发送邮件的作者和公司。

我引以为豪的进度衡量标准是：每天，都有人会从一家估值十亿美元的公司转投到 Buttondown。

我们目前的营收年增长率（Run Rate）已超过 100 万美元。

## 由恨意与傲慢驱动

这一切始于一种恨意，以及一点傲慢。

使用 TinyLetter 很长时间后，我想发送一封 Newsletter（通讯邮件）。我查看了现有的选项，每一个都让我觉得产品才是客户，而我只是个无足轻重的对象——无休止的升级推销、旨在最大化参与度的黑暗模式、每当我尝试写一段纯文本时，编辑器都会跟我作对。我记得当时的想法是——带着一名从未经营过业务的工程师特有的傲慢——“这究竟有多难？”

为了记录在案，答案是*非常*难。但在我意识到这一点时，我已经深陷其中。

![Buttondown 主页](https://images.indiehackers.com/post-images/eL15KZvm2ax20BtiM5i8/vOqaQ3DJwYRP8MNEjUOSMger71w1/buttondown-homepage.png?w=1400)

## 构建第一个版本

初始版本的构建成本几乎为零，唯一消耗的是时间，而这时间是我的。

那时的我的经济状况很舒适。我有一份好工作，这才是许多“勇敢的”独立创始人故事背后那个不体面却真实的真相。所需资金接近于零，这是软件作为商业模式的一个静默奇迹。真正的成本是机会成本——那些我没有去构建的项目，那些我没有在其他地方度过的夜晚。

我把多余的注意力投入在这里而不是其他地方，多亏了我的妻子，她非常有耐心且理解我为什么这么做！我在全职工作的间隙构建它——清早、深夜，以及偶尔的周末。那个限制条件其实是一个隐秘的礼物。当你每周只有几个小时可用时，你无法承担任何投机性的工作。你只能构建产品必需的那一个东西，别无其他，这在像电子邮件这样成熟的行业里很容易做到。

第一个版本小得令人尴尬：一个接收 Markdown 文本的文本框、一个订阅表单，以及一个发送邮件的按钮。就这些。没有分析功能、没有自动化、没有模板——更不用说，在很长一段时间里，我们甚至没有用户模型。

我还站在了许多不体面的基础设施之上。邮件投递确实很难——投递率、垃圾邮件合规性、整个复杂的迷宫——所以我依赖现有的投递基础设施，而不是假装能从零开始重新发明 SMTP：最初使用 Mailgun，然后是一系列其他 ESP，最近我们开发了自家的系统。其余部分是 Django、Heroku，以及大量的咖啡。

我用我知道的最便宜的方式验证了它，那就是每天使用它。它为唯一一个人解决了真实的问题。然后，我把产品放到网上，收取每月 5 美元（大部分是个玩笑），然后我从未见过的人付了钱。那是它不再只是一个玩具的时刻。

## 技术栈

后端是 Django 和 Python，数据库是 Postgres。前端多年来演变了很多，但目前作者端应用使用的是 Vue，文档/营销网站使用的是 Next.js。

随着规模扩大，驱动了最大的演变——我们重写并加固了处理邮件发送和分析的模块几次，因为能支持一百个订阅者的朴素版本在一万订阅者面前就会崩溃。其余部分与我在第一年写的内容惊人地相似。

最难的技术挑战是邮件投递率，就此打住。主要收件箱提供商的规则晦涩难懂，这是一个不断移动的目标，要把它做对与其说是一个编程问题，不如说是一种运营纪律——声誉、认证、反馈循环，以及大量的耐心。这是商业中不够光彩的部分，但也可能是最重要的部分。DNS 也是，从技术上讲，它是投递率的一个子集。

## 增长策略

Buttondown 大多数增长都来自于良好的产品和客户互相推荐。没有病毒式发布，也没有一个改变一切的 Product Hunt 发布日。相反，增长来自于那些喜欢该工具到足以推荐它的用户缓慢的、滚雪球式的积累。

不过，有几件事确实很重要。早期，我在 [jmduke.com](http://jmduke.com/) 和其他地方经常公开撰写关于构建产品、我的决策以及经营软件公司的枯燥现实的文章。这种写作并没有在可衡量的漏斗意义上进行转化，但它建立了信任，而这种信任会吸引那些最终会变成客户的人。作者倾向于想要使用一个显然关心写作的人构建的工具。

基于 LLM 的获客也让曲线向上弯曲了一些。Claude 很喜欢我们。

但快乐客户的口碑是最持久的渠道，这听起来像个非答案，但其实是一种策略：我痴迷于支持。当有人发邮件给 Buttondown 反映问题时，一个真正的人类——在很长一段时间里，往往是我——会快速回答并解决问题。在一个 AI 聊天机器人和长达一周的工单队列的时代，真正地快速响应是一种伪装成成本中心的营销渠道。

Newsletter（通讯邮件）固有的可见性是另一个静默引擎。Buttondown 发出的每一封电子邮件都带有我们的指纹，每一个公开存档都是向下一个作者做的小小广告。每当客户点击发送时，产品就在自我推销。

## 定高价，少道歉

如果让我重新开始，我会定更高的价格、更早地定高价，并为价格道歉得更少。

多年来，由于一种 misplaced guilt（某种错位的内疚感），我一直在 Buttondown 上定低价，而那些真正重视产品的客户其实在整个过程中都愿意付更多的钱。

定低价并不代表你慷慨。它代表你脆弱，它让业务缺乏提供良好服务所需的资源。

## 组建团队

最大的挑战是从“我”转变为“一个团队”。多年来，Buttondown 小到完全装在我的脑子里——每一行代码、每一个客户、每一个决策。

即使在今天，我也很难理解在毕业做了大量的个人贡献者（IC）工作之后，对我来说“对的一天”是什么样子的。

## 为何独立黑客应该保留全职工作

从财务稳定的位置起步是我做的唯一最有利的事情。我强调这一点是因为独立黑客的神话经常抹去了这一点。我在一份工资的基础上构建了 Buttondown。那个安全网让我能够做出耐心、长期的决定，而不是绝望的决定，而事实证明，耐心是当周围的人都在追求快速退出时的巨大竞争优势。

虽然听起来很抽象，但仅仅时间的流逝（以及对它的舒适感）对许多渠道都很有效！SEO、口碑——所有这些在你能轻松等待一年时都会变得更有价值。

## 两条建议

两条建议：

1. 为特定的人构建——最好是为自己——并在必须之前抵制泛化的冲动。你添加的每一个“为了灵活性”的功能，都是你必须永远维护的功能，用于可能并不存在的客户。最窄的有用产品胜过最宽泛的模糊产品。
2. 认真对待支持——不要把它看作是一种苦差事，而要把它看作是产品本身。赢得终身客户的最快方法是像一个在乎的人类一样快速回答他们的邮件，并解决他们的问题。它不会扩展，每个人都会告诉你，他们是对的。这就是为什么这样做仍然是一种优势。

## 接下来呢？

很长一段时间里，我关于 Buttondown 的目标都集中在避免失败上：“我想让第一个付费客户出现以确认它是一个真实的产品”；“我想达到每月一千美元的营收以确信这不仅仅是朋友在捧场”；“我想实现每月 1 万美元，否则我就不能全职做这件事”；等等。

现在，那些里程碑不再适用了：它产生的利润足以支持我和其他人的薪水，并且每个月都在增长。

目前，我的目标是：我希望 Buttondown 能够增长和繁荣，特别是为了验证并传教一种略有不同的软件公司模式：一种利用软件的所有美妙之处（例如，微乎其微的边际成本和互联网的无限广度）来为客户构建高价值、可持续的工具，同时公平且奖励员工。

你可以在 [Twitter](https://x.com/jmduke) 和我的 [个人网站](http://jmduke.com/)上关注我。或者通过 [buttondown.com](https://buttondown.com/) 了解更多！

### Indie Hackers Newsletter：订阅以获取每周 3 次的独立黑客最新故事、趋势和见解。

订阅

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/zi_you_zhi_ye_she_qu/p/P2TBAVWvTu5WaPsGye3YB#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-24T02:57:50.751Z","datePublished":"2026-09-16T16:00:00.000Z","description":"公司 Buttondown 创始人 Justin Duke 营收 8.3万美元/月 Justin Duke 并不喜欢现有的大型公司运营 Newsletter（通讯邮件）的方式。因此，他在全职工作之余，利用业余时间打造了 Buttondown。这份工作为他提供了所需的“启动资金”——以及“安心感”。","headline":"在一个拥挤的市场中，通过长期耕耘，将副项目发展至100万美元的年经常性收入","isPartOf":"https://www.angryecho.com/c/zi_you_zhi_ye_she_qu","mainEntityOfPage":"https://www.angryecho.com/c/zi_you_zhi_ye_she_qu/p/P2TBAVWvTu5WaPsGye3YB","text":"公司\n\nButtondown\n\n创始人\n\nJustin Duke\n\n营收\n\n\n\n8.3万美元/月\n\nJustin Duke 并不喜欢现有的大型公司运营 Newsletter（通讯邮件）的方式。因此，他在全职工作之余，利用业余时间打造了 Buttondown。这份工作为他提供了所需的“启动资金”——以及“安心感”。如今，该业务年经常性收入（ARR）已超过 100 万美元。\n\n以下是 Justin 分享他是如何做到的。👇\n\n内容\n\n\n\n\n\n构建一款尊重人的产品\n\n\n\n由恨意与傲慢驱动\n\n\n\n构建第一个版本\n\n\n\n技术栈\n\n\n\n增长策略\n\n\n\n定高价，少道歉\n\n\n\n组建团队\n\n\n\n为何独立黑客应该保留全职工作\n\n\n\n两条建议\n\n\n\n接下来呢？\n\n构建一款尊重人的产品\n\n我是 Justin Duke，我运营着 Buttondown，这是启动并发展您 Newsletter（通讯邮件）的最佳方式。\n\n我学习过计算机科学，职业生涯初期曾作为工程师，后来升任工程经理，就职于 Stripe 和 Amazon。我在这两家公司都学到了大量的知识——关于如何构建优秀的软件、如何管理优秀的团队、以及一家公司的成功在多大程度上依赖于枯燥但卓越的运营能力，而非任何单一天才的创意。\n\n在加入 Stripe 之前，我创建了 Buttondown 作为一个副业项目。它始于 2017 年，是我为自己构建的一个工具，因为当时其他所有的 Newsletter 平台都感觉臃肿、充满敌意，或者两者兼有——我想要一个以 Markdown 优先、安静、并对作者和读者都充满尊重的工具。结果发现，想要这种东西的并不只有我。Buttondown 如今是一家完全自力更生且盈利的企业，为数以万计的作者提供服务，从只发给十几个朋友的业余爱好者，到向数十万用户发送邮件的作者和公司。\n\n我引以为豪的进度衡量标准是：每天，都有人会从一家估值十亿美元的公司转投到 Buttondown。\n\n我们目前的营收年增长率（Run Rate）已超过 100 万美元。\n\n由恨意与傲慢驱动\n\n这一切始于一种恨意，以及一点傲慢。\n\n使用 TinyLetter 很长时间后，我想发送一封 Newsletter（通讯邮件）。我查看了现有的选项，每一个都让我觉得产品才是客户，而我只是个无足轻重的对象——无休止的升级推销、旨在最大化参与度的黑暗模式、每当我尝试写一段纯文本时，编辑器都会跟我作对。我记得当时的想法是——带着一名从未经营过业务的工程师特有的傲慢——“这究竟有多难？”\n\n为了记录在案，答案是非常难。但在我意识到这一点时，我已经深陷其中。\n\n\n\n构建第一个版本\n\n初始版本的构建成本几乎为零，唯一消耗的是时间，而这时间是我的。\n\n那时的我的经济状况很舒适。我有一份好工作，这才是许多“勇敢的”独立创始人故事背后那个不体面却真实的真相。所需资金接近于零，这是软件作为商业模式的一个静默奇迹。真正的成本是机会成本——那些我没有去构建的项目，那些我没有在其他地方度过的夜晚。\n\n我把多余的注意力投入在这里而不是其他地方，多亏了我的妻子，她非常有耐心且理解我为什么这么做！我在全职工作的间隙构建它——清早、深夜，以及偶尔的周末。那个限制条件其实是一个隐秘的礼物。当你每周只有几个小时可用时，你无法承担任何投机性的工作。你只能构建产品必需的那一个东西，别无其他，这在像电子邮件这样成熟的行业里很容易做到。\n\n第一个版本小得令人尴尬：一个接收 Markdown 文本的文本框、一个订阅表单，以及一个发送邮件的按钮。就这些。没有分析功能、没有自动化、没有模板——更不用说，在很长一段时间里，我们甚至没有用户模型。\n\n我还站在了许多不体面的基础设施之上。邮件投递确实很难——投递率、垃圾邮件合规性、整个复杂的迷宫——所以我依赖现有的投递基础设施，而不是假装能从零开始重新发明 SMTP：最初使用 Mailgun，然后是一系列其他 ESP，最近我们开发了自家的系统。其余部分是 Django、Heroku，以及大量的咖啡。\n\n我用我知道的最便宜的方式验证了它，那就是每天使用它。它为唯一一个人解决了真实的问题。然后，我把产品放到网上，收取每月 5 美元（大部分是个玩笑），然后我从未见过的人付了钱。那是它不再只是一个玩具的时刻。\n\n技术栈\n\n后端是 Django 和 Python，数据库是 Postgres。前端多年来演变了很多，但目前作者端应用使用的是 Vue，文档/营销网站使用的是 Next.js。\n\n随着规模扩大，驱动了最大的演变——我们重写并加固了处理邮件发送和分析的模块几次，因为能支持一百个订阅者的朴素版本在一万订阅者面前就会崩溃。其余部分与我在第一年写的内容惊人地相似。\n\n最难的技术挑战是邮件投递率，就此打住。主要收件箱提供商的规则晦涩难懂，这是一个不断移动的目标，要把它做对与其说是一个编程问题，不如说是一种运营纪律——声誉、认证、反馈循环，以及大量的耐心。这是商业中不够光彩的部分，但也可能是最重要的部分。DNS 也是，从技术上讲，它是投递率的一个子集。\n\n增长策略\n\nButtondown 大多数增长都来自于良好的产品和客户互相推荐。没有病毒式发布，也没有一个改变一切的 Product Hunt 发布日。相反，增长来自于那些喜欢该工具到足以推荐它的用户缓慢的、滚雪球式的积累。\n\n不过，有几件事确实很重要。早期，我在 jmduke.com 和其他地方经常公开撰写关于构建产品、我的决策以及经营软件公司的枯燥现实的文章。这种写作并没有在可衡量的漏斗意义上进行转化，但它建立了信任，而这种信任会吸引那些最终会变成客户的人。作者倾向于想要使用一个显然关心写作的人构建的工具。\n\n基于 LLM 的获客也让曲线向上弯曲了一些。Claude 很喜欢我们。\n\n但快乐客户的口碑是最持久的渠道，这听起来像个非答案，但其实是一种策略：我痴迷于支持。当有人发邮件给 Buttondown 反映问题时，一个真正的人类——在很长一段时间里，往往是我——会快速回答并解决问题。在一个 AI 聊天机器人和长达一周的工单队列的时代，真正地快速响应是一种伪装成成本中心的营销渠道。\n\nNewsletter（通讯邮件）固有的可见性是另一个静默引擎。Buttondown 发出的每一封电子邮件都带有我们的指纹，每一个公开存档都是向下一个作者做的小小广告。每当客户点击发送时，产品就在自我推销。\n\n定高价，少道歉\n\n如果让我重新开始，我会定更高的价格、更早地定高价，并为价格道歉得更少。\n\n多年来，由于一种 misplaced guilt（某种错位的内疚感），我一直在 Buttondown 上定低价，而那些真正重视产品的客户其实在整个过程中都愿意付更多的钱。\n\n定低价并不代表你慷慨。它代表你脆弱，它让业务缺乏提供良好服务所需的资源。\n\n组建团队\n\n最大的挑战是从“我”转变为“一个团队”。多年来，Buttondown 小到完全装在我的脑子里——每一行代码、每一个客户、每一个决策。\n\n即使在今天，我也很难理解在毕业做了大量的个人贡献者（IC）工作之后，对我来说“对的一天”是什么样子的。\n\n为何独立黑客应该保留全职工作\n\n从财务稳定的位置起步是我做的唯一最有利的事情。我强调这一点是因为独立黑客的神话经常抹去了这一点。我在一份工资的基础上构建了 Buttondown。那个安全网让我能够做出耐心、长期的决定，而不是绝望的决定，而事实证明，耐心是当周围的人都在追求快速退出时的巨大竞争优势。\n\n虽然听起来很抽象，但仅仅时间的流逝（以及对它的舒适感）对许多渠道都很有效！SEO、口碑——所有这些在你能轻松等待一年时都会变得更有价值。\n\n两条建议\n\n两条建议：\n\n\n\n\n\n为特定的人构建——最好是为自己——并在必须之前抵制泛化的冲动。你添加的每一个“为了灵活性”的功能，都是你必须永远维护的功能，用于可能并不存在的客户。最窄的有用产品胜过最宽泛的模糊产品。\n\n\n\n认真对待支持——不要把它看作是一种苦差事，而要把它看作是产品本身。赢得终身客户的最快方法是像一个在乎的人类一样快速回答他们的邮件，并解决他们的问题。它不会扩展，每个人都会告诉你，他们是对的。这就是为什么这样做仍然是一种优势。\n\n接下来呢？\n\n很长一段时间里，我关于 Buttondown 的目标都集中在避免失败上：“我想让第一个付费客户出现以确认它是一个真实的产品”；“我想达到每月一千美元的营收以确信这不仅仅是朋友在捧场”；“我想实现每月 1 万美元，否则我就不能全职做这件事”；等等。\n\n现在，那些里程碑不再适用了：它产生的利润足以支持我和其他人的薪水，并且每个月都在增长。\n\n目前，我的目标是：我希望 Buttondown 能够增长和繁荣，特别是为了验证并传教一种略有不同的软件公司模式：一种利用软件的所有美妙之处（例如，微乎其微的边际成本和互联网的无限广度）来为客户构建高价值、可持续的工具，同时公平且奖励员工。\n\n你可以在 Twitter 和我的个人网站上关注我。或者通过 buttondown.com 了解更多！\n\nIndie Hackers Newsletter：订阅以获取每周 3 次的独立黑客最新故事、趋势和见解。\n\n订阅","url":"https://www.angryecho.com/c/zi_you_zhi_ye_she_qu/p/P2TBAVWvTu5WaPsGye3YB","author":{"@type":"Person","name":"Justin Duke","url":"https://www.angryecho.com/u/I9HeL15KZvm2ax20BtiM"},"image":["https://images.indiehackers.com/post-images/eL15KZvm2ax20BtiM5i8/vOqaQ3DJwYRP8MNEjUOSMger71w1/buttondown-homepage.png?w=1400"],"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":17},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
