TinyPilot:第 26 个月
原文由 Michael Lynch 于 发布,订阅该博客
一句话总结
招聘之难,远超想象。
亮点
- TinyPilot 迎来了有史以来最好的一个月,营收接近 8 万美元,比此前的最高纪录高出 15%。
- 同一个岗位的招聘启事,这次收到的申请量是六个月前的 8 倍。
- 关于招人,我有很多想法。
目标完成情况
每个月初,我都会定下当月想完成的目标。以下是完成情况:
将 TinyPilot Community 和 TinyPilot Pro 迁移到下一代更新系统
- 结果:已完成 TinyPilot Community 的迁移,TinyPilot Pro 尚未就绪。
- 评分:C+
从 5 月起,我们就一直在全面重构 TinyPilot 的更新系统,耗时远超我们所有人的预期。
在最初的两年里,我在更新系统上积累了大量技术债,现在正在偿还。这也意味着我们不断遇到意外情况,每次都会耗掉一周甚至更久的开发时间。不过我很有信心,现在只剩下最后几周了。
确定 TinyPilot 授权管理方案
- 结果:方案已确定。
- 评分:A
我们已经确定了 TinyPilot 授权管理的方案,我想相关各方都很满意。它能提供流畅的用户体验,同时把工程复杂度降到最低。
将 TinyPilot Voyager 寄给两位 YouTube 创作者或博主进行评测
- 结果:忙于招聘,没顾上这件事。
- 评分:F
这项完全没有进展。我真该把招聘列为目标之一,因为这个月大部分时间都花在了这上面。
TinyPilot 数据一览
| 指标 | 2022 年 7 月 | 2022 年 8 月 | 变化 |
|---|---|---|---|
| 独立访客 | 21,242 | 11,903 | -9,339 (-44%) |
| 总浏览量 | 33,578 | 23,214 | -10,364 (-31%) |
| 销售收入 | $56,954.66 | $76,082.06 | +$19,127.40 (+34%) |
| 企业订阅 | $290.70 | $290.70 | 0 |
| 版税 | $2,513.71 | $3,264.23 | +$750.52 (+30%) |
| 总营收 | $59,759.07 | $79,636.99 | +$19,877.92 (+33%) |
| 利润 | $-12,349.21 | $21,580.82 | +$33,930.03 (+inf%) |
8 月是 TinyPilot 营收和利润的纪录之月。我在 7 月底降价了 11%,看起来这让销量增长了 34%。和上个月一样,这又是一个“平淡”的月份——没有任何外部事件推动这些数据,因此我对维持这一势头持乐观态度。
能够降价的原因是,我们终于有了充足的电路板供应。芯片短缺迫使我们花了八个月重新设计,以替换一个断供的元器件。为了避免有限的库存被抢购一空,我不得不维持高价。现在可以继续生产新的电路板了,我在定价和销售节奏上也有了更大的灵活性。
应对 8 倍的申请量
8 月我招聘了第二位技术支持工程师,这次的体验与六个月前招聘同一岗位时截然不同。
上一次,我在 30 天内收到了 221 份申请。这一次,仅两周就收到了 802 份。申请人实在太多,我不得不主动放慢节奏,并在两周后彻底关闭了申请通道。
我想在处理积压回复期间暂时隐藏招聘信息。但让人恼火的是,We Work Remotely 不允许临时隐藏职位。你要么永久删除并浪费掉已付费的发布时间,要么就让它一直挂着,吸引来远超你处理能力的候选人。
作为变通办法,我保留了招聘信息,但把地点要求从“全球”改成了“仅限美国”。这个岗位本身并不严格要求候选人住在美国,但这是我想到的、在不完全下架的情况下减缓申请涌入的最好办法。

增加地点限制后,新增申请的速度确实放缓了约一半。即便如此,仍有许多申请人无视这一要求。在加上限制后,声称自己住在美国的候选人比例为 42%,而在此之前仅为 18%。
两周后我关闭了申请,当时已收到 802 份申请。我知道自己无法足够快地处理完所有申请,也就无法及时给候选人回复。
为什么这一次申请人多了这么多?我的猜测如下:
结构化的网页表单比邮件更让人没有压力
我认为最大的因素是,这次候选人通过网页表单申请。上一次,我让大家直接发邮件附上简历和求职信。我猜人们填写结构化表单时会更自在,因此会鼓励更多人投递。
缺点是,网页表单似乎会吸引更多敷衍了事的申请人。上次,We Work Remotely 上有 18% 的申请人足够优秀,通过了初步简历筛选。这一次,只有 6% 进入了下一轮。
更多的招聘渠道意味着更多的候选人
我把职位发布到了另外两个渠道:RemoteOK 和 Craigslist。Craigslist 似乎没有带来多少申请人,但 RemoteOK 在两周内带来了 127 份。
经济下行意味着更多求职者
最后,如今的全球经济比我六个月前招聘时更差。对衰退的担忧加剧,招聘的公司也变少了。我猜现在比年初更像是雇主市场。
对比远程招聘渠道
通过这次招聘,我发现不同招聘渠道的投入产出比差异巨大。
我关心的两个指标是:
- 合格候选人的数量
- 合格候选人在总申请人中的占比
我希望一个平台能为每个岗位带来大约 10 到 20 名合格候选人,这样我就有足够的选择范围。如果平台的信噪比太差,以至于我得筛选 3000 人才能找到几个合格者,那它就没什么价值了。
在这次评估中,我把所有通过简历筛选的人都视为合格候选人。我也只统计了职位面向全球开放的那五天内的申请。一方面,更改地点要求会扭曲数据,另一方面,我也还没处理完其他所有申请。
| 渠道 | 费用 | 总候选人数 | 通过初筛人数 | 每名合格候选人成本 | 试用人数 |
|---|---|---|---|---|---|
| We Work Remotely | $398 | 359 | 20 (6%) | $20 | 0 |
| Remote OK | $448 | 67 | 0 (0%) | N/A | 0 |
| Craigslist | $25 | 3 | 1 (33%) | $25 | 0 |
| Hacker News | $0 | 2 | 0 (0%) | N/A | 0 |
| 其他聚合平台 | $0 | 53 | 1 (8%) | $0 | 0 |
| 未知 / 直接申请* | $0 | 52 | 3 (15%) | $0 | 1 |
| 总计 | $871 | 464 | 25 (5%) | $35 | 1 |
* “未知”类别包括通过 TinyPilot 网站上的链接申请的候选人,因此也包括在 Twitter 或其他地方看到我发布信息的人。我最终录用的人就是通过我的那条推文找到这份工作的。
We Work Remotely 的表现相当不错。它也有不少敷衍和垃圾申请,但在 359 人中找到 20 名候选人,这个比例已经很不错了。
在这一时间段内,RemoteOK 没有带来任何合格候选人,而且我使用它的体验非常糟糕,值得单独写一节。
RemoteOK 令人大失所望
我一直很喜欢 Pieter Levels。他在 Indie Hackers 播客中的那期访谈是整个系列中最棒的一期之一。Pieter 很好地展现了独立创业者生活方式为何令人兴奋、让人自由。
遗憾的是,Pieter 的旗舰产品 RemoteOK 让我大失所望。我已经不记得上一次用一个如此处处与付费用户作对的产品是什么时候了。
一开始创建职位时,RemoteOK 就会向你推销各种小额加购服务。

RemoteOK 要求雇主在九种不同的加购服务中做选择,包括花 134 美元生成一个二维码。
We Work Remotely 也有类似的加购推销,但感觉没那么令人反感。也许是因为 We Work Remotely 不会为生成一个二维码就收你 134 美元。
RemoteOK 的职位有标签以方便求职者搜索,所以我添加了诸如 linux、customer support、flexible schedule 等标签。几小时后我再回来查看,发现 RemoteOK 自动添加了几个不准确的标签,比如 microsoft windows webdev development,尽管这些与我的岗位毫无关系。我删掉了 RemoteOK 加的标签,但第二天它们又出现了。唯一能永久去掉它们的办法,是我自己再多加一些标签。
RemoteOK 剥夺用户控制权最过分的例子是它的“神奇关键词”。RemoteOK 会加上这样一句说明:“申请时请提及单词 [某个随机单词] 以证明你完整阅读了招聘信息。”RemoteOK 并不会告诉你它添加了这些说明,而且你也无法移除它们。


RemoteOK 会向你的候选人注入你看不见的额外说明。你无法关闭这一行为。
我讨厌,讨厌,极其讨厌这个功能。如果早知道有这个,我根本不会在 RemoteOK 上发布职位。
我觉得这种“神奇关键词”要求是对申请人的不尊重,所以我在发布招聘时特意避免这类要求。RemoteOK 偷偷把它塞进我付费的招聘信息里,实在令人恼火。
最要命的是,RemoteOK 在它唯一的核心任务上彻底失败了:提供合格候选人。在同一时间段内,RemoteOK 的候选人没有一个通过我的初筛,而 We Work Remotely 则为我匹配到了 20 名合格申请人。
更新(2022-09-25):针对本文,Pieter Levels 承诺会着手解决我提到的问题,并慷慨地退还了我的费用。
Homerun 还不错,但不够好
上次招聘时,我让候选人直接给我发邮件,然后用收件箱标签来整理申请。结果弄得一团糟、非常混乱。
这一次,我测试了几款求职者追踪系统,最终选择了 Homerun。
在完整走完招聘流程后,我对 Homerun 还算满意。界面美观,功能也能满足我的需求。一切都相当直观,因此可以有条理地处理申请。


上次我用收件箱标签在邮件中整理申请人(左)。这一次我用了 Homerun,它通过看板视图更好地组织申请(右)。
我很喜欢 Homerun 的邮件模板功能。我很少给候选人发纯粹的套话,但为常见回复准备一个框架很有帮助,例如:
- 你的 Linux 经验不足
- 你的英语水平未达到岗位要求
- 你是位不错的候选人,我们来做一下示例题目吧
![你好 [first_name],感谢你申请 [company_name] 的 [job_title] 职位,并花时间了解公司。很遗憾,我认为这个职位与你的技能不太匹配。这个职位需要有更多面向客户的内容写作经验的人。你的英语已经很不错了,但在申请中有几处语法错误,所以我认为这个岗位不太适合你。很遗憾这次没能合作,祝你求职顺利。](https://mtlynch.io/retrospectives/2022/09/poor-english-rejection.png)
我为不同类别的常见邮件创建了模板,作为起点。
Homerun 收费为每月 71 美元,对大多数小企业来说都在可承受范围内。而且计费很公道,不招聘的月份无需付费。大多数其他求职者追踪平台在你停止支付全额月费后会删除所有数据。Homerun 允许你在不积极招聘时降级到免费套餐,这样可以保留所有数据。免费套餐唯一的限制是在重新付费之前无法接收新申请人。
不过,我也发现了 Homerun 的几个明显短板:
无法筛选候选人
面对如此多的候选人,我希望能尽早联系最有潜力的那批。我很想筛选出居住在英语国家且自评精通 Linux 的候选人。Homerun 拥有这些数据,却没有提供按这些条件筛选的功能。在我的队列中找到这些申请人,唯一的办法就是逐一审阅每份申请。
糟糕的邮件交互
Homerun 最糟糕的界面设计之一就是它的邮件功能。像所有求职者追踪系统一样,Homerun 允许你在网页应用内给候选人发邮件。但它是通过弹出一个模态窗口来实现的:

Homerun 的应用内邮件会创建一个模态窗口,导致你在给候选人写邮件时无法查看其申请材料。
这个模态窗口完全遮住了候选人在申请中写的所有内容,因此你无法查阅自己的备注、他们的简历或他们在申请表中对问题的回答。这是个非常糟糕的设计,因为雇主在回复候选人时显然需要这些信息。
我通过并排打开两个 Homerun 窗口来变通解决。这个办法勉强可行,但 Homerun 在不同浏览器窗口间的同步很差。如果我在一个窗口中将某位候选人标记为拒绝,另一个窗口就会错乱,并重新加载到申请人列表的顶部。
邮件送达率差
我以 PDF 链接的形式向候选人发送了示例作业,但有几位候选人说他们没有收到。我怀疑 Homerun 使用的邮件服务器发件人信誉不佳,因此包含链接的 Homerun 邮件被垃圾邮件过滤器拦截了。
网页应用缓慢
Homerun 网页应用慢得让人烦躁。我用的是配置不错的台式机和光纤网络,但大多数 Homerun 页面仍需 2 到 5 秒才能加载,有些甚至长达 10 秒。
下次招聘的改进计划
我对本轮招聘中对待候选人的方式不满意。我没有为如此大的申请量做好准备,接收了超出我在合理时间内能处理的数量,浪费了申请人的时间。
以下是我计划在下次做出改变,以改善所有人的招聘体验。
更谨慎地发送回复
刚开始用 Homerun 处理申请时,我对它的邮件模板过于热情。上一次招聘中,如果候选人提交的是敷衍的申请,我会直接忽略。而有了 Homerun,借助邮件模板,即使对敷衍的申请人也能轻松回复。
我做了一个模板,大意是因其申请看起来是复制粘贴的而拒绝。我觉得至少给个反馈,告诉他们复制粘贴会让他们错失工作机会,是件好事。
![你好 [first_name],感谢你申请 TinyPilot 的 [job_title] 职位。很遗憾,我决定不再继续推进你的申请。我阅读了你提交的问题回答,看不出有任何关于公司或工作的具体吸引点,所以我认为这不会是一个合适的匹配。很遗憾这次没能成功,祝你求职顺利。](https://mtlynch.io/retrospectives/2022/09/low-effort-rejection.png)
我给那些用复制粘贴的答案申请的候选人的套话回复。
这个策略效果很差。
在回复的候选人中,约 50% 的人很有风度,对反馈表示感谢,这很好。约 20% 的人则粗鲁或充满敌意,这很糟。
剩下 30% 的人意识到终于有真人在与他们互动,他们的申请并没有像以为的那样石沉大海。于是他们开始研究公司,并表示自己其实对 TinyPilot 很感兴趣。这让我陷入尴尬的境地。如果我重新考虑他们的申请,对那些一开始就认真撰写答案、而非向所有公司复制粘贴同一套话的候选人就不公平了。
在敷衍的申请上浪费了一两天时间后,我干脆不再回复这类申请人。我把策略改为仅在以下情况同时满足时才回复:
- 候选人基本符合岗位要求
- 例如,如果岗位要求之一是“熟悉 Linux”,而候选人表示从未使用过 Linux:不回复。
- 候选人在申请上至少投入了几分钟时间
- 例如,如果回答明显是复制粘贴或草草了事:不回复。
这个新策略还有一个令人愉快的副作用:消除了敌意的回复。当我拒绝那些认真作答的候选人并说明原因时,他们并不总会回复,但一旦回复,态度都很专业,并对反馈表示感谢。
请人协助做初筛
筛选简历和申请要花几十个小时,但这项工作我完全可以培训一个聪明的人来帮我完成。
我不想使用愚蠢的自动过滤器或机器学习——对我来说,能够诚实地告诉候选人有真人在审阅他们的申请很重要。只是这个人不一定非得是我。
为客服增加冗余
导致我回复申请人延迟的因素之一,是平时负责客服的 TinyPilot 员工请了一周病假。客服看似有冗余,因为我们的技术支持工程师可以顶上。如果还不行,我就是最后一道防线。但当常规的客服人员病倒时,我才意识到我们的客服流程有多脆弱。
当我亲自做客服时,才想起这份工作有多繁重,尤其是在还要与 800 名求职者沟通的额外负担下。更何况我还休了几天假,这意味着只有 TinyPilot 的技术支持工程师一人在提供支持。这段时间很艰难,因为他没有 Shopify 或我们本地履约办公室的访问权限,能提供的支持非常有限。
等技术支持团队稳定下来后,我也打算再增加一名客服人员。这样当有人生病或休假时,也能保持运转顺畅。
达到一定数量后将申请表单转为等候名单
即使找人来协助招聘,我们在合理时间内能审阅的申请数量也是有限的。一旦超过比如 400 名候选人,我就应该把申请表单转为等候名单,以免让候选人花时间解释为何想加入我们,从而浪费他们的时间。
记住这有多耗时
我以前也通过发布招聘启事招过人,但直到再次着手,才想起这个过程有多耗时。
在我想象中,时间投入是这样的:

我想象中的招聘过程
第一天就有大量候选人涌入。我筛选候选人,直到缩小到一个人。最后,我录用那个人,他开始承担我以前做的工作,一切都很美好。
而实际上,时间投入更像是这样:

实际上的招聘过程
先是迎来一波申请高峰,然后在我处理这些申请的同时,不断还有人继续投递。等我终于招到人,还得跟所有未被选中的人逐一跟进,同时还要让新员工入职和培训。
所以,下次招聘时,我只需回头看看这两张精美且信息量十足的图表,提醒自己需要预留大量空闲时间来应对。
收尾
完成了什么?
- 招聘了第二位 TinyPilot 技术支持工程师
- 为 TinyPilot 社区版部署了下一代更新系统
- 发布了关于面向独立创业者的求职者追踪系统的笔记
- 发布了关于调试 PicoShare 内存问题的笔记
经验教训
- 招聘总是比我预想的更难
下月目标
- 将 TinyPilot Pro 迁移到下一代更新系统。
- 将 TinyPilot Voyager 寄给两位 YouTube 创作者或博主进行评测
- 探索新的外壳制造方案
随机一篇博客
评论
登录后参与讨论