TinyPilot:第13个月
原文由 Michael Lynch 于 发布,订阅该博客
一句话总结
授权与放手的一个月。
本月亮点
- TinyPilot 的欧盟分销商有望在八月底前正式开售。
- 通过将职责授权给团队成员,我腾出了不少时间。
- 两项卡了好几个月的任务竟也神奇地取得了突破。
月度目标复盘
每月初我都会定下当月的目标,下面是本月的完成情况:
让欧盟合作伙伴在八月底前具备开售条件
- 结果:有望在月底前如期开售。
- 评分:A
进展顺利。最快下周,分销商就能拿到组装 TinyPilot Voyager 所需的全部零件和说明,有望在本月底正式开售。
建立流程,让 TinyPilot 本地团队能够共享并轮流承担所有工作
- 结果:创建了共享待办清单,实现了任务轮换。
- 评分:A
TinyPilot 过去从未有过两人同时管理库存和履单的情况。要设计一套能让两个人平等分担职责的协作机制,比我预想的要难,好在我们现在已经有了一套可行的方案,两名员工可以轮流执行任务、协调排班。此外,我也把自己之前补位的那些工作都做了文档化,以便本地团队能够接手。
为 TinyPilot 销售网站寻找设计师
- 结果:已找到新开发者,正在进行网站改版。
- 评分:A
寻找了数月之后,我终于找到了一位愿意负责 TinyPilot 网站的开发者,他目前正在进行重新设计。
寻找能为 TinyPilot Voyager 开发 PoE 适配器的电子工程公司
- 结果:原合作公司找到了可用于制作 PoE 适配器的元器件。
- 评分:A+
这又是一次幸运的突破。全球芯片短缺让合作的电子工程公司数月来束手无策,于是我开始联系规模更大的供应商,希望他们在电子供应链上有更强的人脉。这本会是一个漫长的过程,而且对方很可能要从零开始。
好在,TinyPilot 现有的电子工程合作伙伴设法找到了一批货源,足以支撑我们 6 到 12 个月的需求,而且价格不到我预估的十分之一。他们目前正在设计 PoE 适配器的 PCB,预计 4 到 6 周内拿出原型。
TinyPilot 数据一览
| 指标 | 2021年6月 | 2021年7月 | 变化 |
|---|---|---|---|
| 独立访客 | 6,339 | 5,234 | -1,105 (-17%) |
| 总页面浏览量 | 11,514 | 9,730 | -1,784 (-15%) |
| 销售收入 | $29,446.46 | $23,954.64 | -$5,491.82 (-19%) |
| 企业订阅 | $48.00 | $48.00 | $0 (0%) |
| 总收入 | $29,494.46 | $24,002.64 | -$5,491.82 (-19%) |
| 利润 | -$9,452.32 | -$9,713.34 | N/A |
销量持续下滑,原因是过去一段时间我把精力放在了搭建欧盟分销渠道和将履单流程移交给本地团队上。好在即使两个月没有做任何营销和推广,TinyPilot 仍能维持 2.4 万美元的营收,但未来几个月我需要在销售和营销上加大投入。
转向托管式库存管理系统
从 TinyPilot 创立之初,我就一直在寻找托管式的库存管理系统。便宜的方案过于简单,只适用于无需组装或生产的商品;高端的方案又过于复杂,是为拥有数千种商品和多个仓库的企业级客户设计的。
偶然间我发现了 Craftybase,它看起来终于像是适合 TinyPilot 的方案。某种程度上也确实如此,但迁移过程相当坎坷。
Craftybase 有些功能设计得很巧妙,非常贴合我们的工作流。我最喜欢的是“配方(recipes)”功能,它可以定义构成某个产品的原材料。比如,我可以告诉 Craftybase,一个 TinyPilot Power Connector 由一个外壳和一块电路板组成。当我在系统中录入一次 10 个 Power Connector 的“生产”记录时,它就会自动从库存中扣除 10 个外壳和 10 块电路板。

Craftybase 的“配方”功能让你可以定义每个产品所包含的零部件。
配方中还可以包含我们自己生产的其他部件,这很好地适配了 TinyPilot 多阶段生产的流程。例如,我们通常会分阶段组装 TinyPilot Voyager:先批量组装 10 台以上的设备并完成测试,再将每台设备与所需线缆、说明书和 microSD 卡一起打包。Craftybase 允许我们在这一流程的不同阶段追踪零部件,因为配方既可以包含原材料,也可以包含前期已生产好的部件。
遗憾的是,我们在 Craftybase 上的多数工作流都磕磕绊绊。最突出的问题是处理入库货物。Craftybase 允许你为每种物料设置“低库存阈值”,当库存低于该值时会自动高亮提醒。

当库存数量低于你设定的低库存阈值时,Craftybase 会高亮提示相应物料。
问题在于,即使你已经下了补货订单,它仍会继续标记该物料为低库存,因为这个提醒完全忽略了在途订单。在上面的例子中,我已经在 Craftybase 中记录了一批 HDMI 采集芯片将在月底到货,但系统依然将其标记为低库存,仿佛我什么都没做一样。
这意味着,当 TinyPilot 的员工想要确认哪些物料需要补货时,必须逐一查看每个被标记的物料,核对在途订单后判断其是否真的库存不足。
起初我以为有个简单的变通办法。我以为 Craftybase 里的“已采购(purchased)”一栏代表的是在途数量。结果发现,“已采购”其实是指从一开始到现在累计采购的总量——一个毫无意义的指标,却被 Craftybase 放在了极其显眼的位置。

当库存数量低于你设定的低库存阈值时,Craftybase 会高亮提示相应物料。
变通的办法是,对于每个被标记为低库存的物料,都得点进详情页,查看现有库存,加上在途订单,再判断总数是否低于低库存阈值。本来两秒就能完成的低库存检查,在 Craftybase 里却变成了一个需要花费数分钟、来回切换多个页面的繁琐流程。


要在 Craftybase 中判断某个物料是否真正库存不足,需要在多个页面之间来回核对数字。
通过授权腾出更多时间
在 TinyPilot 的大部分时间里,我都面临时间不足的问题。业务环节众多,而我是贯穿所有环节的唯一桥梁。
六月,我列出了一份可通过培训和工具投入来授权的任务清单。很高兴地说,清单上有一半的任务已经成功授权或直接省去,此外还有几项额外任务也一并解决了。
从表格维护中抽身
TinyPilot 之前的库存方案是我自己维护的一套电子表格。它很贴合我们的工作流,但不够灵活。每当新增产品或更换零件,我就得花上好几个小时去摆弄那些临时拼凑的公式,才能让表格重新正常工作。

在 TinyPilot 运营的第一年,我们通过一系列带有复杂公式的电子表格来追踪所有库存。
尽管 Craftybase 让人抓狂,但它让我从库存流程的关键路径中解脱了出来。它在库存追踪的精细度和灵活性上都超过了电子表格,尽管确实需要大量变通操作。
为本地团队创建共享待办清单
还有一项我不知不觉仍在微观管理的工作是任务分配。TinyPilot 的两名本地员工每周到办公室三天,每次工作几小时。对于每天都要做的任务,比如订单履约或处理到货物资,很容易在当班时直接安排他们去做。
而每周或每月才做一次的任务,就很难在两个人之间分配。在入驻本地办公室的头几个月里,这些周期性任务处于一种混乱状态:要么是“需要时再做”,要么是“等 Michael 来安排”,要么就是“Michael 自己顺手做了”。
其中一名员工对我们用作知识库的 Notion 很感兴趣,想多加了解。这正好是个不错的 Notion 练手项目,于是我让他用 Notion 做一个共享待办清单,来管理每周和每月的任务。

TinyPilot 本地团队在 Notion 的共享待办清单中追踪待完成任务。
过去三周我们一直在用这个待办清单,效果不错。主要的缺点是还没找到在 Notion 中创建循环任务的好办法。我们的变通方案是每隔几个月手动重新填充清单,虽然繁琐,但每季度也就花一个小时左右。
培训本地员工负责原材料补货
在 TinyPilot 的大部分时间里,库存管理包括原材料补货都是由我女朋友负责的。她六月回去读研后,她的大部分工作移交给了新员工,但补货这件事又落回了我身上。
补货看似简单,实则很难外包。不仅要教会别人怎么做,还要解决供应商网站账号共享、提供一张带消费限额的新借记卡以防误操作等问题。把库存管理交给他人也需要时间来建立信任——我不可能刚入职就把一张卡交给新员工说:“以后每月一万美元的采购就归你管了。”
七月,我终于为团队所有人创建了 Bitwarden 账号,这样就可以安全地共享登录凭证。我还编写了向各个供应商下单的操作说明。

TinyPilot 内部关于原材料补货的操作文档
维持库存水平看似工作量不大,但补货流程中琐碎的环节非常多,能把这块工作交出去,我如释重负。
让开发者之间互相评审 Pull Request
自二月以来,有两位兼职开发者与我一起为 TinyPilot 工作,上个月又加入了第三位。由于时间不够,我已基本不再亲自写代码,但之前所有代码变更仍都由我来评审。
几个月前,我们曾尝试让我退出代码评审流程,但没有成功。我是全职在线,而其他开发者都是兼职,且在线时间基本不重叠。如果有一系列相互依赖的变更,评审之间的延迟就会严重拖慢进度。
在月度开发会上,我们意识到只有少数变更是这种前后依赖的。大多数情况下,多等一两天评审并无大碍。于是,现在开发者们开始互相评审代码了。
作为一个仍把自己视为独立开发者的人,想到要为自己没有亲自审过的代码负责,还是会感到不安。但我信任我的队友,而且我认为这套机制对公司整体更有利。
将镜像构建流程外部化
每次发布 TinyPilot 新版本时,我都会制作一个预装最新系统的 microSD 镜像。我的镜像构建流程需要用到树莓派,所以之前一直用的是放在办公室角落的一台备用树莓派和一块 SSD。

直到最近,这就是 TinyPilot 官方的构建服务器
尽管 TinyPilot 的开发者们完全有能力维护代码,但要协调共享一台孤零零放在我家里的服务器实在太不方便。结果,构建代码的维护工作一直只有我一个人能做。
有时候,我会连续几个月徒劳地用同一个关键词搜索,拼命想找到解决方案,结果发现只是搜索词用错了。我一直想要“树莓派云托管”服务,于是反复搜索“pi cloud hosting”或“pi cloud server”,找到的却都是教人如何把自己的树莓派当云服务器用的不相关结果。直到后来我试着搜索“pi dedicated server”,才找到了 Mythic Beasts——一家提供按秒计费的云端树莓派裸机托管服务的公司。

Mythic Beasts 提供树莓派裸机服务器托管服务。
Mythic Beasts 提供了不错的 API,可以动态创建树莓派服务器,但我算了一下,他们的服务器费用相对于开发者时间来说非常便宜,与其费心做复杂的动态分配逻辑,不如直接给每位开发者各配一台 7×24 小时常开的专属服务器更划算。
服务器问题解决后,我整理好了镜像构建代码并分享给了团队。现在任何 TinyPilot 开发者都可以在自己的服务器上部署最新的构建代码,用来生成 TinyPilot 的 microSD 镜像。更重要的是,如果流程中发现 bug 或需要增加新步骤,团队中的开发者就可以直接修改,而不再是只有 Michael 能做。
启动欧盟分销
过去一个月我最重要的项目就是推进与欧盟新分销商的合作。目前我虽然也向欧洲客户销售,但跨境寄送既慢又贵,还可能在收货时产生意外的关税。欧盟分销商将在德国本地生产并发货,这将大大改善欧盟消费者的购买体验。
合作中最大的挑战之一是如何在承诺与灵活性之间取得平衡。过去,TinyPilot 的未来很难预判超过几个月,所以我总是尽量保持灵活。但分销商自然需要我给出一定程度的长期承诺——他要投入大量时间和资金才能开始销售 TinyPilot 设备,肯定不希望我因为出现了条件更好的分销商就突然终止合作。
另一大难题是版税分成。我们一致认为按利润比例分成最能让双方利益保持一致。这样,分销商就可以自由尝试不同的定价,而不受固定分成金额的限制;如果他能以更高价格售出,我也能随之受益。
但按利润分成的难点在于,具体如何计算利润会引发很多棘手问题。比如,如果分销商为了推广免费赠送设备,是否还要向我支付版税?人力成本是否计入单台利润?如果我们共同投入产品改进,这又如何影响利润计算?
我们一直在梳理这些问题,并尽力预判潜在的冲突点。目前合同已完成约 95%,看起来有望在数周甚至数日内最终敲定。
遗留项目
以下是一些我仍在维护但已非主要重心的项目的简要更新:
Is It Keto
| 指标 | 2021年6月 | 2021年7月 | 变化 |
|---|---|---|---|
| 独立访客 | 49,839 | 39,568 | -10,271 (-21%) |
| 总页面浏览量 | 122,700 | 96,494 | -26,206 (-21%) |
| 域名评分(Ahrefs) | 13.0 | 13.0 | 0 |
| AdSense 收入 | $536.85 | $438.07 | -$98.78 (-18%) |
| Amazon 联盟收入 | $134.59 | $59.65 | -$74.94 (-56%) |
| 总收入 | $671.44 | $497.72 | -$173.72 (-26%) |
上个月我还在庆祝 Is It Keto 的访问量在每年一月的高峰过后依然坚挺,看来是自己立了 flag——本月访客量出现了今年最大的环比跌幅,下降超过 20%。
遗憾的是,这次下滑恰逢我申请加入更高阶的展示广告联盟。我听说有人建议从 Google AdSense 转向 MediaVine,后者给发布者的分成要高得多。MediaVine 要求月页面浏览量达到 10 万,我申请时刚好达标,现在却已跌破门槛。结果如何,只能观望了。
Hit the Front Page of Hacker News
| 指标 | 2021年6月 | 2021年7月 | 变化 |
|---|---|---|---|
| 独立访客 | 248 | 109 | -139 (-56%) |
| Gumroad 收入 | $123.52 | $218.09 | +$94.57 (+77%) |
| Blogging for Devs 收入 | $0.00 | $27.30 | +$27.30 (+inf%) |
| 总收入 | $123.52 | $245.39 | +$121.87 (+99%) |
课程方面最近没什么新动态。每月仍有几个人购买,评价似乎不错,但我没有做推广。Martin Schleiss 在他最近的博文中对课程给予了正面提及。我计划本月去几个技术播客做嘉宾,这或许能为课程带来一些新受众。
Zestful
| 指标 | 2021年6月 | 2021年7月 | 变化 |
|---|---|---|---|
| 独立访客 | 594 | 547 | -47 (-8%) |
| 总页面浏览量 | 1,470 | 1,300 | -170 (-12%) |
| 总收入 | $40.20 | $620.67 | +$580.47 (+1444%) |
本月 Zestful 的使用量大幅上涨,但我怀疑其中有欺诈成分。有好几个用户在几天内相继注册,用户名类似 joe-84ad853 这种格式。本月的大部分收入都来自其中一个账号。以往没有任何 Zestful 客户会在未联系我商讨批量折扣的情况下,花费超过 100 美元的 API 调用费用,而这个用户从未联系过我,所以我高度怀疑。RapidAPI 显示我将在 8 月 30 日收到这笔款项,但我对此深表怀疑,很可能根本收不到。
总结
完成了哪些事?
- 发布了 TinyPilot 新版本
- 找到了负责 TinyPilot 网站的开发者
- 恢复了 TinyPilot PoE HAT 和机架支架的进展
- 迁移至托管式库存管理系统
经验教训
- 不完美但可独立运转的流程,胜过依赖 CEO 的流程。
- 尽管 Craftybase 的界面和局限性让人沮丧,但它总比让我困在复杂的电子表格公式中要好。
下月目标
- 帮助欧盟分销商实现首单销售。
- 完成 Voyager 2 的设计定型。
- 发布 Refactoring English 的一章样章。
随机一篇博客
评论
登录后参与讨论