這是用戶在 2025-1-15 4:52 為 https://www.coryzue.com/writing/solopreneur/ 保存的雙語快照頁面,由 沉浸式翻譯 提供雙語支持。了解如何保存?

Using Coding Skills to Make Passive Income
運用程式技能創造被動收入

A decade of firsthand advice on going from an employed software developer to successful indie hacker running your own business(es).
從受僱軟體開發人員到成功獨立開發者,經營自己事業的十年第一手經驗分享。

In 2017, I stepped down from my job as CTO of a 150-person software company to see if I could make money selling my own software on the Internet.
2017 年,我辭去了 150 人軟體公司 CTO 的職務,想看看自己是否能在網路上銷售自己的軟體賺錢。

Eight years later, I am now a full-time “solopreneur”—running a portfolio of revenue-generating software products as a full-time job. I now set my own hours, take vacation whenever I want, and, amazingly, earn more than I ever did as CTO.
八年後,我現在成為全職的「個人創業家」—全職經營一系列獲利的軟體產品。我現在可以自己安排時間,想休假就休假,而且令人驚訝的是,我的收入比擔任 CTO 時還要高。

In the talk below, I’ll share how I did it and what I learned in the process. I’ll share the skills that programmers should pick up in order to start selling software on the web, including both technical and non-technical ones. I’ll discuss how to get started, evaluating your ideas, building your product, and getting your first users and customers. The talk will draw from years of work building and selling software myself, as well as the experience I’ve gained from helping hundreds of others launch their own businesses with SaaS Pegasus.
在下面的演講中,我將分享我是如何做到的,以及我在這個過程中學到了什麼。我將分享程式設計師應該學習的技能,以便開始在網路上銷售軟體,包括技術性和非技術性技能。我將討論如何開始、評估你的想法、構建你的產品以及獲得你的第一批使用者和客戶。這次演講將借鑒多年來我自身構建和銷售軟體的經驗,以及我從幫助數百人使用 SaaS Pegasus 啟動自己業務中獲得的經驗。

If you’ve ever wanted to turn your coding skills into revenue-generating side-projects, I hope this talk both inspires and helps you to get started.
如果你曾經想將你的編碼技能轉化為獲利的副業,我希望這次演講能激勵你並幫助你開始。

TL;DR  TL;DR(重點摘要)

Someone on Reddit asked me to provide a TL;DR for the talk. This was my off-the-cuff response:
Reddit 上有人請我為這次演講提供一個 TL;DR(重點摘要)。這是我的即興回應:

  • First you have to make space in your life for it. You need long blocks of time for deep work.
    首先,你必須為此騰出時間。你需要長時間專注於深度工作。
  • The first idea you pick is unlikely to work, so pick something and start moving. Many of the best products come out of working on something else.
    你選擇的第一個想法不太可能奏效,所以選擇一個想法然後開始行動。許多最好的產品都來自於在做其他事情的過程中產生的靈感。
  • When building, optimize for speed. Try to get something out in the world as quickly as possible and iterate from there.
    開發時,要以速度為優化目標。盡快將產品推向市場,然後再從中迭代改進。
  • Pick a tech stack you’re familiar with, that you’ll be fastest in.
    選擇你熟悉的技術棧,這樣你才能最快完成開發。
  • Try to spend half your time on marketing/sales, even if you hate it.
    即使你討厭,也要盡量將一半的時間用於行銷/銷售。
  • The most important skill you can have is resiliance. Not giving up is the best path to success. This is hard because there is so much uncertainty in this career path.
    你能擁有的最重要技能是韌性。永不放棄是通往成功的最佳途徑。這很難,因為這條職業道路充滿了不確定性。
  • It’s worth it! The autonomy and freedom are unmatched by any other career.
    這值得!這種自主性和自由度是其他任何職業都無法比擬的。

The talk  演講內容

This talk was the closing keynote of PyCon South Africa on October 4, 2024.
此次演講是 2024 年 10 月 4 日南非 Python 大會(PyCon South Africa)的閉幕主題演講。

It’s 30 minutes long, plus another 15 minutes of Q&A.
演講長度為 30 分鐘,另加 15 分鐘的問答環節。

Alternatively, read on for an annotated transcript which I made using a process very similar to Simon Willison’s.
或者,您可以閱讀我使用與 Simon Willison 非常相似的流程製作的註釋稿。

The transcript  講稿全文

Using Coding Skills to Make Passive Income (Title Slide)

I’m going to talk today about using coding skills to make passive income.
我今天要來談談如何運用程式設計技能創造被動收入。

This email announcing the talk made me laugh, because the title does sound like clickbait.
這場演講的宣傳郵件讓我覺得好笑,因為標題聽起來很像聳動標題。

Don't be dissuaded!

Hopefully this is the non-clickbait version of this topic. I’ll leave it to you to decide.
希望這才是這個主題的非聳動版本。就讓各位自行判斷吧。

First I have to explain my job.
首先,我必須解釋我的工作。

Explaining my job

“So, what do you do?”
「所以,你是做什麼的?」

Whenever I get this question I never really know how to answer it. The most boring answer that I give is I’m a software developer, but I also run my own business. If people know these words, I’ll say I’m a solopreneur or an indie hacker. If I’m feeling really specific, I’ll say I run a portfolio of revenue-generating technology products, which is a bit of a mouthful. If I’m feeling cheeky, I’ll say I make apps that make money while I sleep or… whatever I want?
每當我被問到這個問題,我都不太知道該怎麼回答。最無聊的答案是我是一名軟體開發人員,但我也有自己的事業。如果對方懂這些詞彙,我會說我是個個人創業家或獨立駭客。如果我想更精確一點,我會說我經營著一系列能產生收入的科技產品,這句話有點長。如果我想開個玩笑,我會說我開發能在我睡覺時賺錢的應用程式……或是我想做什麼就做什麼?

How I actually earn a living is through a portfolio of technology products that are monetized online.
我實際上是透過一系列在線上獲利的科技產品來賺取生活費。

How I earn a living

Basically that means I make stuff and I put it on the internet, and some of it makes money—either through a one-time payment, a subscription,ads, affiliates, etc. I have a bunch of different things that make varying amounts of money and every day I just kind of work on one of them, support it, build a new thing, and so on.
基本上,意思是我製作一些東西,然後把它放到網路上,其中一些東西會賺錢——可能是透過一次性付款、訂閱、廣告、聯盟行銷等等。我有很多不同的東西,賺的錢也各有不同,而我每天就是做其中一項,提供支援,開發新東西,以此類推。

Here’s how I got here:
這就是我如何走到這裡的:

How I got here

Sorry, this slide had a lot of transitions and so the image doesn’t translate very well.
抱歉,這張投影片有很多轉場效果,所以圖片翻譯起來不太好。

I started possibly like many of you in a normal corporate gig. I didn’t last very long and I joined a friend’s company called Dimagi. When I joined we were like three people and he was like ‘hey you want to be CTO’ and I was like ‘yeah I’ll be CTO’ and I basically larped as a CTO for a few years.
我一開始可能像你們很多人一樣,在一般企業公司上班。但我待不久,就加入了一位朋友的公司 Dimagi。我加入時,我們只有三個人,而他說:「嘿,你想當 CTO 嗎?」我說:「好啊,我當 CTO。」然後我基本上就扮演了幾年的 CTO。

But the company became quite successful, and then before I knew it I was the CTO of like a 200-person company and I had like a 35-person team under me. I was supposed to be a real CTO now, and I was, but I also kind of hated it. I was doing all these meetings and management and I hardly ever got to write code. And I eventually burnt out.
但公司後來相當成功,然後在我還沒意識到之前,我就成了一家 200 人公司裡面的 CTO,底下還有 35 人的團隊。我應該要成為一個真正的 CTO 了,而我確實是,但我也不太喜歡這樣。我一直在開會和管理,幾乎沒有時間寫程式。最後我筋疲力盡了。

So I told my friend I needed a break. I decided to take like a six-month unpaid sabbatical to figure out my life. On that sabbatical, I discovered this website called Indie Hackers which basically is a website that told stories of people doing what I do now—building these random apps and making a living off them. I thought “okay that sounds cool, maybe I’ll try that” and so I decided in those six months that I was going to try to earn one dollar doing this indie hacker thing.
所以我告訴我的朋友我需要休息一下。我決定休個六個月的無薪假,好好思考一下我的生活。在那段休假期間,我發現了一個叫做 Indie Hackers 的網站,基本上是一個分享人們做我現在正在做的事情的故事的網站——開發這些隨機應用程式並以此維生。我想:「好吧,聽起來很酷,也許我可以試試看。」於是我決定在這六個月內,嘗試透過這種獨立駭客的方式賺到一美元。

The first thing I did that succeeded was incredibly silly and I’m still kind of embarrassed about it, but it’s basically an app that lets you make place cards—those little cards that you find at weddings and other events. You upload a spreadsheet of your guests to this website, you download a PDF, you pay me like $5 (100 ZAR). And I was surprised that it actually worked! I made my first dollar and I was completely addicted. It was this most incredible feeling and so then I tried to do it over and over again.
我第一個成功做的東西非常愚蠢,我現在還是有點不好意思,但它基本上是一個讓你製作座位卡的應用程式——那些你在婚禮和其他活動上看到的卡片。你將賓客的資料表上傳到這個網站,下載 PDF 檔案,然後付給我 5 美元(100 南非蘭特)。我很驚訝它竟然成功了!我賺到了我的第一美元,而且完全上癮了。那是一種非常棒的感覺,所以我試著不斷重複這個過程。

Eventually I thought “I bet other people want to do this over and over again too,” and so I got kind of meta and built this product to help other people launch their own apps. This is SaaS Pegasus—a configurable Django codebase that I now sell and how I make probably like 80% of my money now.
最後我想:「我敢打賭其他人也想要不斷重複這個過程,」所以我開始有點跳脫框架思考,開發這個產品來幫助其他人推出自己的應用程式。這就是 SaaS Pegasus——一個我可以販售的可配置 Django 程式碼庫,而我現在大概 80% 的收入都來自於此。

Today, I’m blown away by how many people have built really cool products and really successful businesses on top of Pegasus code, including YCombinator companies and also just random people’s hobby project that they’re doing with their friends. It has over a thousand people using it, probably hundreds and hundreds of real products have been built with it, which is pretty fun.
今天,我很驚訝有這麼多人基於 Pegasus 程式碼開發出真正酷炫的產品和非常成功的業務,包括 Y Combinator 的公司,以及一些人們與朋友一起做的隨興愛好項目。有超過一千人在使用它,可能已經有數百個真正的產品是用它開發出來的,這真的很有趣。

Let me now clarify some key attributes of this path.
現在,讓我澄清一下這條路徑的一些關鍵屬性。

Key attributes of this path

I’m talking about products, so the key thing is you’re not trading your time for money—this is something that someone just buys and you get paid without having to do an hour of work for it.
我說的是產品,所以關鍵是你不是在用時間換取金錢——這是某人購買的東西,而你可以在不用花一個小時工作的情況下獲得報酬。

I’m talking about monetized stuff. Passion projects are great, I love passion projects, but this is specifically for people who want to replace (or supplement) their income.
我說的是獲利的東西。熱情專案很棒,我喜歡熱情專案,但這特別是針對想要取代(或補充)收入的人。

I’m talking about bootstrapped, which basically means you’re not trying to raise money—you are trying to earn enough from your own profits so you never have to raise money and you can take the profits yourself.
我說的是自力更生的,基本上就是指你沒有試圖籌集資金——你試圖從自己的利潤中賺取足夠的錢,這樣你就不需要籌集資金,而且可以自己賺取利潤。

Finally, it’s a calm path—the goal is not to grow a 100-person company. You could, but my goal was never to grow a 100-person company, it was just to have this kind of calm, enjoyable life with lots of freedom.
最後,這是一條平靜的路——目標不是打造一家百人公司。你或許可以做到,但我從來沒有想過要打造一家百人公司,我的目標只是擁有這種平靜、愉悅的生活,並擁有許多自由。

A relatively mainstream term for this is indie hacking.
這個相對主流的說法是獨立創業(indie hacking)。

My Goals for this Talk

My goals for this talk are two: The first is just to kind of convince you that this is a possible career path that you can consider. I think a lot of people don’t think of this as a career path, but it is. And then if you decide that maybe you want to give it a shot, hopefully to give you some tips that help with your chances of success.
我這次演講的目標有兩個:第一個是讓你們相信,這是一條可以考慮的職業道路。我想很多人並沒有把這視為一條職業道路,但它確實是。然後,如果你決定要嘗試一下,我希望提供一些能提高你成功機率的訣竅。

Here’s my diagram for how this can be achieved:
以下是我的方法圖解:

How to become an indie hacker

The first thing you have to do is create space in your life. For a lot of people I think this is probably the hardest part—just finding the space to pursue something like this.
你首先要做的是在生活中騰出空間。對很多人來說,這可能是最困難的部分——找到空間去追求這樣的事情。

Then you enter this iteration cycle where you’re basically taking a shot at something, and if it doesn’t work out you apply the lessons learned and take a shot at something else. That doesn’t necessarily mean building a new product but could be trying a different approach to marketing, trying a different way of presenting the UX, and so on. Hopefully eventually something works and then you come out the other side and… profit!
接著你進入這個迭代循環,基本上就是嘗試某件事,如果失敗了,就運用汲取的經驗教訓,再去嘗試其他事情。這並不一定意味著開發新產品,而是可以嘗試不同的行銷方式,嘗試不同的使用者體驗呈現方式等等。希望最終能有所成就,然後……賺到錢!

Let’s talk about making space first.
我們先來談談如何騰出空間。

Making Space

So what do you need to get started?
那麼,開始需要什麼呢?

What do you need to get started?

The kind of boring answer is, basically, nothing!
乏味的答案是,基本上,什麼都不需要!

Nothing! (almost.)

Besides time.  除了時間。

Time

And you need a particular type of time where you can do deep focused work on a consistent basis. Which is not always easy to find.
而且你需要一種特別的時間,讓你能夠持續地進行深度專注的工作。這並不總是容易找到的。

So how do you make time?
那麼,你如何安排時間呢?

How do you make time?

I think the most common path is to fit it into your nights and weekends.
我認為最常見的方法是利用晚上和週末的時間。

The Night and Weekend Warrior

This is my friend Wisani who created an app called Boardroom which is like Tinder for LinkedIn. It’s growing pretty popular in South Africa and he’s got like 10 other projects. He’s done all this while working a full-time job at Allan Gray and I think also getting an MBA.
這是我的朋友 Wisani,他開發了一款名為 Boardroom 的應用程式,就像 LinkedIn 的 Tinder。它在南非越來越受歡迎,他還有其他 10 個專案。他是在艾倫·格雷公司全職工作,我認為還同時攻讀 MBA 的過程中完成所有這些的。

Doing this at nights and weekends is definitely the least disruptive way to pursue this career, but it’s really hard. For me, I have kids, I’m always tired at the end of a long day of work—this just wasn’t an option.
在晚上和週末做這些絕對是最不具破壞性的追求這種職業的方式,但這真的很辛苦。對我來說,我有孩子,在漫長的工作日結束後總是感到疲倦——這根本行不通。

So what if you can’t pull this off?
那麼,如果你做不到呢?

Another option is to just kind of YOLO it.
另一個選擇就是放手一搏(YOLO)。

The YOLO Entrepreneur

This is where you quit your job and you’re like “cool I’m going to quit my job and I’ve got twelve months of savings in my bank account and I’m just going to make this work.” I think this is usually not a great plan—it puts so much time pressure and financial pressure on you to succeed. And there’s just so much variance—it’s not like if you just work your butt off for a year you’re guaranteed to succeed in ways that some jobs are more like that.
也就是辭掉你的工作,然後說:「好,我要辭職了,我的銀行帳戶裡有十二個月的存款,我就要讓它成功。」我認為這通常不是一個好計劃——它給你帶來巨大的時間壓力和財務壓力,迫使你必須成功。而且變數實在太多——不像有些工作,只要你努力工作一年,就能保證成功。

What I did, and the path that I recommend, is more of just a patient thing where basically you try to integrate this quest into your regular life in a slower and more sustainable way.
我所做的事情,以及我推薦的路徑,更像是一種耐心等待的過程,基本上就是嘗試以更緩慢、更可持續的方式將這個目標融入你的日常生活。

The Patient Path

Typically that means working less, and therefor either earning less—you ask your boss if you can have Fridays off and get paid 80% as much—or getting paid more per-hour by switching to contracting or freelancing. Then you build some products and basically whenever those products start earning, you can sort of re-adjust the hours until it works.
這通常意味著減少工作時間,因此減少收入——你可以問你的老闆是否可以週五休假,薪水減少到 80%——或者通過轉換為承包商或自由職業者來提高每小時的收入。然後你開發一些產品,基本上,每當這些產品開始賺錢時,你就可以調整工作時間,直到找到平衡點。

This is my actual income for my first seven years on this journey:
這是我這七年旅程中實際的收入狀況:

My Patient Path

In 2016 I was a full-time employee. In 2017 I went on sabbatical and started doing this thing and I dropped down to halftime at my job and filled most of my income with consulting. I just tapped my network and said “I’m available, I’m going to charge a lot”. And thankfully, some people said yes. There’s this tiny little sliver of yellow there and that’s me selling those place cards.
2016 年我還是個全職員工。2017 年我休了個假,開始做這件事,我把工作時間減半,大部分收入來自顧問諮詢。我只是利用我的網絡,說:「我現在有空,我的收費很高。」謝天謝地,有些人答應了。那裡有一小塊黃色,那是賣座位卡的收入。

But basically what happened is that it was like a snowball that feeds off on itself and so year two I made a bit more, year three I made a bit more, and I eventually dropped down most of my consulting and then I finally quit my job. Obviously this took a long time, but the nice thing was that I was never stressed out. There was never any financial pressure on me.
但基本上,這就像滾雪球一樣,越滾越大,所以第二年我賺得更多,第三年更多,最後我減少了大部分的顧問工作,然後終於辭掉了工作。顯然,這花了我很久的時間,但好處是我從未感到壓力。我從來沒有任何財務壓力。

Now I’m going to jump into the main iteration cycle.
現在我要進入主要的迭代循環。

Iteration

I want to zoom in on what this looks like. It’s a simplification but basically you pick an idea, you build it, you sell it, and then you repeat.
我想放大看看這個循環的樣子。這是一個簡化的版本,基本上就是選擇一個點子,把它做出來,賣掉它,然後重複這個過程。

The Iteration Cycle

Going back to the “anyone can entrepreneur” thing—none of this is fundamentally hard; it isn’t rocket science. If you can teach yourself how to code you can teach yourself how to market, or how to validate ideas. This is all stuff you can learn.
回到「人人都可以創業」這件事——這些東西從根本上來說並不難;這不是火箭科學。如果你能自學程式設計,你就能自學行銷,或如何驗證點子。這些都是你可以學習的東西。

But it involves massive uncertainty.
但它包含巨大的不確定性。

What that means is you want to go through the cycle as much as possible because on any given iteration you don’t know what the outcome is going to be. If you spend your first two years building a product and then come out the other side and realize nobody liked it, then you’ve wasted a lot of time. Whereas if you can figure out the product is flawed in two weeks or two months then you can go through the cycle a lot faster (and many more times).
這意味著你想要盡可能多地經歷這個循環,因為在任何一次迭代中,你都不知道結果會是什麼。如果你花了兩年時間開發一個產品,然後發現沒人喜歡它,那麼你就浪費了很多時間。而如果你能在兩週或兩個月內發現產品有缺陷,那麼你就能更快地完成這個循環(並且完成更多次)。

I like to think of myself as a one-person venture capital portfolio.
我喜歡把自己想像成一個單人創投組合。

Think of yourself as a one-person VC portfolio.

A VC fund will typically invest in 100 companies and they will expect 90 of those companies to completely fail. But, if they find the next Facebook or the next Uber then everyone who invested in the fund makes tons of money.
一家創投基金通常會投資 100 家公司,他們預期其中 90 家公司會徹底失敗。但是,如果他們找到了下一個 Facebook 或下一個 Uber,那麼所有投資該基金的人都將賺大錢。

I think you should think of yourself in the same way where you want to take as many shots as you can on goal, hoping that one of them succeeds. Obviously you’re not going to be the next Uber, but you’ll start making $10, $100, and then eventually you can direct your energy into that project and grow it.
我認為你應該以同樣的方式看待自己,你想要盡可能多地嘗試,希望其中一個成功。顯然,你不會成為下一個 Uber,但你會開始賺到 10 美元、100 美元,然後最終你可以將精力投入到那個專案中並使其發展壯大。

Here are some examples from the indie hacking world about this:
以下是一些來自獨立創業界的例子:

Examples

Sorry, this slide also got mangled by the transitions.
抱歉,這張投影片也被轉場效果搞砸了。

Pieter Levels, who just sleeps in vats of money, says his hit rate on projects was about 5%. But that was still enough for him to have this incredible career doing a very similar thing to me. There’s this guy Rob Hope who is a South African—he’s got this project graveyard on his website where he documents all the things he’s tried that have failed. Another example from Twitter, this guy Pat Walls published his failures, and I stole his format and published my own version. Basically you can see I’ve done a lot of these things and only a small number of them have actually worked out.
Pieter Levels,他現在躺在錢堆裡睡覺,他說他的專案成功率約為 5%。但這仍然足以讓他擁有如此令人難以置信的事業,做的事情與我非常相似。還有一位南非人 Rob Hope,他的網站上有一個專案墳場,記錄了他嘗試過的所有失敗的專案。另一個來自 Twitter 的例子,這位名叫 Pat Walls 的人發布了他的失敗經歷,我借用了他的格式,也發布了自己的版本。基本上,你可以看到我做了很多這樣的事情,但只有一小部分真正成功了。

So a lot of things going to fail, and therefore you want to go through them as fast as possible.
所以很多事情都會失敗,因此你想要儘快完成這些事情。

Let’s look at picking an idea.
讓我們來看看如何選擇一個點子。

Picking an idea

This is a diagram that I borrowed from a successful entrepreneur named Rob Walling.
這是借用一位成功的企業家 Rob Walling 的圖表。

The Stair Step Approach (Rob Walling)

The key here is basically you want to walk up these steps of difficulty. You want to start on step one with the smallest, easiest possible thing that you can do. For me, that’s like someone can give me $5 to buy a PDF of placecards—that’s a very easy thing to build, and a very easy thing to sell.
關鍵在於,你想要循序漸進地提升難度。你想要從第一步開始,做最簡單、最容易的事情。對我來說,就是有人可以給我 5 美元買一份座位卡的 PDF——這很容易製作,也很容易銷售。

Once you do that, then you try to do it again, and again, and eventually if you are successful then you kind of own your own time. That’s step 2.
做完之後,你嘗試再做一次,一次又一次,最終如果你成功了,你就能掌控自己的時間。這就是第二步。

Rob’s step three is to go do a big ambitious thing. I drew a dotted line there because you don’t have to go to step three—you can just have a bunch of step two projects and be having a nice life as a developer with a lot of freedom. Go take a moonshot if you want, but you can just do stuff in step two and I recommend that too. That’s kind of where I’ve landed.
Rob 的第三步是去做一件宏偉的、有野心的計畫。我在那裡畫了一條虛線,因為你不需要走到第三步——你只需要做一堆第二步的專案,就能擁有一個美好的生活,成為一個擁有很大自由度的開發者。如果你想,就去嘗試登月計畫,但你也可以只做第二步的事情,我也推薦這樣做。這大概就是我現在的狀態。

Start small is the key in terms of thinking about ideas.
從小處著手,是思考點子的關鍵。

Start small

Your ideal first project should be easy to build, easy to support and easy to sell. And it’s actually good if it’s not a unicorn idea. Don’t try to build the next Facebook or Uber or OpenAI or whatever else—you want to find a really specific niche and go in there.
你理想中的第一個專案應該容易開發、容易維護,也容易銷售。事實上,它如果不是個獨角獸點子也沒關係。別試圖打造下一個 Facebook、Uber 或 OpenAI 之類的——你需要找到一個非常特定的利基市場,然後進駐。

So how do you come up with ideas?
那麼,你如何想出點子呢?

How to come up with ideas?

There’s lots of stuff you can read on the internet about this by people who know and see a lot more than me, so I’m not going to give specifics apart from saying just go do something!
網路上有很多這方面的文章,寫這些文章的人比我更有經驗、見識也更廣,所以我就不贅述細節了,只說一句:去做就對了!

Do something!

Using an example from my own life: I got married, we had this issue where we had to print these stupid place cards that led to me building this place card application and that was my first thing. Then I was building these applications and I was like “oh that’s another problem” so then I built SaaS Pegasus. Then I had this SaaS Pegasus community that I was trying to support and I kept answering the same questions over and over again so I thought “oh I’ll build a RAG chatbot.”
以我自己的經驗為例:我結婚了,我們遇到一個問題,需要印製一些很蠢的座位卡,這促使我開發了這個座位卡應用程式,那就是我的第一個作品。然後我開始開發這些應用程式,心想:「喔,這又是一個問題」,於是我開發了 SaaS Pegasus。接著,我需要維護這個 SaaS Pegasus 社群,不斷重複回答同樣的問題,所以我想到:「喔,我來開發一個 RAG 聊天機器人吧。」

Doing things introduces you to problems

Through building something I found a new problem and then I could go build something else. Don’t do something just because the first thing you’re going to pick is going to work, but do something because by doing something you’ll just get exposed to more stuff and then that will lead you somewhere interesting. Just keep following interesting problems until you find one that you want to solve.
通過開發某些東西,我發現了新的問題,然後我就可以去開發其他東西。不要只是因為你選擇的第一個東西會奏效就去嘗試,而是因為透過嘗試,你會接觸到更多事物,而這將引領你走向有趣的方向。持續追蹤有趣的問題,直到你找到一個你想要解決的問題。

I want to quickly mention this book “The Mom Test” which is a great book about idea validation.
我想快速提到一本書:「The Mom Test」,這是一本關於點子驗證的好書。

Validation is hard

The key point from this book is when you’re trying to pitch a startup idea to anybody, they’re going to talk to you like your mom would talk to you. You’re going to pitch your thing and they’ll say “sweetie that’s such a good idea, I love it, you’re going to be so successful.”
這本書的重點是,當你試圖向任何人推銷創業點子時,他們會像你媽媽一樣和你說話。你會提出你的構想,他們會說:「寶貝,這真是個好點子,我喜歡,你一定會成功的。」

People do this because they don’t want to burst your bubble. You’re coming to your friends, you’re coming to your co-workers saying “I got this cool idea for an app”—no one’s going to tell you that idea sucks, because they want you to not have your confidence destroyed. This is a really good book that hammers that concept home for you and then gives you a framework for trying to get around the fact that everybody’s kind of lying to you when you pitch your ideas.
人們這麼做是因為他們不想戳破你的泡泡。你會向你的朋友、同事說:「我有一個很棒的應用程式點子」——沒有人會告訴你那個點子很爛,因為他們不希望你失去信心。這是一本很棒的書,它會讓你徹底了解這個概念,並提供一個架構,讓你試圖克服每個人在你提出點子時都在說謊的事實。

Now I’m going to talk about building and specifically building an MVP—a minimum viable product.
現在我要談談開發,特別是開發 MVP——最小可行產品。

Building an MVP

Probably a lot of you have heard of MVPs. Basically it’s like you’re trying to build the smallest, useful version of your thing.
大概很多人聽說過 MVP。基本上,這就像你試圖打造你產品中最小的、有用的版本。

What is an MVP?

In this example, a skateboard is useful—you can ride a skateboard and get from point A to point B, whereas if you have a wheel of a car or an axle of a car, that’s not useful. There’s also a concept called an SLC which stands for simple, lovable and complete, which I really like.
在這個例子中,滑板是有用的——你可以用滑板從 A 點移動到 B 點,而如果你只有一顆汽車輪胎或一個汽車車軸,那就沒有用了。還有一個叫做 SLC 的概念,代表簡單、可愛和完整,我非常喜歡。

Before we talk about MVPs, let’s talk about why indie products fail.
在我們談論 MVP 之前,讓我們先談談為什麼獨立產品會失敗。

Why do indie products fail?

Why do indie products fail? The main thing I want to emphasize here is indie products are different from most big company software that probably a lot of you have worked on.
為什麼獨立產品會失敗?我想在此強調的主要一點是,獨立產品與你們很多人可能參與過的許多大型公司軟體不同。

Indie products are different

In traditional day jobs at places like Amazon, you’re probably dealing with legacy code and maybe the person who wrote it left and there’s no documentation and there’s all these scaling issues, performance issues—and none of this matters in the indie world. If you’re building independent projects, the reason that you’re going to fail is no one wanted what you were building, you didn’t market it, or you ran out of time, money and motivation.
在亞馬遜等公司傳統的工作中,你可能正在處理遺留程式碼,而編寫程式碼的人可能已經離職了,也沒有任何文件說明,還存在許多擴展性問題、效能問題——但在獨立開發的世界中,這些都不重要。如果你正在開發獨立專案,你失敗的原因是沒有人想要你開發的東西,你沒有做好行銷,或者你耗盡了時間、金錢和動力。

The takeaway is just when in doubt, optimize everything for speed. That optimizes for how fast you can get to market, how fast you can respond to feedback, how fast you iterate, and how fast you realize your idea was really dumb and you should go do something else.
總之,如有疑問,請將所有項目都優化速度。這可以優化你的產品上市速度、回應回饋的速度、迭代速度,以及你意識到你的點子真的很蠢,應該去做別的事情的速度。

Optimizing for speed also optimizes for...

I’m not saying write a bunch of terrible code—I’m just saying be smart about it.
我並不是說要寫一堆糟糕的程式碼——我只是說要聰明一點。

This doesn't mean "write bad code"

Taking something like tests—you shouldn’t care about code coverage or anything like that. What you should care about “is if I write this test, am I going to be able to modify this code more confidently faster later?” If so, do it. If not, maybe don’t worry about it right now.
以測試為例——你不應該在意程式碼覆蓋率或其他任何類似的指標。你應該在意的是:「如果我寫這個測試,我是否能夠更自信、更快地修改這段程式碼?」如果可以,那就去做。如果不行,也許現在不用擔心。

Optimizing for speed in practice

In other words: “Don’t overthink it.”
換句話說:「別想太多。」

Now let’s talk about design.
現在讓我們來談談設計。

Use someone else's design

Design is often the weakest spot for developers and it certainly was for me. Thankfully, you don’t really have to be a designer to make good-looking things anymore. There are all these different open source and paid templates where you can just get these really beautiful designs that work on all screen sizes and they have component libraries you can just drop everything in.
設計往往是開發人員最薄弱的一環,對我來說更是如此。值得慶幸的是,現在你不需要成為設計師也能做出美觀的作品。市面上有許多開源和付費的模板,你可以輕易取得這些真正漂亮且適用於所有螢幕尺寸的設計,它們還附帶元件庫,你可以直接套用所有內容。

You really don’t have to do any design—you can just steal other people’s designs and I recommend doing that again just because it’s faster and because you can make it beautiful or unique later.
你真的不需要自己設計——你可以直接「借用」別人的設計,我再次推薦這麼做,因為它更快,而且你之後可以讓它更美觀或更獨特。

Also, you don’t have to start from zero.
此外,你不需要從零開始。

You don't have to start from zero.

This is a bit of a shameless plug but it’s also the case that I’ve seen a lot of people use products like SaaS Pegasus (mine) to launch their products way faster. They are called SaaS boilerplates, or SaaS Starter Kits. It’s a whole product category with both open source, free and paid options. These projects often have a ton of stuff built for you.
這有點像是在打廣告,但事實上,我確實看到很多人使用像 SaaS Pegasus(我的產品)這樣的產品來更快地推出他們的產品。它們被稱為 SaaS 樣板或 SaaS 啟動套件。這是一個包含開源、免費和付費選項的完整產品類別。這些專案通常已經幫你建構好許多東西。

Then, instead of your first two weeks just being “okay I’m going to build user accounts and I’m going to build billing and I’m going to build multi-tenancy” and all this stuff, you just have all that ready to go and can focus on the one thing that you need to do.
然後,你就可以不必花上最初的兩個星期只做「好,我要建立使用者帳戶,我要建立計費系統,我要建立多租戶功能」等等這些事,因為你已經準備好所有這些東西,可以專注於你真正需要做的那件事。

Ok, big question: what tech stack should you use?
好,大哉問:你應該使用什麼技術棧?

What tech stack should you use?

There is a right answer to this.
這個問題有正確答案。

The answer is: the one you know.
答案是:你熟悉的技術棧。

The one you know!

If you want to learn a new tech stack as a fun educational project that’s great, but if your goal is to get this revenue-generating product in the world, you want to be working in something you’re familiar with because you want to be as fast as possible.
如果你想學習一個新的技術棧作為一個有趣的教育項目,那很好,但如果你的目標是將這個能產生收入的產品推向市場,你應該使用你熟悉的技術,因為你需要儘快完成。

If you don’t know anything, just pick something popular.
如果你什麼都不懂,那就選擇一個流行的技術棧。

If you don't know anything...

..pick something popular.

Popular things have the best communities, best documentation, the language models are the best at working in them and so on. I use Django, HTMX and Tailwind for most of my stuff—I like it but you should do what you know.
流行的事物擁有最好的社群、最好的文件,語言模型也最擅長處理它們等等。我大多數時候使用 Django、HTMX 和 Tailwind——我很喜歡它們,但你應該使用你熟悉的技術。

And remember, if you’re not embarrassed by the first version of your product, you’ve launched too late. That’s a quote from the founder of LinkedIn.
記住,如果你對你的產品的第一個版本不感到尷尬,那就表示你推出得太晚了。這是 LinkedIn 創辦人說的一句話。

And Remember...

This was the landing page for Place Card Me that I used for the first year or something like that. Those are literally font awesome icons and just this giant stupid button. You have to get comfortable putting things out into the world that don’t meet your level of internal quality because you just have to try it. Starting the feedback loop is much more important than building a perfect thing.
這是我第一年或類似時間段內為 Place Card Me 使用的登陸頁面。那些文字圖示根本就是 Font Awesome 的圖示,只有一個巨大的、傻氣的按鈕。你必須習慣將那些沒有達到你內心品質標準的東西推向市場,因為你必須嘗試。啟動回饋迴圈比建立完美的事物更重要。

Let’s move on to selling.
接下來我們來談談銷售。

Selling it

I think one of the biggest fallacies that I see in developers is this idea that if they build the best product in the world, they’re going to be successful.
我認為開發人員最大的謬誤之一,就是認為只要他們打造出世界上最好的產品,就會獲得成功。

If you build it they won't come

They think the reason that some software is successful is because it was the best product, when usually it is because that product had the best marketing team or some combination of a great product and great marketing.
他們認為某些軟體之所以成功,是因為它是最好的產品,但通常是因為該產品擁有最好的行銷團隊,或是兼具優秀的產品和優秀的行銷。

An uncomfortable truth is that you will need to spend a lot of time selling your product through marketing or sales. There’s this book “Traction” that I recommend, which is where I got the takeaway that I should be spending half of my time on marketing and sales.
一個令人不安的事實是,你需要花很多時間透過行銷或銷售來推銷你的產品。我推薦一本書《Traction》,我從中獲得的啟發是,我應該將一半的時間花在行銷和銷售上。

Half your time should be on marketing/sales

I think of it like eating my vegetables—I love coding, I hate marketing. It’s like “I have to do marketing today” and it’s like eating my vegetables before I can have my french fries.
我把它想像成吃蔬菜——我熱愛編碼,我討厭行銷。這就像「我今天必須做行銷」,就像在吃薯條之前必須先吃蔬菜一樣。

I also recommend selling your product before it’s ready.
我也建議在產品準備好之前就開始銷售。

You should sell your product before its ready

I’m sure we’ve all had this experience where you find some app that looks really cool and you want to sign up, and then you just get this popup asking for your email address.
我相信我們都有過這樣的經驗:你發現一些看起來很酷的應用程式,想註冊,然後就會彈出一個視窗要求你輸入電子郵件地址。

As a consumer, that’s super frustrating, but as an app builder this is really useful for two reasons. One reason is that if you can’t get someone to give you their email address, then it’s going to be very hard to get them to pay you. It’s a good proxy for whether you’re building something that anyone is even remotely interested in. You put this up, figure out a way to drive traffic to it, and get a bunch of emails - that’s a good sign. If you drive a thousand people to this website and don’t get any emails, that’s a bad sign.
作為消費者,這真的讓人很沮喪,但作為應用程式開發者,這其實很有用,原因有二。第一個原因是,如果你無法取得某人的電子郵件地址,那麼要讓他們付錢給你就會非常困難。這是衡量你是否正在打造任何人都略感興趣的產品的好指標。你將產品上架,想辦法吸引流量,然後獲得一堆電子郵件——這是一個好兆頭。如果你吸引了一千人瀏覽這個網站卻沒有收到任何電子郵件,那可就糟糕了。

It’s also really important to have people to tell about your product when it’s actually ready. What often happens is someone will build in the darkness for a long time, they’ll launch their product, put it on Hacker News or something, nobody notices, and then they think that they failed. But they haven’t failed, they just had unrealistic expectations of success.
當你的產品真正準備就緒時,擁有可以告訴你的產品的人也很重要。通常會發生這樣的情況:有人會在暗中默默開發很久,然後推出他們的產品,把它放在 Hacker News 或其他地方,卻沒人注意到,然後他們認為自己失敗了。但他們並沒有失敗,只是對成功的期望不切實際。

If that person instead had a list of 200 people that they knew were interested in their product, then before launch they could email 20 of them and set up Zoom calls to walk through it and get feedback. You can iterate there, email the next 20, and so on.
如果那個人有一份包含 200 位對其產品感興趣的人的清單,那麼在產品推出之前,他們可以發送 20 封電子郵件給他們,並安排 Zoom 通話來逐步講解產品並獲得回饋。你可以在這裡反覆迭代,再發送 20 封電子郵件給下一個人,以此類推。

Then when you actually launch you email the whole list. Hopefully you have people jumping into your product from day one, and it’s better than it would have been otherwise.
然後,當你真正推出產品時,你可以向整個清單發送電子郵件。希望從第一天開始就有人使用你的產品,而且效果會比其他方式更好。

Let’s talk about getting your first traction.
接下來,我們來談談如何獲得最初的用戶。

Getting your first traction

These are some strategies that worked for me.
以下是一些對我有效的策略。

Communities

Communities are a really good place to find early users. The great thing about communities is they’re incredibly niche. If you’re building a product for plumbers who play Dungeons & Dragons, there’s probably a Reddit for that, probably 20 Facebook groups for that, and you can go immediately into those communities and talk to your ideal customer profile.
社群是尋找早期用戶的好地方。社群很棒的一點是它們非常利基。如果你正在為玩龍與地下城的管工打造一款產品,那麼可能有一個 Reddit 論壇是關於這個的,可能還有 20 個 Facebook 群組是關於這個的,你可以直接進入這些社群並與你的理想客戶形象交流。

One thing to know about communities is that all marketers use them this way, so communities hate marketers. They develop a pretty strong immune systems towards people doing marketing stuff. So go into communities tactfully, be nice in the community, add value, and mention your product when it’s relevant. This is a great way to find early users.
需要知道的一點是,所有行銷人員都會這樣使用社群,所以社群討厭行銷人員。他們對做行銷的人會產生非常強烈的免疫力。因此,要巧妙地進入社群,在社群中友善相處,增加價值,並在相關時提及你的產品。這是尋找早期用戶的好方法。

Ads

Ads are another good way to find early users. Google sponsored links are very prominent, and you can use ads on tons of other platforms.
廣告是尋找早期用戶的另一種好方法。Google 贊助連結非常醒目,你可以在許多其他平台上投放廣告。

Ads are great to try to answer that question of whether anybody wants what you’re building or if anyone can figure out how to use your product. You can just pay a bit of money for a hundred people to come play with your website and figure out what’s happening. I don’t recommend using ads as a way to make money—you will lose money on this exercise (at least in the beginning)—but you’re essentially trading early bits of money to do some user research.
廣告非常適合用來解答是否有人想要你正在打造的東西,或者是否有人能弄清楚如何使用你的產品。你可以只花一點錢讓一百個人來玩你的網站,並弄清楚發生了什麼事。我不建議使用廣告來賺錢——你會在這項練習中賠錢(至少在一開始會)——但你本質上是在用少許資金來做一些使用者研究。

Cold outreach

Cold outreach is another uncomfortable one that also works sometimes. When I was building Place Card Me, I spent an hour a day just reading wedding blogs and writing long personal emails to wedding bloggers. I would do this every day and most of them never responded to me, but one of them did. This person helped me tremendously in terms of teaching me about the industry, gave me backlinks on her site, and gave me some place cards designs.
冷啟動聯繫是另一種令人不舒服但有時也奏效的方法。當我開發 Place Card Me 時,我每天花一個小時閱讀婚禮部落格,並向婚禮部落客撰寫冗長的個人電子郵件。我每天都會這樣做,而且大多數人都沒有回覆我,但其中一人回覆了。這個人幫助我 tremendously,在產業方面教導我許多,在我的網站上給我回連結,還給我一些名片設計。

Cold outreach can be a good strategy, though it’s getting harder in the age of AI spam. It’s better to write one really good email or Twitter DM than to find some tool that uses an LLM to write a hundred terrible ones.
冷啟動聯繫可能是一個不錯的策略,儘管在 AI 垃圾郵件盛行的時代,這越來越難了。寫一封真正好的電子郵件或 Twitter 私訊,比使用 LLM 寫一百封糟糕的電子郵件更好。

Content / SEO

Content is my main way that I market my stuff today. Basically, if you’re building a product for a specific industry you create content that’s useful for that industry.
內容是我今天行銷產品的主要方式。基本上,如果你正在為特定產業開發產品,你就會創造對該產業有用的內容。

I target Django developers, so I write content about Django. Then people who are Googling how to deploy Django or how to connect Django to Stripe find my guides, and that’s a nice way to get exposure to my product. You get backlinks and so on.
我的目標是 Django 開發人員,所以我撰寫關於 Django 的內容。然後,在 Google 上搜尋如何部署 Django 或如何將 Django 連接到 Stripe 的人會找到我的指南,這是一個讓我的產品曝光的好方法。你會獲得回連結等等。

I do some of this stuff on YouTube now also. Video is huge—I don’t have really any YouTube following but it still drives a good amount of traffic. This is something that you can do as an individual, just writing these blog posts or recording little screencasts.
我現在也在 YouTube 上做一些這類事情。影片非常重要——我並沒有什麼 YouTube 粉絲,但它仍然帶來相當多的流量。這是你可以作為個人去做的事情,只需撰寫這些部落格文章或錄製一些螢幕錄影。

Building in public

I hesitated to put this slide on, but this was something that I did a lot which is called “building in public”—that’s just where you share what you’re working on publicly. I did this on my blog. You’ll see this on Twitter all the time; it’s gotten to be a very noisy channel.
我猶豫是否要放這張投影片,但這是我經常做的事情,稱為「公開開發」——也就是你公開分享你正在從事的工作。我曾在我的部落格上這樣做。你會在 Twitter 上經常看到這種情況;它已經變成一個非常吵雜的管道。

But the nice thing about this strategy is it requires no work. You just work on your project for two hours and then post a screenshot of what you did. Maybe a few people will find what you’re doing interesting, follow along your journey, and then they become little advocates that will try your products or connect you to other people.
但這個策略的好處是它不需要任何工作。你只需要花兩個小時來進行你的專案,然後發布你所做工作的螢幕截圖。也許有些人會發現你正在做的事情很有趣,追蹤你的進度,然後他們就會成為小型的擁護者,他們會嘗試你的產品或將你與其他人聯繫起來。

Now I want to talk a little bit about psychology.
現在我想談談一點心理學。

Psychology

I lied with this diagram—this is not the only thing that happens.
我用這個圖表說謊了——這並不是唯一會發生的事情。

There’s another path which is not as good: giving up.
還有另一條路,但沒那麼好:放棄。

Psychology

Courtland Allen, who is the founder of Indie Hackers, interviewed hundreds of people who have gone down this path. When asked what his biggest takeaway from the success stories was, he said all you have to do is just not quit. There was no other generalizable advice he had—just don’t quit.
Indie Hackers 的創辦人 Courtland Allen 訪問了數百位走過這條路的人。當被問及從這些成功故事中最大的收穫是什麼時,他說,你只需要別放棄。他沒有其他可以普遍應用的建議——就是別放棄。

“Your Whole Goal Is to Not Quit”

So how do you prevent yourself from quitting?
那麼,你如何才能避免放棄呢?

How do you prevent yourself from quitting?

One way is by having infinite runway, which I talked about already.
一種方法是擁有無限的跑道,我之前已經談過了。

Infinite Runway

Setting things up so that money is not the reason you quit is a good way to eliminate that particular constraint.
將事情安排好,讓金錢不會成為你放棄的原因,這是消除這個特定限制的好方法。

You still might run out of motivation, though. In order to stay motivated, I think one of the most important things to do is to just manage your own expectations.
然而,你仍然可能會失去動力。為了保持動力,我認為最重要的事情之一就是管理好自己的期望。

Expectation management

I like this quote from Bill Gates: “Most people overestimate what they can do in a year and underestimate what they can do in 10 years.”
我喜歡比爾·蓋茲的這句話:「大多數人高估了他們一年能做的事情,低估了他們十年能做的事情。」

This really resonated with me. If you think “I’m gonna go down this path and take a shot and spend three months and launch my app” and then it didn’t work so you quit—that happens to a lot of people.
這句話真的引起我的共鳴。如果你想「我要走這條路,試試看,花三個月時間推出我的應用程式」,然後它沒有成功,所以你放棄了——這發生在很多人身上。

Instead, if you think of it as more of a five-year journey or a ten-year journey, you’re just going to take these really small steps that don’t really look like they’re working, but they’re cumulative and eventually they add up.
相反地,如果你把它看作是五年或十年的旅程,你只需要採取這些看起來不起作用的小步驟,但它們是累積的,最終會加起來。

Embracing learning is another important one.
擁抱學習也是另一個重要的因素。

Embrace Learning

This is kind of like a Dungeons and Dragon’s character skill chart—probably the average person in this room is a pretty good coder, maybe knows a bit about product and marketing and other skills. But in order to really succeed in this career, you have to look more well-rounded.
這有點像《龍與地下城》的角色技能圖表——這個房間裡普通人可能都是相當不錯的程式設計師,也許懂一點產品和行銷以及其他技能。但為了在這條職業道路上真正取得成功,你必須看起來更全面。

The hard part is really just embracing the idea that you’re going to learn these skills that don’t feel comfortable. I’ve never enjoyed marketing or wanted to be a marketer, but it was something that I had to learn in order to sell stuff. If you’re not willing to get outside your comfort zone and learn things that are outside what feels comfortable, you will probably have trouble.
困難的部分其實是接受你將學習這些讓你感到不舒服的技能。我從來都不喜歡行銷,也不想成為行銷人員,但為了銷售產品,我必須學習它。如果你不願意走出你的舒適圈,學習那些讓你感到不舒服的事情,你可能會遇到麻煩。

Be Resilient

Finally, be resilient.  最後,要堅韌。

This is a funny graph showing how much money I was making every week on Place Card Me in the beginning of 2020. Things were going great—I was making up to $400 a week, and then all of a sudden there was a global pandemic and people weren’t having weddings anymore. My primary source of passive income just dropped to zero overnight.
這張圖表很有趣,它顯示了我在 2020 年初使用 Place Card Me 每週賺多少錢。情況很好——我每週最多能賺 400 美元,然後突然發生了全球大流行,人們不再舉辦婚禮了。我的主要被動收入來源一夜之間歸零。

That’s just one example of things that happen to you because this is a very unpredictable career. The highs are really high, the lows are also really low, and you have to be resilient to these ups and downs. Going two weeks without earning any money and then one day a bunch of money appears in your bank account, it’s a very stressful thing. You have to get used to these big swings that you just don’t have in a salary job.
這只是會發生在你身上的事情的一個例子,因為這是一份非常不可預測的職業。高點真的很高,低點也很低,你必須能承受這些起起伏伏。兩週沒有賺到任何錢,然後有一天你的銀行帳戶裡突然出現一大筆錢,這是一件非常令人緊張的事情。你必須習慣這些在領固定薪水的工作中不會遇到的巨大波動。

But if you emerge on the other side, hopefully you can profit.
但如果你能度過難關,希望你能有所收穫。

Profit

This is from my very first blog post when I first started - I just wanted to get someone to pay me a dollar on the internet. That was my goal.
這是我剛開始寫的第一篇部落格文章——我只是想讓網路上有人付給我一美元。那是我的目標。

How it started / How it's going

Eight or nine years later, I am making more money than I ever made as CTO of my company. But more importantly, it’s a very nice lifestyle. I have time to hang out with my kids whenever I want, I can go on long vacations, nobody tells me what to do, I can take meetings whenever I feel like it (or never).
八九年後,我賺的錢比我以前擔任公司 CTO 時賺的還多。但更重要的是,這是一種非常美好的生活方式。我可以隨時和我的孩子們相處,我可以去長時間的假期,沒有人告訴我該做什麼,我可以隨時開會(或者從不開會)。

So yeah, I recommend this career.
所以,是的,我推薦這個職業。

And if it sounds interesting, I recommend you give it a shot, and see if you can make it happen.
如果聽起來很有趣,我建議你試試看,看看你能不能做到。

Questions?


Thanks for getting this far! If you liked this you can comment below, share it, or subscribe to get email updates when I publish new stuff.
感謝你看到這裡!如果你喜歡這篇文章,可以在下方留言、分享或訂閱,以便在我發表新文章時收到電子郵件通知。

8 likes  8 個讚1 reposts  1 次轉發0 replies  0 則回覆

Comments  留言

Join the conversation by replying on Bluesky.
在 Bluesky 上回覆加入討論。