自力更生创业的第六年
六年前,我辞去了 Google 开发者的工作,创办了自己的自力更生(bootstrapped)软件公司。
最初几年,我所有的业务都失败了。其中最好的一个月收入只有几百美元,而且没有一个盈利。
第三年过半时,我做出了一款名为 TinyPilot 的设备。它让用户可以远程控制自己的电脑。产品很快走红,从那以后它一直是我的主要工作重心。


TinyPilot 是一款让用户远程控制电脑的小型设备。
2023 年,TinyPilot 创造了 99.7 万美元的收入,我大方地把它四舍五入成整整一百万。更重要的是,业务赚到了 23.6 万美元的利润,比 2022 年增长了 20 倍。
在这篇文章中,我将分享自力更生创业第六年里我学到的东西。
往期回顾
TinyPilot 的利润增长了 20 倍
| 收入/支出 | 2022 | 2023 | 变化 |
|---|---|---|---|
| 销售收入 | $807,458 | $992,597 | enable JS to see delta |
| 信用卡返现 | $4,327 | $4,379 | enable JS to see delta |
| 总收入 | $811,785 | $996,976 | enable JS to see delta |
| 广告 | -$51,764 | -$39,270 | enable JS to see delta |
| 云服务 | -$9,151 | -$16,408 | enable JS to see delta |
| 设计咨询 | -$30,215 | -$950 | enable JS to see delta |
| 电气工程咨询 | -$124,643 | -$23,427 | enable JS to see delta |
| 履约供应商 | -$0 | -$28,321 | enable JS to see delta |
| 办公室租金 | -$6,600 | -$6,310 | enable JS to see delta |
| 工资 | -$205,984 | -$255,779 | enable JS to see delta |
| 邮费 | -$28,324 | -$16,853 | enable JS to see delta |
| 原材料 | -$324,140 | -$358,457 | enable JS to see delta |
| 其他一切 | -$25,398 | -$31,404 | enable JS to see delta |
| 总支出 | -$806,219 | -$777,179 | enable JS to see delta |
| 净利润 | $10,447 | $235,568 | enable JS to see delta |
在基本收支平衡两年之后,TinyPilot 终于赚到了像样的利润。
这一变化主要归功于更强劲的销售。今年我们改用了金属外壳,这既提高了客户愿意支付的价格,也提高了我们的制造产能。
各项支出有所变动,但总体上大致持平。设计成本几乎降到零,因为我不再每月花 6000 美元请设计公司调整我的 logo。我把精力放在扩大现有产品的规模上,而不是反复迭代硬件设计,这使我的电气工程成本减少了 10 万美元。
我自己不领薪水,所以 2023 年我从 TinyPilot 获得的总收入是 23.6 万美元。人们常常好奇,我是如何靠前五年自力更生创业那微薄的收入活下来的。答案是我住在西马萨诸塞州,那里生活成本很低。我在大厂工作多年攒下了一些指数基金储蓄,这些投资产生的分红收入足以维持我的生活。
2023 年最惊心动魄的 10 分钟
二月一个慵懒的周六下午,我听到敲门声。站在我门廊上的是一个五十多岁的男人,穿着牛仔裤和防风夹克。我穿着睡衣打开了门。
“你是那个做 TinyPilot 的人吗?”他问我。
“糟了,”我心里想。难道是哪个不满的客户找到了我家?
“是……”我谨慎地回答。
“我是办公室的维修工。一个喷淋头爆了,我们进不了你的房间。你能下来一趟吗?”
这听起来可不妙。
在开车去办公室的五分钟里,我一直在想这是不是意味着我事业的终结。我们所有的库存都存放在 TinyPilot 的办公室里。电路板被水泡过还能用吗?大概不能。
TinyPilot 有保险,但我是一年前投保的,当时我们的库存只有现在的一半。而且就算保险赔付了,TinyPilot 也会瘫痪好几个月,直到我们重启整个制造流程。
我到了大楼,走向二楼的 TinyPilot 办公室,每走一步地毯都被踩得湿漉漉地作响。
到了我们那一层,我松了一口气:爆裂的喷淋头其实是在共用的会议室,而不是 TinyPilot 的房间。我打开办公室的门,发现里面一切干燥如初。水连我们的门缝都没有渗进来。
但我的欣慰没有持续多久,房东告诉我,为了修理我们与会议室共用的那面墙,他可能得让我们搬出去“几周到几个月”。

TinyPilot 隔壁办公室的一个喷淋头爆裂,里面的东西全被毁掉了。
通常情况下,被要求在几天之内搬走整个办公室就已经够麻烦了,但这周尤其麻烦。我正准备去欧洲进行为期两周的旅行,这是创办 TinyPilot 以来我离开时间最长的一次。
如果团队在我离开期间要搬家,没人能配置电脑或打印机——办公室的 IT 人员就是我自己。而如果团队无法打印快递面单,他们就无法发货。
长话短说,我们最终没有搬,但这次经历让我再也不想陷入那种境地。把 TinyPilot 的运营集中在一个小小的办公室里,我承担的风险太大了。
外包订单履约,减轻压力
TinyPilot 的订单履约一直非常顺畅,这也是我一直拖延外包它的原因。过去两年 3500 多笔订单中,只有大约五单我们给客户发错了商品。
2023 年 3 月,TinyPilot 从自行履约转为使用第三方物流仓库(3PL)。我们仍在办公室组装设备,但会把可直接发给客户的包裹批量运到仓库,由 3PL 完成向客户发货这最后一步。
转向 3PL 的时候,我们正处于“紧急模式”。我们两名兼职员工的团队每周组装大约五十台设备,而客户的购买速度与之相当。这种局面压力很大,因为任何中断都可能让我们被迫停止销售。
我希望外包履约能腾出足够的团队时间,把产量提高到每周约 100 台。结果发现我们的全部产能只有大约 70 台。照这个速度,需要以满负荷运转几个月才能在仓库里建立起健康的库存。我最终临时雇了第三名员工,帮我们撑过夏天。
所以,外包履约并没有腾出大量时间,但确实为我们赢得了更多的灵活性。
本地团队似乎本来就有灵活性,因为他们可以想什么时候来就什么时候来。只要订单在第二天取件前打包好,他们哪怕凌晨 3 点来上班也行。
改用 3PL 后,每天取件的死线消失了。取而代之,我们唯一的期限是每周把组装好的产品发到仓库一次。
灵活性的提升减轻了很多压力。如果员工想休一个四天的周末,他们可以调整自己的排班,仍然完成当周正常的 15 小时工作。或者他们可以休几天假,而不会觉得给团队其他人造成了负担。
让 TinyPilot 看起来像个真正的产品
2023 年 TinyPilot 最显著的变化之一,是我们改进了产品的外观。
2022 年底,我们仍在用七台不间断运行的高端 3D 打印机制作 TinyPilot 的外壳。就 3D 打印而言,我们的外壳算是相当不错的,但它们仍然带着 3D 打印产品那种“只是个原型”的感觉。

之前:TinyPilot 的 3D 打印外壳
2023 年 2 月,我们换成了金属外壳。

之后:TinyPilot 的金属外壳
金属外壳对销量的影响之大让我吃惊。它不仅提高了销量的绝对数量,还提高了客户愿意支付的价格。在尝试了不同定价之后,我把价格提高了 10%,而月销量仍然高于使用 3D 打印外壳的时候。
我们还更新了 TinyPilot 的包装。直到去年下半年,我们仍然是把设备和所有线缆一起塞进一个气泡袋,再把气泡袋丢进一个素色牛皮纸盒里。


我们以前对 TinyPilot 的包装,只是把设备、线缆和说明书整齐地裹在一个气泡袋里。
每次有测评人分享拆箱 TinyPilot 的体验,我都会有点难为情。

一位 homelab 测评人在测评中展示了 TinyPilot 那令人尴尬的旧包装
我曾和几位设计师聊过为产品做一个精美的零售包装盒,但一直没有成行,也从来不是我的头等大事。换成金属外壳之后,TinyPilot 的包装就显得格外不成熟了。
2023 年下半年,我们与一家代工制造商(contract manufacturer)合作,让他们接管了我们的整个生产流程。作为这项工作的一部分,他们主动提出为我们制作一个零售包装盒。


TinyPilot 的新代工制造商为我们的产品制作了一个品牌零售包装盒。
我们的代工制造商把盒子做得很棒。它放在 Best Buy 的货架上也许不会让人眼前一亮,但它看起来像网络硬件产品应有的专业包装。
学到的经验
低延迟责任中隐藏着压力
把 TinyPilot 的订单履约交给 3PL 减轻了压力、增加了灵活性,对 TinyPilot 的本地团队来说如此,但最让我意外的是它对我个人压力的巨大缓解。
多年来,我背负着大量“万一怎么办”的焦虑,却甚至没有意识到。
在改用 3PL 之前,我脑海里总有一层挥之不去的担忧,想着各种可能阻碍订单履约的事情。万一办公室的路由器崩溃,导致所有人都无法上网怎么办?万一台式机突然连不上打印机怎么办?有几十种情况可能让我被紧急叫去解除某个关键流程的阻塞。
现在我们转向了 3PL 和代工制造商,仍然有很多可能出问题的地方,但我已经不在大多数日常运营的关键路径上了。如果仓库的打印机坏了,会有别人去修,我多半永远不会听说这件事。
项目越成熟,花在维护上的时间越多
六月,当我坐下来为最新的 TinyPilot 软件更新撰写更新日志时,我很难解释我们所做的工作如何让用户受益。我猜想是重构工作做多了,于是决心让下一个版本更加面向用户。
到了发布下一个更新的时候,我遇到了同样的问题。经过两个半月的开发,我们能拿出来的只是一些细小的、表面上的改进。
与早期每隔几个月就发布重要功能的节奏相比,我们目前的速度慢得像冰川。是我对任务优先级排错了吗?团队失去热情了吗?我们背上了太多技术债吗?
我审查了该版本的完整任务清单,包括所有对最终用户不可见的工作。即使有后见之明,我仍然觉得自己选的任务是对的。我们在每个任务上投入的时间看起来也合理。

TinyPilot 2.6.1 版本中的任务,按改进产品(绿色)、自动化与降低复杂度(蓝色)以及日常维护(红色)着色
那么,既然我们优先级排得好、工作效率也高,为什么进度却慢了这么多?
我意识到,决定性因素是我们代码库的规模。我们的代码量是三年前的三倍。而每一行代码都需要时间来维护。所以,如果开发人员的数量保持不变而代码库规模增大,那么我们花在维护旧代码上的时间比例必然会更高。
除了维护之外,更多的代码还意味着新功能的开发成本更高。如果你的应用没有任何功能,做第一个功能很容易。如果你的应用已经有 20 个功能,你就得花更多心思考虑第 21 个功能如何与所有其他功能整合。
所以,我还没找到让我们显著提速的办法,但我学会了调整自己对功能开发节奏的预期。而且我也调整了估算开发成本的方式,以考虑到我们更复杂的代码库。
大多数支持问题的升级都可以异步处理
我尽量给 TinyPilot 团队尽可能多的自主权。同时,我想确保每个人在遇到困难时都能放心地向我求助。
问题在于,当支持工单升级到我这里时,它们总是让人感觉格外有压力。
有一段时间,我以为这就是支持问题升级的本质。我只看到最棘手的客户问题,所以它们当然让人有压力。结果发现,其中大部分是可以解决的。
首先,我调整了我们的升级流程。大多数升级的形式是:“Michael,这里有个我们从未见过的问题,你想让我们怎么处理?”我鼓励团队调整做法,在向我升级问题的同时提出一个解决方案。如果我不在,而他们是支持的最后一道防线,他们会怎么告诉客户?
80% 的情况下,团队想出的方案和我会推荐的完全一样。支持团队这样做的次数越多,他们处理棘手案例的能力就越强。
当我看到团队的答案和我的如此接近时,我意识到没必要让支持工单等我的答复。如果我在这 80% 的案例中唯一的贡献就是“对,就这么做”,为什么不直接立刻执行他们的方案,同时并行向我确认有没有其他选择呢?
在少数我确实有更好解决办法的案例中,那几乎总是客户可以在团队建议之外额外尝试的方法。我们从未遇到过团队对我说“唉,真希望你能早点介入,因为我们建议客户把设备放进微波炉,现在他家着火了”的情况。
给去年的目标打分
去年,我设定了三个高层目标,希望在这一年内实现。以下是我的完成情况:
每周花 20 小时管理 TinyPilot
- 结果:我大幅减少了往年的工时,旅行时间也超过了以往任何一年。
- 评分:B-
2023 年我的工作时间比 2022 年少了很多。我因工作和非工作原因做了大量旅行。我累计“不在办公室”大约五周,而一切都运转良好。
晚上下班时,我的工作日通常感觉是完整的,而在 2022 年,我常常觉得自己留下了没处理完的尾巴。
赚取 10 万美元利润
- 结果:我赚到了 23.6 万美元利润。
- 评分:A+
我预计今年会盈利,因为我知道硬件工程上的支出会减少,但我低估了改用金属外壳后 TinyPilot 能多赚多少收入。
超出目标让我喜出望外。
关闭 TinyPilot 办公室
- 结果:我们仍然保留着办公室,用于非关键的工作流程。
- 评分:B
我定这个目标时,没料到房东会同意按月续租,但他同意了。没有长期承诺,就没有在某个截止日期前搬走的压力。
我们已经成功地把制造和履约等关键运营搬出了办公室。所以,严格来说我们并不需要办公室,但有个大本营确实方便。
如果明天维修工来敲门,告诉我一场灾难毁掉了办公室里我们所有的财产、场地也无法使用了,那会很让人沮丧,但不算灾难性。
第七年的目标
每周花 20 小时管理 TinyPilot
我知道我在2022 年和2023 年都把这个定为目标,但事不过三嘛!我的管理时间呈下降趋势,所以今年可能就是实现它的一年。
出版一门课程或一本书
2021 年,我说过要写一本书,帮助开发者提升写作水平。我写完了第一章的 80%,然后那一年 TinyPilot 吸走了我所有的空闲时间。
我仍然想写那本书,所以如果我能减少管理时间,希望可以用空闲时间多写一些。
我也一直在尝试 Nix 和 Zig,这两项技术让我兴奋,但缺乏教学资源。为其中一项技术创建一门课程,可能是提升我自己专业能力、同时让这些工具更容易被他人使用的有趣方式。
每周写 10 个工作小时的软件
写代码仍然是我最喜欢的活动之一。
在 TinyPilot 的过去几年里,我一直享受编程,但把我有限的工时花在编程上从来都不是明智的选择。团队有六个人、几家关键供应商、还有许多环环相扣的事务,TinyPilot 最紧迫的部分始终是管理工作。
我希望通过把 TinyPilot 更多运营方面的工作外包和委派出去,我能腾出足够的精力,让编程即使不是对我时间的最优使用,至少也是一种合理的使用。
我还热爱这份事业吗?
每年写这些博客文章时,我都会问自己:我还热爱我正在做的事吗?
2022 年仍然是我最艰难的一年。我仍然更愿意做这个而不是给别人打工,但在应对全球芯片短缺的同时培训新队友,是一个巨大的挑战。
2023 年比前一年有了很大改善。要扑灭的火少了,把关键工作流程转移给专业供应商的感觉也很好。
2023 年的缺点是,我很难对它感到兴奋。这是重组的一年,所以我花了很多时间重新定义 TinyPilot 的流程、调整团队的职责分工。TinyPilot 让我看到,在设计组织流程方面我比一般开发者更擅长,但我仍然觉得这件事无聊得要命。
虽然不能说我热爱这一年,但我仍然享受了其中的大部分时光,并且更愿意做这个而不是给别人打工。我很庆幸自己处在这样一个位置:能够靠自己谋生,并打造一个令我自豪的产品。
随机一篇博客