2025-02-09 08:00:00
我从两年前开始放弃了所有笔记软件,换用 Apple Notes 记录我的所有笔记。这个举动缘于我读了 Tiago Forte 的一本书 The PARA method.
可能大家比较熟悉他的另一本书 Build The Second Brain, 是关于如何使用笔记软件构建自己的「第二大脑」。这本书也有提到他的 PARA 理论(我在我之前的文章也有提到过我如何应用这个理论管理我的笔记)。两本书都读过以后,我认为 The PARA Method 这本书更偏向实操,我从中收获了更多的方法论。如果你只想读一本,那么我推荐读这一本。
读完这本书后,我立即在 Apple Notes 中基于 PARA 方法建立起了笔记组织的形式,这一套组织形式一直用到了两年后的今天都没有改变过。也就是说,这两年来,在做笔记时我再也没有花过时间去想应该如何组织我的笔记,光从这一点,就让我受益颇深,我可以没有任何心智负担地迅速记下我需要的东西,不用担心我应该怎么记,一切都是那么的简单。
这篇文章就是想和你分享我如何在 Apple Notes 记笔记,我在 PARA 的基础上根据我自己的实际场景做了一点小小的改良。希望对你也有所启发。
在分享方法论之前,我想先解释为什么我选择了 Apple Notes. 我认为 Apple Notes 有很多优点。
当然 Apple Notes 也有缺点,但两年使用下来,我没有因为这些缺点感到被限制,比如:
Apple Notes 支持的格式有限,只有最基本的列表、标题、加粗等等的文字样式格式。但我用下来发现,我根本不需要使用什么高级的格式。有人问我 Apple Notes 不支持代码块,你是怎么记代码相关的笔记的?我说我基本不会把代码片段作为笔记来记。比较多的场景是一些 JSON 格式的片段,我只会直接粘贴到笔记里,不加任何的格式。
我找到了两条比较经典的笔记:
可以看到,里面不仅有 JSON, 还有 toml, 还有命令行。甚至还会有 spell check 的红线让它显示得很丑。但是我一点也不在意。因为它们是拿来用的,不是拿来看的,我不在乎它好不好看,只要我需要用到的时候能找到拿来用就好了。
也就是说,「美观」在我记笔记的需求里排不上什么优先级,我的最高优先级是能快速打开,快速记录,让我记东西的摩擦力降到最低。能帮我当下的想法、要处理的事情相关的信息记下来才是最重要的。所以我看过很多人把 Notion 模板做得很漂亮,也不为所动,因为对我来说这不是我需要的东西。不可否认,美观的笔记系统能给人情绪价值,它没有对错之分,只要合适自己就好。所以最重要的是知道自己是否需要,如果你认为这对你来说不是很重要,就回归简单吧。
Apple Notes 也没有「双链」功能,这是现代流行的笔记软件中很重要的功能,我在用 Logseq 的时候也被这个功能打动,因为它能把相关的笔记自然地关联到一起,带来额外的启发。最初用 Apple Notes 时我也担心会不会因此失去了这个优势,但用下来才发现,我并不是那么的需要它,即使没有,也没有让我感觉因为没有了他而失去了灵感。
Apple Notes 的标签功能也很弱,但我不使用标签。
虽然在之前的博客也提到过 PARA, 但我还是想在这里简短地解释一下我所理解的 PARA 是什么。
PARA 的全称是 Project, Area, Resource, Archive. 翻译成中文就是「项目」「领域」「资源」「归档」。它代表了一个笔记应该放在什么地方以及一个笔记的流动过程。
没错,在 PARA 的方法论中,笔记是可以「流动」的,它有时候在 Project, 当项目结束后,它不再被需要,就会流动到 Archive. 如果它在以后有利用价值,它可能会流动到 Area 或者 Resource.
理解 PARA 的关键是理解 PARA 的哲学:你记下的笔记应该要服务于你的行动。
也就是说,在 PARA 的系统里,当你想要把东西记下来时,你的 mindset 应该是,这条笔记和我接下来的行动有什么关系?如果没有关系,那么它应该放在 Area 还是 Resource?
在 The PARA Method 一书中,开篇的一句话能解释这个哲学:
Every word in this book is designed to do one thing: propel you forward into taking action
这本书中的每一个词都是为了一个目的:推动你付诸行动。
简单了解了 PARA 后,看看我如何在 Apple Notes 中使用 PARA.
我在 Apple Notes 中会单独建立一个 PARA 目录:
里面有基本的 Projects, Areas, Resources, Archived 文件夹。在这个基础上,我有两个改良,第一个是添加了一个 Drafts 文件夹,用于记录我日常的零碎想法:
这些想法一般是在手机上记录下来,在有空的时候进行深度思考和研究,有些会最终成为一篇推文,或者基于想法变成一篇博客文章。
第二个改良是增加了一个 Inbox 文件夹,用来存放打算做的项目,这些项目还没进行深入的思考,不确定是否立项来做。如果想清楚要做,我会把它拖动到 Projects 中。否则直接拖到 Archive 归档。
Projects 目录是我最常用的,因为里面都是当前正在进行的项目:
比如,当我决定要写一篇长文,就会在 Projects 中新建一个文件夹,比如现在这篇文章,就是在 Apple Notes 里写的。有了这个文件夹后,当我看到任何和这个项目相关的信息,就会把它记在这个文件夹当中:
也就是说,当我看到任何关于 Note taking 主题的值得记下来的东西时,我很清楚要把它放在哪里,因为它和我正在进行的项目有关系。
这也解决了一个很普遍的问题,很多人想记笔记,想有「第二大脑」,却不知道应该记什么,或者记下来很多,最后都只是放在自己的笔记软件里,发挥不出任何作用。而在 PARA 的系统中,你清楚地知道你应该记什么笔记,因为你知道哪些信息和你正在做的事情有关系。这些笔记才是真正能发挥作用的。
比如我即将写一篇在我 30 岁时发布的博客文章,虽然还没开始写,但它是我的一个 Project, 那么当我读到和这个主题相关的信息,就会把它记在这个 Project 里,当我真正写这篇文章的时候,能直接参考它们,对于我来说,这才是有用的笔记:
Projects 不仅仅是项目,它还可以是即将到来的一个事件(Event),也可以是你正在研究的一个课题。比如你约了一个重要的人,你需要记下来这次约会需要准备点什么。约会结束后,就把它拖动到 Archive.
再举一个例子,比如你正在开发一个软件,可能需要记一些技术相关的笔记。在以往,可能你会把这些笔记按主题记下来,比如 React, Vue, Rust, 前端, 后端之类的分类。但在 PARA 中,你应该为你正在开发的软件创建一个 Project,无论你想记下来的技术笔记是什么分类,都放到这个 Project 当中。这样记下来的笔记才是真正有价值的,因为它真实地服务于你正在开发的项目,你在开发时可以反复在一个地方参考。
项目结束后,你可以将整个 Project 拖到 Archive, 不需要再管它。如果你认为 Project 中的一些笔记有复用的价值,就把它拖到 Areas 或 Resources 当中。Apple Notes 的拖动十分方便。但按照我的经验,一般来说直接 Archive 整个 Project 也没什么问题,因为它不是被删了,你还是能通过搜索重新找到它。这时 Archive 的笔记又会「流动」到 Project 当中。
我自己的 Areas 和 Resources 其实很少碰,基本只在 Projects 和 Archive 中活跃:
使用 PARA 的另一个好处在于,只要展开我的 Projects 目录,我能一目了然我正在做的事情。我不再需要单独的 Todo 工具,因为 Projects 就是我的 Todo, 而且 Apple Notes 也有 checklist 功能。这也是 The PARA Method 中所说的:
You will gain greater focus on what matters most: You will have greater clarity about what’s important so you can intentionally move your life into alignment with your interests and goals.
你将更加专注于最重要的事情:你会更清晰地了解什么是重要的,从而有意识地将你的生活与自身兴趣和目标协调一致。
善用搜索。虽然只是关键字查询,但按照我的经验来看,这就足够了。比如我在 Apple Notes 记过我常用的 API key, 我只要搜索 azure 这个词,我就能立刻找到,我甚至都不知道它被我放在哪里了:
不需要迁移。在新的工具重新开始,需要用到的时候才在旧的工具重新找回,有必要时再复制过来。反正没人要求你用新的工具就把旧的数据都删掉。而且,我相信你最后会发现,你并不怎么需要找回你的旧数据 😂 这两年我就没打开过我以前一直用的 Logseq, 也没有做任何迁移。
以上的分享不一定适合所有人,但它非常适合我,我也从这套系统中得到了很大的解放。你甚至可以什么系统都不用,在同一个文件夹记下来所有东西,最后你会意识到,重要的不是把笔记放在哪里,而是感谢自己当初记了下来。这就是为什么降低记录的摩擦力是如此地重要。
PARA 是一个方法,你不一定要用 Apple Notes, 你可以在所有的工具用它。不要让工具阻碍了自己最重要的事 —— take action. 真正有用的笔记是帮助你 take action 的笔记。
P.S. 这篇文章在 Apple Notes 写成:
2025-02-08 08:00:00
趁着国补,把手头用了 5 年的 MacBook Air M1 换成了 MacBook Pro 14 寸 M4. 顺便手动重新配置新电脑,在此记录一下每次设置新电脑时我会做的一些设置和必装的软件。
把点按切换成轻点:
我不喜欢用触摸板点按拖动来移动窗口,觉得有点费力,所以我会调整为三指拖移。旧版本的 OS X 可以直接在系统设置中调整,新版本的 macOS 竟然把它归类到辅助功能里了:
把 Control 键和 Caps Lock 键互换。因为我需要频繁使用 Control 键,Caps Lock 的位置是最合适的,这也是 HHKB 的默认布局:
取消 Spotlight 的所有索引,因为我用 Raycast, Spotlight 的索引会浪费计算资源:
2024-12-28 08:00:00
高中时我读吴军的《浪潮之巅》,觉得很可惜,我出生太晚,错过了一个又一个的浪潮。我总是想,如果我身处这些浪潮,是否也会造就一点什么?我是不是也能创造一家了不起的企业而为人常道?
那时我才 17 岁,我在沙滩上观望浪潮,抱怨生不逢时。而现在,我 29 岁,已经在海中游泳多时。就在这几年,OpenAI 发布 ChatGPT 后,这片海似乎又卷起了一波巨大的浪潮,又有人站在了浪潮之巅,但我还没有。我已经无法再抱怨生不逢时,因为我已经在海里了。在很多个深夜,我差点就想承认,我这辈子只能是一个普通人,我太高估自己。但到了第二天,我又开始不服气,还是不能接受作为一个普通人活着,想做出伟大的产品,想做一家伟大的公司,想在世界上留下一点美妙的痕迹。
知道答案的人只有未来的我自己,所以每当这些迷茫时刻,我总会想起昨夜派对的《夜海的秘密》:
生命中所有来去 都是月亮的潮汐
只有闭上眼才能看到 夜海的秘密
你会看到有船从身旁驶去
船上站着来自未来的自己
他逆着霞光 看不清模样
如一尊塑像 带着先知般的哀伤
只是沉默望着你 一句未讲
你蓦然落泪 想一路追上
跟随他去往 那迢遥未知的远方 可是未来还未来 唯有此刻 是真实
昨夜派对的歌的歌词,就像诗一样,能给我一点疗愈。我习惯通过文学作品自我疗愈。别人问我,为什么还能保持阅读的习惯?我都会回答:如果你发现我某一段时间读特别多的书,那就是因为我这段时间过得非常不好,我需要从书中寻找答案。
2024,我读了 30 多本书。
因为想做一家伟大的公司,我读了柯林斯的《基业长青》和《卓越基因》,研究那些成功的企业是怎么走过来的。
因为想做出伟大的产品,我读了梁宁的《真需求》,lululemon 创始人的《lululemon 方法》,张小龙的《微信背后的产品观》。
其中一本叫做《做难而正确的事》(英文名是 Fall in Love with the Problem, Not he Solution) 让我印象很深刻,它不仅是一本给我打兴奋剂的创业鸡汤,它还教会了我,什么是真正的 Make something people want.
这些书让我对做产品有了另一个体会:如果我想做一个影响范围非常大的产品,我就需要做让人上瘾的「毒品」,要做满足用户「贪嗔痴」的产品。因为 PMF (product-market fit) 的最重要的指标是用户留存率。
恰好我读到了一本《玩家思维:游戏设计师的自我修养》,了解到了游戏让人沉迷的原理,大概也能运用到产品中去。
今年上半年我的朋友启师傅来佛山,我们在先行书店见了一面,期间我们聊到,做互联网产品有点厌倦,想做一些真正看得见摸得着的东西,能让用户在手上把玩,然后赞叹一句 wonderful 的东西,而不是拿着手机给别人看,说「你看我写的这个 App…」。
于是我想到 18 年我曾经卖过一段时间的程序员贴纸,那时我发现国内没有人在做,在国外买又非常贵,动辄一张几美元。那时我联系了一家质量非常好的厂家,做了一批质量很好的开源项目 logo 贴纸,卖得非常不错。更重要的是,中国的程序员终于可以在国内买到质量又好又便宜的贴纸。不过因为我还在上班,有点忙不过来,最后关掉了店铺。
后来我在杭州参加 AdventurX 的活动,趁着机会又见了多年的网友 Linmi, 他是 Notion 中文社区的负责人。我们也聊到了这件事。他鼓励我重新把这件事做下去。
回到家后,我重新认真思考了这件事。我确实应该重新捡起来卖贴纸这门生意,但不能像几年前一样只卖贴纸。我相信程序员(或者泛互联网从业者)需要的不止是贴纸,我们有我们独特的文化,我们有我们真正发自内心热爱的东西,我们乐意把它展示出来。
所以我决定把这件事用经营一个品牌的方式重新去做,贴纸只是其中一个产品。无论在后来是卖贴纸还是卖其它东西,我希望能聚集一群有相同文化认同的朋友,做出这个群体喜欢的产品。我想了很久品牌的名字,最终还是冒了一个风险,取了一个只有程序员会懂的名字 PaddingLeft, 这是一个 CSS 属性的名字。幸运的是,我居然能买到 padding-left.com 这个域名。
我花了些时间选择工厂,甚至跑到了工厂观察他们的机器,和工厂聊价格排期。终于重新上线了店铺。
贴纸卖了一段时间后,其实没有赚到多少钱。期间我一直在想下一个单品应该做什么。恰好那段时间我一直想给自己买一条项链,何不就做项链?
起初我跟一些人聊这个想法,他们都不认可做项链,认为程序员没有戴项链的习惯。这个观察其实不无道理,可是在做这个品牌的时候,我其中的一个想法是可以通过 PaddingLeft 的产品,让用户在使用我们的产品的同时能增加自己的时尚属性,摆脱大众对互联网工作者的刻板印象。而且项链可以做得非常精致,也适合送礼。
这个想法有点自大,但我认为值得尝试。
第一批项链做出来后,卖得也不错。
做 PaddingLeft 的这段经历,虽然也和互联网有点关系,但后来我才慢慢意识到,我在做和做软件截然不同的东西。我对供应链、库存有了新的认识,这些是在做软件的时候不需要处理的问题。和传统行业的人打交道,沟通的方式也和在互联网公司里沟通的方式截然不同。关于这些,我想在以后可以专门再写一篇和大家分享。
在开单的喜悦过后,我又开始想,这到底是一门多大规模的生意?18 年我卖贴纸,我只是把它当作赚外快来看待,如果一个月能带来 2000 块的收入,我会觉得是不错的零花钱钱。但是现在,我是在为自己的生计赚钱,我要思考的问题变成了,从商业上来讲,这是一个值 2 万人民币的 market, 还是值 5 万,还是值 10 万?如果它只是一门值 5 万的生意,我有必要做下去吗?或者说,它有可能发展成价值 20 万规模的生意吗?它是一个可以「流动」的生意吗?
就在刚刚,又有人在店里下单买了些程序员贴纸,于是我走到工作台一张一张地放进包装袋。我边发货,边盘算这单赚了多少钱,得到的数字是 8 块。我忍不住笑了。我曾经的日薪是这一单的 100 多倍。我做的这件事情,它真的有意义吗?
没有人知道答案,我只能安慰自己,这件事总得有人做,而我适合做。我了解程序员、设计师、产品经理这些人喜欢什么,因为我就是程序员。每卖出一张贴纸,我都会给对应的开源项目捐一块钱,以现在的定价,我基本是在做慈善。现在也有很多店做程序员贴纸,但没有人这么做过,因为我做过开源,我知道开源项目的窘境,这就是文化的一部份,也是做这个品牌的意义。如果你曾经买过 PaddingLeft 的贴纸,你会发现我用的自封袋和普通的透明袋有点不同,因为我用的是环保可降解的自封袋。这对用户来说没有丝毫影响,但我挺享受这种自我感动,这也是其中的意义。
直到现在,我还不知道,我还要在海里游多久,才能游到浪潮之巅。我想起曾经的一场梦,梦到在一个饭局,张一鸣就坐我旁边,我说我会有一天像你这样的。张一鸣笑了笑,我也笑了笑,然后梦就醒了。
我的这些执着在多年后是否会成为笑话?Think different 广告中的那句「只有那些疯狂到认为自己能改变世界的人,才真正改变了世界」这句话,到底是不是真的?妈妈,你 10 年前和我说的,算命的说我 30 岁会创业成功,到底是不是真的?
2024-10-09 08:00:00
Sam Altman 最近有一个关于 AI 和写作的访谈,让我开始思考 AI 辅助写作这个课题。
在辅助生产代码方面,Cursor 和 GitHub Copilot 已经证明了 AI 和人类在编程方面的协作非常有效。通过代码的上下文和注释,加上人类显示声明需求,AI 能很好地完成写代码任务。
我在思考在写作的时候,是否也能有一个 Copilot 辅助人类更好地写作。
大部分人不会进行深度写作,根据二八法则,80% 的人在消费 20% 的人生产的内容。这 80% 的人,偶尔进行浅度写作,例如写社交网络的动态、写用于工作中用于信息同步的文档。这类写作,我认为 AI 可以辅助的地方非常有限,用户基本不会主动为这样的场景寻找专门的写作工具或到 ChatGPT 这样的聊天窗口专门改写润色。这样的场景将来会被系统级的 AI (如 Apple Intelligent) 解决。
有的人希望写作,但不知道应该写什么。我曾经在书店看到过一本书,叫《642件可写的小事》,如标题所言,里面有 642 个开头,可以随便选一个续写。现在也有一些这样类型的 App. 这些书和 App 乍看起来很有意思,能解决不知道写什么的问题,但用起来我发现我根本不想写,因为我对里面的话题毫无兴趣。
我认为 AI 能很好地解决这个问题,因为我们可以在 prompt 中告诉 AI 自己的爱好和关注的领域,来定制化地生成自己会感兴趣的创意写作话题。
Notion 流行后,很多笔记工具开始标榜自己是「思维的工具」(Tools for thought). 其实写作这个行为本身就是「思维的工具」。Sam Altman 在访谈中说「写作是思考的外化」(writing is externalize thinking),而且「写作是模糊想法的放大器」。应该有不少人有同样的感觉,我们每天有很多想法和灵感,我们以为我们对这些想法非常清晰,但其实如果试着把想法写下来(或说出来),才发现很多思考在头脑内部其实处于非常混沌的状态。只有通过思考的外化(交流、写作),才会发现思维的漏洞、连结零散的思维。在修补思维漏洞的过程中,混沌的想法会逐渐变得健壮 (robust). 思考和灵感就像一颗种子,它非常迷人,但在播种前,它什么也不是。写作就是播种,认知是你的土壤,它会长出你意想不到的枝叶,然后又生长出新的枝叶,这就是为什么「写作是模糊想法的放大器」。
造成在头脑中的想法非常混沌的原因,是人脑无法承受过高的「认知负荷」 (John Sweller 提出的理论) 。借助书写可以把信息扩展到外部记忆,使得人在处理复杂信息时能更好地理解和思考。
很多人害怕写作,认为写作有门槛,但我不这么认为。我认为只要会思考,就会写作;只要能和人正常沟通,就会写作。写作只有把文字变成作品被品味被评价才是一种有门槛的艺术。我们受学校教育的影响,把写作完全视作一种文学艺术,才让人对写作感到害怕。却没有人教育我们,写作是一种思维的工具,写作可以帮助我们思考。我们其实可以只为自己写作,它是没有门槛的。把写作视作和自己对话,你就会发现写作也就是那么一回事儿。和自己对话需要遣詞造句吗?不需要。需要遵循什么文章结构吗?不需要。
把写作看作是思维的工具后,我对 AI 辅助写作有了全新的思考角度。从表面看,我们似乎需要的是辅助我写作的 Copilot, 但在本质上我们需要的是辅助思考的 Copilot.
现在很多文本编辑器都有 AI 功能:自动补全、自动总结、选中文本 Ask AI, 重写、润色等等。但我对这些功能在写作中的作用非常失望,真正在写作时,这些功能都是非常 annoying 的,而这不止我一个人有这样的感受:
这些功能,完全不能称作写作辅助,它们只不过是文本处理辅助罢了。它们对写作毫无用处,甚至有反作用。它们对思考也毫无用处,无法「放大」我的思考。
当写作作为一种思维工具时,我不需要 AI 辅助我自动补全,甚至有些可以生成一个段落的文字。这不是写作,这是在制造垃圾。
到底什么样的形式是一个好的写作 Copilot, 我也没有答案,但我认为它一定不能是侵入式的。它应该在一旁默默地观察我写出来的想法,然后在合适的时候告诉我它对此的观点。它有比我多得多的知识量,可以做到:
也就是说,写作除了和自己对话以外,增加了和 AI 对话的一层。它可以提供灵感、帮助做 research, 写作风格指导等等的帮助。
虽然我希望有这么一个写作 Copilot 出现,但我觉得很难做出一个这样的 Copilot 出来。它的难点在于,不同类型的写作有着截然不同的需求,如果需要匹配不同的需求,最终还是会变成一个 Chat IM 的形态。上面提到的需求,其实直接使用对话也能解决,能进一步做的无非是在文本编辑器里加上选中文字展开对话,预设一些跟写作相关的 prompt 而已。
至于 AI 是否会扼杀写作,我不这么认为。Sam Altman 在访谈中也提到了这点:当你读到很好的作品,你会想去了解作者,这个作者经历的事情,他的思考方式,慢慢地和作者形成一个连结。这是 AI 做不到的。
2024-08-10 08:00:00
最近大量地使用 Cursor 替代了 VS Code, 开始习惯直接在编辑器里告诉 AI 我的需求,让它来代替我写出代码段。
请注意,我用了「代码段」这个词,而不是「代码」,因为我想做一个区分 —— 按照我目前的经验来看,生成式 AI 非常擅长生成一段内聚的代码,而不是一整个应用程序。
在没有 AI 生成代码前,我写代码也是这样的一个流程:
AI 也许能为第 1 和第 2 点提出建议,但我目前不需要。第 3 点我认为对于稍微复杂一点的生产级应用, AI 还做不到把这一块也做到。可能很多人看到现在 Claude 直接能写出一个全功能的 Todo List 就惊叹 AI 要取代程序员了,我觉得真正写过一个完整的给用户使用的「应用」的朋友对此都会很淡定。
对于我来说,只有在第 4 步(实现) 的阶段才真正能杠杆 AI 的能力。我会尽可能地描述清楚我的需求,让 AI 能理解我要做的任务,让它来生成满足我的抽象的代码,或修改现有的代码。
这里我提到的描述清楚我的需求是用 AI 生成代码中最重要的一点。所谓的「需求」不仅仅是描述这个函数需要做什么事情,还需要包含这个函数应该接收什么参数,返回的是什么数据结构。
例如,我在做的一个应用,其中我需要一个上传文件到 S3 的函数。在这个需求中,如果我单纯告诉 AI它要做什么,那我很有可能得到一个可以实现功能但不适合我调用的函数,因为 AI 没有上下文去确定我可以传哪些参数给它。
![cursor 截图]../../../images/telegram-cloud-photo-size-5-6168067452672523878-y.jpg
在深度和 AI 「结对编程」后,我对于「AI 是否能取代程序员」这个问题有了更深刻的思考。
有了 AI, 我现在写代码花的精力主要是在「设计」上,例如思考这个应用的交互设计,例如整个应用的架构设计。所谓的架构设计,一部分的工作是决定这个系统里要有什么模块,一部分的工作是决定这些模块如何串联在一起。而这些设计工作恰恰是我写代码的时候最喜欢做的,对我来说,写代码就应该是一个设计的过程,设计出优雅、易用、易扩展的接口是一件很有成就感的事。这也是我当初看 Head First Design Patter 这本书时的感受。 如果写软件变成了一个只需要花精力在设计而不是实现上的过程,那么写软件的人就是「代码艺术家」了。我觉得「代码艺术家」是不会被 AI 取代的,因为设计的起点和终点都是人类,AI 可以给你 100 个设计上的答案,但只有人类最终能感知到现实和当下的环境和信息,创造出能触动另一群人类的产品。
如果你从现在开始,开始把 AI 当作是你的员工,就像某一天你突然只需要 $20 一个月就能招无数多愿意帮你打工的人,你很快就会发现,你最终会面临两种局面:
局面1:你将手足无措,你突然发现如果你不是实现函数的那个人,你就不知道你应该做什么了。从前你沾沾自喜的手写快排,手写红黑树突然变得一文不值,无处施展。
局面2:你将如虎添翼,你突然发现你曾经有很多想法没有精力和时间去实现,现在突然有这么多廉价劳动力将不厌其烦地帮你写代码,而你要做的只是设计好整个系统的结构,把具体实现外包给 AI. 然后把产品推出市场,去碰壁,去失败,去成功。显然,AI 不能替代你去碰壁,去失败,去成功,但真正让你变得强大的不是你手写快排有多烂熟于心,而是去碰壁之后学习到的东西。
AI 不会替代「代码艺术家」,因为 AI 是「代码艺术家」的喷射机。
读到这里,可能有人要说,Randy, 你飘了,你开始技术虚无主义了。在这里我要申明,这篇文章我是写给有一定经验的程序员看的。对于没有什么经验的程序员,多写点代码总是好的(至少目前来看)。AI 能力的上限是由用的人的上限决定的。无论是任何行业,充分掌握领域知识后配合 AI 才是最好的做法。
就像下面这个例子,我只要说一句 add tanstack query provider 就能让 AI 帮我把 @tanstack/query 加到我的程序里。我自己会写,但我自己写可能要花一两分钟,但 AI 一下子就好了。
![cursor 截图]../../../images/telegram-cloud-photo-size-5-6165685253356765301-y.jpg
但如果你没有任何代码经验,你连 tanstack query 是什么都不知道,也不知道要放在程序的哪个地方,那用 AI 还是有点困难。
写下这篇文章是因为最近用 Cursor 有感,加上刚好看到 Daniel Nguyen 发了一篇 Software is Art, 有感而发,不吐不快。在此粗浅翻译(非 GPT),作为结尾:
I realize the reason I like building is not just because I’m a builder.
我意识到我一直喜欢创造点东西的原因不只是因为我就是个创造者.
It’s because software products are how I express my creativity.
而是因为写软件产品是我表达我的创意的一种方式
It’s like a poem to a poet, a song to a songwriter, a painting to a painter…
就像诗人的诗,歌手的歌,画家的画
Software is my art form, my medium of expression.
软件是属于我的一种艺术形式,是我表达(创造力)的媒介。
2024-05-14 08:00:00
2023 年的 5 月,我离开了微软,开始了自己做产品的旅程。到现在刚好满了一年,这一年发生了不少事情,有些在 2023 年终总结里提到过,这一篇我想更详细地列出在这一年我具体做了什么、对自由职业的思考、对做产品的一些思考等等。
首先是我的产出,这一年我的产出主要是两个产品、一个播客。
离职后第一个认真做的产品是 Notepal, 这是一个用于把微信读书笔记同步到各个笔记应用的插件。我在这篇文章详细写过这个产品的起源和在做这个产品的时候的一些思考。我在做这个产品的时候完全没有想到,这个只卖 50 块的插件,在这一年帮我付了我一整年的房租。
EpubKit 是另外一个我投入比较多的产品。这是一个把网页转成 ePub 电子书的工具。正式上线不到一个月,收获了几十个付费用户。
刚好今年的 5 月份也是我和 GeekPlux 一起做的播客节目《代码之外》 的一周年。起初我们只是玩票性地做闲聊节目,后来因为有了听众来信的栏目,我们慢慢会讲更多职业发展方向的主题,这些主题意外地无形中对很多听众有不少的帮助。后来还邀请我刚工作就很欣赏的前辈勾股作为来信栏目的常驻嘉宾,为节目带来了很多很好的观点。今年在参加一些线下活动时,有些听众会跟我说从节目中得到了启发。从统计数字上看,我们好像的确是做了一件影响力不算小的事:
在这一年,我对于做产品和生活都有了很多思考。对于不上班这件事,有人羡慕,有人好奇,刚好在这篇总结里,我想跟大家分享不上班的好处和缺点。
不上班的好处对我来说最明显的是时间自由。我是一个喜欢晚睡晚起的人,所以对我来说,准时上班是一件很难的事。不上班可以让我睡到自然醒,有充足的睡眠时间。
上班的时候基本只能认识职场环境里面的同事朋友,或者在网络上交流的朋友。但是在自己做产品后,我开始认识一些同样是在做产品的朋友,和这些朋友可以聊得更深入。这些人往往对很多事情都有自己独特的思考。我从他们身上学习到非常多。我经常觉得如果我只是和以前一样在公司上班,业余写写博客和开源,我可能很难和这些朋友有共同话题,最多也只是互相点赞之交。
不上班后只能完全依靠自己赚钱,这代表我需要很赤裸地直面市场。
第一层赤裸,指的是脱离公司,作为一个个体,我可以给消费者提供什么他们认为值得为我付费的价值?
第二层赤裸,指的是一个产品如果脱离大公司本来就有的入口红利,我靠什么给我的产品带来自然流量?
这些都是很难的问题,但一旦开始学习,收获都是巨大的,而且都是属于自己的。在公司里最可怕的地方在于,我们很容易把公司给的平台误以为是自己的能力,很容易把流量看成是理所当然会有的。
也正因为如此,在这个过程中,我可以学习到很多以前不会主动学习的技能。
自己做产品的时候,没有公司平台给的入口,首先需要学习的就是如何做 marketing. 也是只有在自己做产品的时候,才会发现要别人发现你的产品是一件多么难的事。回想以前在阿里做业务,我们写一个营销活动页面,只要把入口放到某个栏位,基本不需要担心没有流量。
为了获客,我学会了研究 SEO, 学会了怎么做小红书,读了很多关于 marketing 的书。这让我学习了很多技术之外的知识,我觉得这些知识是终生受用的,而且它们不仅可以在互联网行业受用。
不上班最大的缺点就是没有固定收入,这是很现实的问题。坦率地说,我以前买东西基本不看价格,只要觉得有价值,我就会买。没有固定收入之后,我买东西变得更加谨慎了。比如最近我很想买一台 Studio Display, 换作以前,无需多想,直接下单。但是现在,我会想我要卖多少份软件才能 cover 这台显示器,想想还是算了。
有时候我的朋友说羡慕我不用上班,我就跟他们说我这一年的收入还没有你们一个月赚得多,他们心理也就平衡了🤣。
可能有些人就是喜欢不用和别人交流,但对我来说,我是喜欢社交的,我在适当的社交中可以获取能量。不上班的时候,大部份的时间都是在家里写代码,看书,在网上和朋友聊天。有时候一整天都不需要开口说一句话。到后来我有点受不了,开始到外面的咖啡厅办公,只要能见到旁边有活人,就能有所缓解这种孤独感。
上班有上班的不确定性要面对,不上班也有不上班的不确定性要面对。你无法确定这种生活可以维持多久,你的产品是否能卖得出去,就算卖得出去,它是否能养活自己,这些都是要面对的问题。
这些就是我体会到的不上班的一些优缺点,接下来,我想讲讲这一年在做产品的过程中我的一些思考和感受。
「独立开发」这个词在这一年非常火,用来标签像我这样自己做产品的开发者。其实我一直不称自己为「独立开发者」,因为我根本不想「独立」开发。我想做 scope 更大的事情,只是现在还没有条件。如果可以,我更愿意和两三个志同道合的人一起做产品。就像 61 的谜底科技,像少楠的 flomo.
而且自己做产品这一年,让我深刻地意识到,真正要做「独立」开发是很难的,因为没有人能擅长所有技能。
曾经我觉得只要我愿意去学,我就能做好。比如设计。我很注重产品的 UI/UX 设计,但我一直没有经过认真的设计学习和训练。我读了些关于 UI/UX 的书,以为就可以成为一个设计还不错的程序员。后来发现我错了,理论和实践之间原来有一条很大的鸿沟。我虽然知道很多设计和用户体验的理论,但是一旦真正动手做页面,这些理论完全无法转换成实际的设计。
这是因为设计和写代码一样,是需要长期积累的。优秀的设计师可能有审美天赋,但他们一定也是每天都观察大量的设计,在自己的脑中内化了很多设计的模式(我不知道有没有专业的术语来形容),这些积累使他们可以面对一个新的需求的时候,根据自己内化的东西产生新的设计,这是我这种只读过一些理论的人无法做到的。正如会写代码的设计师,可能可以写一点能跑的代码,但缺乏多年的代码实践经验,是不可能像真正的专业程序员一样根据经验做好技术选型和想应该用什么设计模式(design pattern)的。
不过,我还是学会了在看到一些设计的时候,比以往更深入地去思考这个设计,这些元素为什么会这么摆放,颜色是怎么运用的,等等。
Notepal 和 EpubKit 同时做,让我更能体会到人的时间和精力是有限的。把时间放在一个产品 4 小时,那么另外一个产品投入的时间就永远少了 4 小时。而且上下文切换(context switch)是非常耗精力的。比如你正在修产品 A 的 bug, 这时用户报了产品 B 的 bug, 要从产品 A 跳转到产品 B 的开发,是很难一下子切换过来的。
所以不是自己一个人做产品就不需要项目管理,还是得学会充当自己的 manager 管理自己。给项目列好 roadmap, 排好需求优先级。
关于这个问题我还专门请教了图拉鼎,他告诉我要把自己当成不同的角色来用,比如规定上午作为客服,专门处理用户反馈,下午是程序员,专注写代码。这个方法也让我很受用。
自己做产品,同时要充当开发、marketing、客服、产品设计,我觉得这是「独立」开发的最大挑战。
开发完 Notepal 后,我曾经陷入了很长时间的 burnout. 眼下赚的钱也不多,但又不知道应该做什么。期间有一些零星的 idea, 开发完后也不了了之。后来开发了第一版 EpubKit, 有了一些用户,之后又 burnout 了,因为开始觉得它做得不好,也很小众,渐渐又想放弃,想做点别的试试。
后来一些朋友「批评」我说我不够专注,我也开始反思,其实自己做的东西不算很糟糕,只是自己太着急,没有把它们都做得极致就失去耐性。经过反思,我决定好好打磨自己现有的产品,才有了现在这一版自己比较满意的 EpubKit.
乔布斯说专注不是指只做最好的,而是对其它也很好的东西 say no.
另外,缺乏专注很有可能会消耗用户对你的信任。
「快速试错」、「快速验证想法」是很多人做产品的信条,我相信快速验证想法是重要的,但是更重要的是交给用户的这个产品不应该是一个半成品,它最好是一个 Finished software. 也就是说,即使你不再维护这个产品,它还依旧是个可用的软件。
我曾经也「快速试错」,发布了一些产品,最终不再维护,甚至还有几个用户付费了。我对这种「试错」是愧疚的,因为这很有可能伤害支持你的用户。因此我现在反而发布新产品会更加谨慎,要把用户的感受放在第一位。
这篇文章很好地表达了这个观点。
以上就是不上班的一年我对自己的一些思考的总结,希望对读到的朋友有帮助。这一年我其实算是比较幸运的,虽然收入微薄,但做产品也算是能卖出去,能解决很多人的需求。但同时我还是处于迷茫的阶段,认为自己做的产品还是小打小闹,scope 太小。我还是希望将来能做出满足更大众需求的产品,覆盖面能更广。
我的这些观点不一定对,但也能让读者感受到一个程序员脱离公司的其中一种可能性。