查看原文
其他

作为 flomo 的工程师,我在思考些什么?

lightory Loudly Thinking 2021-04-16

或许你还不知道,我最近主要在做 flomo,w/ 少楠


狭义而言,这是一款不太一样的轻量级笔记软件。emmm,算了,坦白说吧,是完全不一样


广义而言,自创作之初,我们对其的期望就是思维工具。


我们有一点点野心,希望 flomo 能对使用者的思维产生正向影响。

We shape our tools and thereafter they shape us.
麦克卢汉

(点击文末的“阅读原文”,可访问 flomoapp.com。)




眼下,刚好到了 flomo 启动一周年。阶段性写点文字。


flomo 毕竟还是小团队,少楠和我都扮演了诸多角色。本文分享我作为工程师的部分思考和决策。


还有产品、企业家和投资者的视角,甚至我做财务也是有一些些心得的...这些就等到二周年、三周年吧。




技术选型


最初面临的决策是,第一个版本选用什么平台和什么关键技术。许多的笔记软件选择了 iOS 和 iCloud,自然也有其理由,而 flomo 偏不。



为什么不选择 iCloud?


iCloud 是 Apple Only 的技术,使用 iCloud 便意味着抛弃 Windows 和 Android 用户。


我们希望服务尽可能多的用户,同时也希望能满足单一用户的多个场景——或许你不知道,并不是每个 iPhone 用户都在用 Mac。



为什么不选择 iOS?


我其实是积极考虑过 iOS 作为第一个版本的,还向图拉鼎请教过一些技术问题。但最终还是选择了 Web。


Web 技术意味着更好的兼容性,真正的一次编写、多端复用。事实上,flomo 最初只实现 Web 端;额外花一点点精力后,便支持了手机端;再使用 PWA 的一些些特性,便在手机上拥有了接近于 Native App 的体验。


Web 技术也意味着更快的迭代速度。产品早期,尚未定型,迭代速度非常重要。Native App 的迭代,再快也得按天来;而 Web App,可以做到高频的迭代更新。



为什么 iOS App 和 Android App 又选择了原生技术?


早期阶段会有很多取舍。而度过早期阶段,长期价值的权重会提高。作为一款富交互的 App,原生技术无疑能够提供更好的体验。




API


flomo 的最小单位是 memo,一条简短的内容。所以,它对界面的依赖度是低的,也就是天生适合 API 交互。


flomo 也早早就有推出 API 的计划,原计划在 2021Q2。实际,上线于 2020 年 11 月。


为什么能大大提前?


因为想清楚两个事情:

1. 并不需要功能完备的 API。需求最旺盛的是输入 API。

2. 并不需要做那么严谨的认证(OAuth 是人类的敌人好吗)。一串随机字符足以解决问题。这对开发者实际也更加友好。


想清楚后就简单了。我用很短的时间就完成了实现。这支撑了目前丰富的第三方工具生态,覆盖了 iOS 捷径、Chrome 扩展、Alfred App、Telegram Bot 等等等等。


当然,也要感谢诸多热心的开发者。



这里多说几句。我观察到,对于 API 有两种广泛误区:

1. 直接拒绝 API,拒绝开放。

2. 无条件热情拥抱 API。


都没有必要。客观一点朋友们,也不要原教旨主义。


API 不过就是诸多路径之一,不是目的。虽然也是个不错的路径,但不必把路径当作目的。




拒绝做完美的产品


少有人知道的事实是,没有必要做一款完美的产品。


即便是大家认为对细节最最最吹毛求疵的 Steve Jobs(是不是猜错了?不是罗永浩),即便是他最有代表性的作品、也就是大家认为最最最完美的 iPhone,在早期也是最最最不完美的产品。


甚至于,每一款 iPhone 的发布,都会被热心网友拿来和石头做一番比较。



而在 Tim Cook 时代,你很难再对 iPhone 挑出太多毛病,但同时也被广泛认为遗失了 Jobs 时代的创新精神。


拒绝做完美的产品,把精力聚焦于用户价值的核心。


flomo 的核心是什么?memo 相关的一系列功能。

非核心呢?其它所有。


所以你会看到,设置页面大都有些粗糙,边缘场景也未必照顾到位。甚至有些基础功能,比如“修改昵称”,至今都还没有。


一个最为直观的例子是,flomo 的付费功能,最早只是用第三方服务 MikeCRM 驱动的表单。即便今日,部分付费场景也依旧靠表单驱动。


在这些地方,用户体验确实是差的。正如早期的 iPhone 甚至不支持彩信。




团队生产力


flomo 的许多运营策略,大都经历了从不 scale(aka 人肉)到 scale 的过程。


最初不 scale 是因为:

1. 判断永远可能出错;

2. 快速启动是一个重要约束;

3. scale 的前置条件是标准化,而标准化意味着信息损失和容错性低下。


而之后 scale 是因为:机器可以在许多地方提高效率。


就本质而言,工程师的超能力是使用计算机器作为杠杆,以高效率地完成重复性工作。


自己的开发工作要多使用杠杆,也要保持觉察,适时为你的伙伴递上杠杆。





Fin


就举这么几个例子。


其实我想说的是:工程师也可以直接对业务产生影响


近年来,看过太多的工程师,主动放弃自己的可能性,只安心实现别人提出的需求,甚至于对需求价值都不做思索,乐于将自己作为一项优质的执行资源。


但残酷的事实是,对业务缺乏思考的工程师,也很难成为优质的执行资源。


我不会劝你们不要背叛业务或团队,我只希望曾经有梦想的工程师,不要背叛自己。



借用建硕的话结束本文。

虽然工程师需要具备一些开发者的技能,比如写代码,但从根本上,工程师的能力,和代码无关。

王建硕

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存