多年以后,面对这坨屎山,我还是会回想起面试中问道关于数据量大了全加载性能问题如何处理的那个遥远的下午。
见过写年度总结的,但没见过一起写三年的年度总结。不是因为别的,只是因为这个人太懒了(打工人流下了不争气的泪水)。分享一下近年来给我留下深刻印象的人事物,这是一份杂乱的生产力工具从业者的所见所闻所思所想。
从20年初开始,我加入了一家公司,随后就是大家都不喜欢的疫情。这在上篇(19年总结)提到过。上班之后,我就没有写过文章,只是专注于工作。我在公司的文档库里写了不少文档,不管能不能看,反正是写了。比我之前写的东西都多,但都是业务需求和技术方面的。
人一旦工作起来,就会形成一种惯性:上班工作,下班放松。在这种惯性下,很难静下心来思考个人和未来。
工作内容和行业思考
关于工作内容
这三年我在 Vikadata 做前端,后来做 workflow 又写了下后端,最后只写后端做重构优化。产品是维格表(一款国内的 Airtable 替代,你用过 Notion 的表格就知道我在说什么,我也是因为折腾 Notion 表格才入职进去的),虽然做的有点烂,但比起国内后进场的其他 Airtable-like 产品,功能和完成度都要好。入职比较早,也算是见证了一家新兴 SaaS 公司的各种坎坷。
这里说 Airtable-like 而不是 Notion-Like,是因为 Airtable 算是这个品类的第一。Notion 的数据库也是抄的 Airtable,而且 Notion 还有文档,以及更多的东西,已经算是一个 all-in-one 的存在,不只是表格。工作内容相关的,这里只谈表格。国内一般称为多维表格。
我入职的时候表格 0.1 版本已经完成,具备了基础字段、表格视图、用户系统、文件目录,基础架子已经成型,公司内部已经开始用它做项目管理。
- 入职后做了相册视图,然后开始做计算字段。开始是 DOM 渲染,上完计算字段后变卡了。做优化,重构完也没优化出个啥效果。倒是把 UI 的实现都过了一遍。DOM 是有极限的,
我不做人啦,所以后面上了 canvas 渲染(不是我做的),算是缓解了渲染性能问题。 - 后面开始做 Widget 组件(类似插件和扩展),做了图表扩展,也就是下面提到的数据可视化部分,在此期间和设计打交道也变多,开始推进组件库。
- 再到后面开始集中精力做 automation。这里是工作投入最集中的地方,虽然有点累,但是很享受这种状态。在此期间,用 Notion 做 GTD 只用文档 outline 缩进,拆解任务,分而治之,逐步求解。这个过程比较满足,也改变了我对笔记软件的使用习惯。
- 随着用户数据的积累,数据量越来越大,性能成为了瓶颈。开始着手解决性能问题。然后是半年没产出,把前面的实现推倒重来,版本割裂,然后逐渐失控崩盘。我把这件事比作给正在开动的火车铺铁轨、换引擎。具体细节就不提了,总之很折磨。
关于产品
这里总结下 Airtable-like 表格的要素:
- 结构化数据存储,支持 CRUD 操作,并且实时协同。
- 多视图展示,同一份数据,不同的交互,可以应对多变的场景需求。例如:在相册视图下,可以看图;在甘特、看板视图下可以做项目管理等等。
- 数据库的高级能力,支持关联、计算和汇总统计。
- 数据可视化,可以生成图表,用来做报表、仪表盘。
- 开放数据 REST API。
- 事件驱动的 automation,以表格事件为主要 trigger 的 workflow。
- 满足自定义的视图定制,可以通过扩展插件来补充能力上的不足。官方会提供一些常见场景的视图,但是无法满足各种零散的需求。
- 满足自定义的数据操作,可以使用 scripts,写代码操作数据。
多维表格的整体玩法灵活,和数据库类似,不限制场景,只提供基础的设施,方便终端用户简单玩转,而无需过多技术背景就可以使用。传统数据库终端用户入门门槛较高,而 Excel 入门较为简单,下限低上限高,多维表格可以满足不同层次的用户需求,是一种折中之选
产品 | 建模友好 | 编辑友好 | 查询友好 | 数据量级 | realtime 协作 |
---|---|---|---|---|---|
Excel | B | A | B | B | A |
关系型数据库 | C | C | C | S | \ |
多维表格 | A | A | A | C | S |
总的说来多维表格是一个杂糅的混合物,力求在各个层次都能做到让小白用户使用。
- 建模方面,传统数据库建表需要 SQL。多维表格就是拖拉拽,只要具备实体到模型的归纳抽象能力,这一点很容易做到。
- 编辑方面,和 Excel 类似的编辑体验。
- 查询方面,鼠标点几下构造查询语句,这点和一些数据库UI软件比较类似。
有了基本的数据库功能以后,多维表格可以发挥它的扩展性,扩展 UI 可以得到适用于不同场景的视图,REST API 可以让其他数据源的接入变得简单,Webhook 可以提供事件驱动的 automation trigger,接入 workflow 又可以降低编程入门门槛,让用户定制数据流。开放 Script 可以更加自由的定制数据逻辑,workflow 接 script 可以说是雅俗共赏,满足各个层次的用户需求。
关于行业
三年疫情,远程办公兴起。办公软件这个赛道涌入了很多玩家,多维表格这一块国内外大小厂也纷纷入局,举几个有代表性的例子。
- 国内:飞书多为表格、黑帕云、seatable、treelab、金山轻维表、腾讯系的、阿里系的一堆就不一一列举了。各个产品的发展方向也比较有意思,黑帕云被飞书收购解散、seatable 出海、treelab 转垂直领域改产品形态。
- 海外:Google tables, 微软也在上新版的 MS Team。
这个赛道太卷了,大厂也都是 all-in-one 的玩家。办公全家桶基本包含下面几个方面。你可以把自己熟悉的产品对号入座。下面几种分类几乎包含了大部分 2B 的 SaaS,有什么都做希望打通生态的大厂玩家,也有单独做一项,做到专精的单赛道玩家。
- 文档
- 表格
- 白板/思维导图
- 看板
- 设计
- 日历
- 通讯:IM、Email、视频会议
- 自动化 Workflow
单赛道玩家其实很危险,抵抗风险的能力不足,所以站稳脚跟后,基本都会多方位发展。做 workflow 起家的 Zapier 也推出了表格。 可以说和 airtable 上 workflow 有异曲同工之妙。这里面也涉及一些产品和技术的问题,workflow 的定位就是数据流转,数据从哪里来呢,表格自然是数据源的大头,所以二者顺理成章地结合在一起来使用。维格做自动化第一家接入的就是千帆(后面改名字了叫 hiflow, 也是做连接器的)。
从 Notion 开始挥金如土频繁地收购小创业公司可以看出来,Notion 是要做生态的,逐渐布局,会成为挑战微软办公市场的存在。个人预测下,未来几年全球化办公全家桶软件的几家大厂。老牌的微软、Google,新进的 Notion、加上孜孜不倦上功能的字节。这几家是办公软件最全的。腾讯、阿里做的产品体验不太行,也没多少全球化的气息,不考虑在内。
加上疫情远程办公的兴起,后面工作中大家接触最多的便是这些软件。而工作就是成年人的主旋律,这个市场是真的出奇的大,Facebook(现在叫 Meta 了) 甚至押宝元宇宙,搞个元宇宙办公折腾的死去活来。总而言之这个赛道已经很拥挤了,而且“大局已定”。短时间没有创新的产品出来,很难撼动前辈们的地位。
关于公司、个人和 SaaS 付费
2b 2c 是个商业的概念,生产力工具是不分公司和个人的。Notion 商业上是2B 的,但是体验上完全是 C端产品的体验,即不同于以往 B 端产品超级难用的体验。这是一个发展的趋势,老板做决定、签订单,员工只管用这种自上而下的模式会逐渐淘汰。培养个人使用习惯,自下而上的推动产品在公司的落地,才是符合人性的做法。这也逼迫着 B 端产品开始在用户体验上下功夫。这是对后面的打工人来说件好事,请大厂们卷起来,加大教育优惠的力度,把新一代从老 Office 三件套中解放出来。
SaaS 的付费点永远在于协作,按人头收费。对于没有协作需求的个人场景,如果有买断的平替产品,不推荐用 SaaS。当然 SaaS 并不是邪恶的,你依然可以选择你信任的服务。
关于设计
公司比较注重品牌形象,产品定位上对设计上比较重视,毕竟好看是第一生产力。最开始是用 antd 做组件库,这也导致了后来和设计的一些冲突。
其实小厂做 B 端软件,antd 够使唤了。大部分公司都不会走到自己做组件库这一步来。移动端上,平台官方的 UI 组件已经够用了。组件库主要是在 web 上繁荣,因为默认的 web 组件实在是太丑了,在前端都是框架一把梭的今天,组件库也都是绑定框架。不绑定框架的叫设计规范。著名的设计规范,material, antd 。虽然文档写的都很好,但对应实现的 UI 库其实很糟糕。并不像设计规范中描述的那么美好。
对于大部分小公司来说,产品画一画线框图,然后研发拿起 antd ,对着实现基本上就差不多了。都不用到设计这一层来。而且大部分小公司是没有设计师的。当公司有了设计师后情况就不太一样了。
设计师有自己的审美,瞧不上 antd、什么d 之类的组件库。设计有自己的一套。 这个时候研发得按照设计稿来,还原设计稿。基本上退化到没有通用组件的情况。
当你打算拿着开源的组件库,二次开发,订制主题什么的时候,就开始走上了不归路。当然这取决于研发还是设计掌握了话语权。如果研发能够说服设计,组件就是这样,没什么办法改。设计就会沦为画线框图的工具。其实这个时候要不要i设计都无所谓,大部分产品的线框图功底已经足够应付排版了。所以设计会觉得很憋屈,自己的审美,创作实现不了,到头来用的是别人的。大型 NTR 现场。
设计需要找到话语权。所以会画一些自己想要的效果。这个时候研发不得不去定制开源组件的主题。其实到这一步已经算好的了。前提是设计也知道这套开源组件怎么玩。ui kit 什么的得齐全,设计稿拿着开源 UI 给得组件,认真排版就行了。可惜一部分设计是做不到得。他们还是会坚持自己得审美。当你每天都在魔改各种可能出现的 button 时,其实组件库已经丧失了它的意义。没有复用,没有通用性。
为了更好地与这群像素眼打交道,我花费巨资购买了一年的Figma,开始研究这个软件。主要是为了体验团队版本的组件库,为建立组件库打下基础。当时我的痛点主要在设计交付上。像素眼抓虫时,会说这里颜色用错了,那里间距不对,这个Button不是这样的,小bug修起来很烦人。我不是要想办法说服他们,这里改不了,那里不好改,这样并不能解决问题,而是要想办法让设计交付流畅起来,让双方都能受益。
我先是实现了一个 icon 交付的插件,大致就是读取设计稿中的 icon,把他们转化为 react 组件。这样研发使用起来,有IDE 提示。这比起之前,设计切图到 sketch 中转化 icon 成 svg,然后 git 上传到仓库、研发记住 icon 名字,手动从资源路径引入的做法要方便的多。基本做到了自动化交付。
这点能够稍微提高一下话语权。我确实是为你们着想啊,设计看你不再是从进来瞎指挥的愣头青,你还能和他们聊 Figma,这个人说的好像有点道理,哎有了共同语言才好沟通。然后是另外一个插件同步 design token,为组件库、主题做准备。figma 当时也没做到尽善尽美,design token 还是得做些处理才能使用,也不支持阴影、圆角这些作为 token 变量。不知道现在发展得怎么样了。
另外还有个插件是表格内容填充设计稿的插件,不过问了下设计,他们说自己用的场景比较少,就没整了。
如果你的公司在考虑要不要搭建自己的组件库,这里有些个人建议:
- 首先是要不要搞自己的组件库?
- 如果你干的外包的活,公司对 UI 没啥追求,是不太需要的,拿市面上现成的组件库用就好了。但是对设计有追求的公司来说,这些是不够的。品牌特色、设计风格这些没有设计是做不到的。对这类公司来说,应该有自己的设计体系、和对应的组件库。它们可能不如 antd、material 那样出名,但是却有自己的特色。Airbnb、Spotify、Figma、Notion等等是好的参考,早点做组件库会少走些弯路。
- 如果能找到一份 ui kit 和对应的组件实现,修改定制一下是更快捷的做法。前提是设计和研发都认可。
- 如果你是研发
- 需要知道 figma 如何使用,需要懂 figma layout,design token,components 等如何玩耍。起码能按照设计给的设计稿实现组件,变量能用对。
- headless ui components 是更好的选择,tailwind css 是更好的选择。css-in-js 日薄西山,但是有几家大的组件库支撑,市场占比还是会有一部分,不要被 star 蒙蔽了双眼。
- 属性尽量简洁,满足自己的需求就好,不要什么都往里面塞。
- 如果你是设计
- 需要了解一下前端组件属性的概念,和 figma 中 components 的概念类似。
- 需要自己做的组件有哪些属性,按需枚举全。
- 画设计稿能复用组件就复用组件,DRY 。copy paste 打散做修改虽然方便,但是不利于维护。
Figma 推出的组件实际上是在朝前端 Web 标准靠拢。它已经推出好几年,设计师们应该都学会了。对于设计来说,增加了学习成本,要求也更高,但对于设计交付来说,这是一件好事。它也为后面的“设计到代码”打下基础。如果你的公司有组件库,那么接下来几年的设计交付会更加简单,从设计稿到代码的转变也快落地了。
这是一个过程,纯手工⇒ 模板化 ⇒ AI 辅助。做组件库是模板化的一环。
风靡设计圈的 Figma 其实是个值得聊的话题,激进的技术选型,喊着不会成为 adobe,然后被 adobe 收购的屑。离职了没有却没有好好更新 esbuild 的 CTO Evan Wallace,这里面还是有故事挖的。这个坑也先挖下,顺便在挖个坑,上面提到的插件,我有空了也会整理开源出来。
个人生产力
关于笔记软件&第二大脑
笔记软件赛道比表格更加的拥挤,已经是红海了属于是。国内 Notion的平替数不过来。
上面提到在实现 automation 那段时间内,我改变了对笔记软件的看法。我会把每个 sprint 的目标列在最顶上。然后把每天的工作任务,用 todo 记录下来,然后补充每天做了啥。遇到啥问题,打算怎么解决。算是弥补了用文档做 GTD 的体验,因为之前都是用表格做项目管理。后来发现,自己单干的话,不如一个文档来的实在。对文档花里胡哨的功能,也变成了简单的 markdown+ 缩进解决一切问题。
那时候双链也开始流行起来,我大概懂是为了干啥。但是自己没用,obsidian 也折腾了一段时间。后面公司的知识库从 Notion 迁移到 飞书,就开始主要用飞书了,工作期间,我是半点个人相关的文档都没写,我真是个好员工。
再后来 logseq 出现在视线中,但是我一直没 get 到它的特色。或者说我不会用,直到最近才开始正真用起来。
笔记软件五花八门,我就不一一列举,大家都有自己的偏好。
第二大脑是个笔记工具爱好者的热门话题。我了解的不多(长时间没写文章,都是仓鼠型收集资料),但是我知道我自己的需求是啥。我最痛恨的是记不住东西,就是你在某一天的信息流中发现了一个有意思的东西,知道大概是干嘛的,但是没去深入了解。然后再接下来的某个时刻,你突然有了对应的需求,你发现你记不得之前那玩意叫啥,半天想不起来,然后 Google 一通要么不知道关键词,要么找不到,有一种翻箱倒柜找不到东西抓狂的感觉。
为了解决这个问题,我最开始的方案是在 Notion 中建了一个叫 infocard 的表格,把看到的东西都往里面塞。后面 Notion 用的不勤快了,也就没整了。
再后来,我把这一套移植到了维格表上,那时候刚开 API,自己做的东西接入到工作流里面来,感觉还是的不错的,但是维格表文本这块太朴素了,也没有全文搜索,弃坑。
再后来我把 discord 加进来了。我大部分的信息流入都是 twitter 点赞,所以 workflow 做了一套 twitter 点赞,发消息备份到 discord 中,然后再加点评论。这样可以利用 discord 的全文搜索快速找到想要的东西。具体做法是搭建一个个人的 discord 频道,只有你和一些同步消息的机器人。 不仅能做只读检索的入口,有了啥 idea 也可以往里面发。IM 比起笔记软件来方便许多。这个做法有点 flomo 的意思。
再到后来,我开始主力用 logseq。算是真正get 到了为什么叫 log。logseq 好处是,不必像之前 Notion 那样分类,思考放哪个文件夹,哪个表格。在 logseq 中哪天发生的,哪天想到的,就记录在那天的文档里面。做一个单纯的记录者,把自己的经历,想法记录下来。每天的日志,每一个 block,都是对当天的记录,那些你认为重要东西的记录,这样从后往前看的时候,你才能有素材,而不是想到一个模糊的概念,然后只有映像,没有记忆,无法表述出来。
我开始日常使用 logseq 了,Notion 也在一起用,目前没有什么优秀的表格平替产品,这篇文章就是在 Notion 写的,作为博客的 CMS,Next 增量构建也需要一个 API 服务,这点 logseq 这类本地软件还做不到。有机会分享下自己 logseq 的工作流。
关于创造力
我自认为是对表格这个东西如何发展比较有清晰认知的。在之前 gap year 折腾 Notion 的几个玩具项目时,我便知道表格缺少哪些能力,也知道这玩意儿存在哪些可能。NotionPlus(它是基于 Notion 非开放的 API 做的,因为 API 变动已经无法 work 了) 是一个自定义脚本处理表格数据的玩具,后面 airtable 出了 scripts。我也曾预测 airtable 会把 ifttt 装进去,后面他们出了 automation。这些都是基于前面的玩法可预见的东西。当你发现事物的发展方向和你的预测一致时,会加强你对自己判断的信心,这是一个正向的过程。
这些见解不是一蹴而就的,而是来源于你的积累。总而言之你需要更多的信息源和更多的体验,只看是不够的,需要 get hands dirty 才能接近更加本质的了解。然后便是排列组合了。原研哉在 re-design 中提到过一个观点:常见事物的再设计,是基于对常见事物有了充分认识后,重新设计出更加优秀的东西,所有的事物都值得重新做一遍。Airtable 把 Excel 重新做了一遍,Notion 把 word 重新做了一遍。
在体验过 Github Copilot 之后,会联想到把这个能力嵌入 Notion 的效果(NotionAI 并不符合我的预期,只能说中规中矩)。把一个体验迁移到另一个事物中,举一反三,排列组合正是创新的体现。”要是xxx就好了” ,我希望我永远都保持这种幻想的能力。
关于 AI!
除了 alphago 柯洁下棋,AI 在前些年其实并不太出圈。我是在 21年年中的时候拿到 copilot 的测试,让我大开眼界。AI 真正进入”大众“视野是22年。
春天的 disco diffusion,体验不怎么好,折腾半天才能看到个黄色的灯塔。
夏天的 stable diffusion,算法改进,开源,一些商业化的产品也开始进入大众视野。
秋天的 novelai ,模型泄露,二次元程序员的狂欢。
冬天的 chatgpt,技术圈对 AI 的热情前所未有的高涨。
Product Hunt 22年年度产品, 4 个有给3个给 AI。可以预见的是大部分软件都会被 AI-powered 一遍,23年也会是 AI 的一年。这里面可以聊的太多,后面再提。
消费&推荐
书籍
- 《混沌:开创一门新科学》一本关于复杂性科学的科普书籍,”May Chaos Take The World”(串台
- 《微积分的力量》是一本不错的科普书,也是我22年看完的唯一一本。学校教育缺乏史料部分,只给学生灌输知识,而不解释知识的来源。这是一个普遍的问题,大多数教材都是如此。而缺乏这一部分恰好是了解知识如何产生的关键。如果你经常观看 3b1b 的视频,你一定能够有所感同身受。教材只会告诉你 sin 的导数是 cos,顶多搞几个极限公式给你推到一翻,你看公式成立了,所以 sin 的导数是 cos。而科普告诉你 sin 的导数为什么是 cos,它的道理蕴含在自然中,蕴含在天体物理中,蕴含在地球绕太阳转的圆周运动中。这是2种完全不同的体验。
- 《诡秘之主》是一本克苏鲁风格的小说,逻辑文风都不错。虚构类文学带来的好处是你可以有别样的体验。赞美愚者。
影视
- 《双城之战》
- 《别对印象研出手》、《孤独摇滚》。内容创作者都可以看看,人生的一大幸事是遇到一群志同道合的朋友。
- 《夏日重现》
- 《边缘行者》不建议玩 2077,纯粹一坨狗屎、骗钱。这部动漫可以体验下赛博朋克的世界观,这个悲剧内核的故事,让我听到《 I really want to stay at your house》 就 ptsd 进网抑云时间。痛,太痛了。
- 《万神殿》 坏消息:缝合怪。好消息:缝好了。
游戏
- 《艾尔登法环》从黑魂到只狼到老头环,你永远可以相信宫崎英高。
- 《永劫无间》
音乐
- 音乐太偏个人喜好了,啥也不推荐。只要你听王菲,我们就是异父异母的好兄弟。
软件
- Arc 浏览器, re-design 的典型代表。我们没有重新发明浏览器,只是改了一些交互。用心做 interface 的都是好产品。
- Raycast, 颜值更高的 alfred
- Fig,命令行补全