不能想象没有书的世界 | The Creative Gene

10 月 19 日,《The Creative Gene》上架亚马逊,火速下单购入电子版。这是小岛秀夫在两年前出版的,《創作する遺伝子》的英文版,他是我喜爱的游戏制作人。这本书的副标题是“书、电影、音乐是如何影响死亡搁浅、合金装备的创作”,而在翻开书的那一刻,我立即意识到,一年前的这个时候,开始认真学英语是多么正确的决定。 A world without books is inconceivable. 这句话写在前言的第一段,也就是我的读书笔记系列的前缀,“不能想象没有书的世界”。就如同副标题写的那样,小岛秀夫在这本书里,搬出了他的宝库,翻出每一本对他有影响的书籍,每一部令他震撼的电影,还有让他颇有感触的音乐,都是他所爱的 memes。 什么是 meme?就像基因(gene)对于生物,使得物种得以遗传、繁衍、壮大,meme 则是对于文化,通过书籍、电影、音乐等等载体,在人群里扩散,又传递给下一代。 小岛秀夫从书影音里收获 memes,并且想将这些 memes 传递给下一代,这就是他创作的动力,也驱使他制作出了合金装备、死亡搁浅这样优秀的游戏。 书里有很大一部分,是小岛秀夫对他喜爱的作品的“读后感”,绝大多数都是我没有看过的作品,但是从这些零碎的体验中,我能感受到,他在不断地打磨、完善自己的内核,以至于形成了强烈的个人风格。不过这些也不是我阅读这本书的重点,还是按照惯例,挑几点展开聊聊。 和书相遇,和人相遇 小岛秀夫从小就喜欢逛书店,直到今天也是如此。相比于在发达的互联网上,通过神奇的算法,将“喜欢”的内容展现在眼前,他更喜欢站在书架边,在茫茫的书海里寻找宝藏。 倒不是否认算法的准确性,而是这一段挑选的过程,才最宝贵。如果你也有阅读的习惯,就一定能感同身受,只有 10% 的书才是好书。这一次又一次的挑选过程中,可以不断地锻炼自己辨别好书的能力,你需要在翻开书前做出决定,如果是一本好书,那一定会有收获,而如果不巧没遇上,花一些时间读完也并不浪费,是为了下一次更好的相遇。 挑书、挑电影、挑音乐,都是如此,挑人也一样。 和人相遇不难,但是想遇上合适的人,你也知道是有多不容易。挑错一本书仅仅只会导致一段时间的无聊,但如果是挑错了商业合作伙伴,那就是一场灾难。 从 memes 到连结 如果玩过死亡搁浅,对“连结”就会有更深的理解,这也是小岛秀夫想在游戏里表现的核心理念。 把“meme”这个单词拆开,就是 “me” + “me”,是你是我,连结成了现在的世界。 每个人、每个事物上都有故事,这些故事的意义会根据读者阅读的时间、情境发生变化。故事在人群里发散、传递,有些元素会被复制、模仿,而有的会被扩展,赋予了更多的意义,新的 memes 就会出现。在这个时刻,无数碎片化的“me”融合为一体。 主动地寻找、吸收 memes,建立连结,这就是小岛秀夫创造新 memes 的方法。而这套方法,也同样用在了死亡搁浅的游戏制作过程。 在游戏甚至都没有任何概念的时候,小岛秀夫去了冰岛度假。在出租车上与司机师傅聊天,得知他是一名乐队成员,并推荐了一家唱片店。小岛秀夫在唱片店里买了几张 CD,结账时,店里放了一首曲子,很喜欢,便去询问店员,这首曲子来自 Low Roar,于是也买了几张他们的 CD 回到日本。 这个音乐与小岛秀夫建立了连结,并在他的潜意识里慢慢发酵。多年后,当他在为死亡搁浅的预告片挑选合适的配乐时,突然想起了 Low Roar 的那首“I’ll Keep Coming”。一切都是如此贴合,就像是从一开始就计划好了的那样,连结,然后新的 meme 产生。 和游戏里的演员主角,弩哥、拔叔的合作也是如此(这就是小岛秀夫天天在 twitter 追星打卡、晒合照、摸鱼的“借口”吧)。 我挺喜欢“游戏制作人”的这个头衔,和音乐制作人一样,他们是导演,掌控了一切,作品里也被深深的烙上了个人的印记,极致的个人风格。小团队,想要用低预算制作高质量的游戏,是巨大的挑战。对于小岛秀夫,靠的就是根深蒂固的个人风格,也就是这么多年来用身心去辨识艺术,寻找 10% 的好书的过程。

November 10, 2021

我是如何重构笔记系统的

前两天 读完了 How to Take Smart Notes 后,就开始思考该如何来重构我的笔记系统。 我在很早就养成了记笔记的习惯,读过的每一本书,做过的每一个项目,日常生活中的一些灵感、想法,我都会记下来。“我很清楚,这世界变化有多快”,就像穆里尼奥的执教笔记,帮助他取得了足球教练生涯的好成绩,我的笔记为思考提供了土壤,也弥补了记忆能力的天然缺陷。 但是做了一段时间的内容输出后,我发现其中的一些不足,例如读书笔记中主要是摘录,很少有消化后的内容,而日常的想法又有些碎片,缺少上下文语境,也不能很好地进行归类整理。如果想要形成知识复利,那当前的增长利率看起来还挺低的。 思考了几天,我已经敲定了重构的方案,先来看下现有的笔记系统吧。 上图就是我目前从 信息输入 -> 笔记 -> 思考 -> 内容输出 的工作流。零碎的想法会记录在 flomo 上,打上一些标签;而读书笔记、学习笔记以及项目笔记,都是记录在 OneNote 上。在写 blog、newsletter 或是与朋友对谈前,我都会翻阅这些笔记,来获取需要的信息,帮助自己思考,更好地进行内容输出。 先来说说笔记软件的选择。 因为笔记系统在我日常生活中,不管是写入还是查看,频率都挺高,所以我对它的基本要求是全平台、能长久稳定地运行。OneNote 自然不必担心,微软(巨硬)财大气粗,我也相信它能比我活的更久。而 flomo 是一个比较新的卡片笔记 app,形象气质佳,我已经使用了近 300 天,输入便捷,该有的功能都有,不该有的功能他们也不会加上,如果对长久运行有些顾虑的话,至少他们承诺了 再服务 7 年。 当然软件只是工具,笔记也是,再好的笔记也永远不能替代思考的主体:你那聪明的小脑瓜。工具为辅,思考为主,重要的是,掌握思维框架,勤思考,才能形成知识复利。 在 How to Take Smart Notes 这本书中,介绍了卢曼的法宝,也就是那个卡片盒子,slip-box,里面存放了经过思考沉淀的永久笔记。回顾之前的工作流,就会发现,我的笔记主要重在于“记录”,而思考,往往要等到内容输出时才发生,这也就是这套系统比较低效的核心原因。所以,这次重构的重点,就是加上这个 slip-box,在信息和输出之间架起桥梁,在笔记记录的过程中提前思考,使笔记系统真正成为“第二大脑”。 上图就是重新设计后的工作流。大体上来看,就是在原有的笔记系统之后,加入了 slip-box,存放思考后的永久笔记。读书时的摘录、项目笔记,仍然记在 OneNote 上,因为 OneNote 的功能更强大,例如支持表格、绘图等,特别是在项目笔记中,还是有不少需要的场景,而且相比较于其他笔记,比较独立。读书笔记原本主要以摘录原文为主,这个习惯我暂时还不想改,而且考虑到迁移成本,就暂不做调整。 重点是调整了 flomo 的使用。零碎的想法,以及新加入的 slip-box,还有成体系的领域知识,都由 flomo 来承载。 flomo 有非常好用的标签系统,支持置顶和多级标签。 可以看到我在置顶标签里,新建了三个标签:inbox、slip-box、domain。 inbox 对应的是闪念笔记。任何想法,或是收集到的素材,都可以快速、无压力地写进来,标注好来源。但是这里存储的内容都比较临时,需要定期回顾,将有价值的内容,经过咀嚼后转换为永久笔记,然后转入 slip-box 并删除。 slip-box 对应的就是永久笔记。永久笔记应该是什么样的?我思考总结了三个原则:原子性、摩擦力、关联性。 原子性,就要求每一条笔记,只描述一个想法或观点,并且包含必要的上下文语境,如果是多维度思考的,就分开记录,并额外使用一张卡片做串联。 什么是摩擦力?就是将信息进行咀嚼,并吸收为自己的知识,而不是“光溜溜”地躺在笔记里。在闪念笔记里记录的想法、素材,在经过思考后,需要用自己的话来表述,记录自己的声音,写成永久笔记。这样会带来两个好处,一是经过了主动思考,印象会更深刻,二是内容上,已经有了完整的语境、上下文,以及自己的“声音”腔调,在需要写作或者其他输出时,可以直接拿出来用,不需要再经过重复多余的思考过程。 而关联性,就如同字面意思,使用 flomo 的链接、批注功能,将有关的笔记关联起来,形成知识链条,甚至是知识网络,足够数量的笔记会引起质变,这也是知识复利的关键。...

October 10, 2021

不能想象没有书的世界 | How to Take Smart Notes

翻开这本书是因为,近期有打算“重构”一下我的笔记系统。 我有记笔记的习惯,不管是看书、学习,或是灵光一闪的想法。我也有不少输出的渠道,写这样的读书笔记,写 blog,还有每周的 newsletter。不管是聊天也好,还是写文章,表达的越多,也会涌现出更多新的想法,我已经从中尝到了一点“甜头”,但是,以往的笔记习惯也显得越来越低效了。 这本 How to Take Smart Notes 就是在介绍一种高效的笔记习惯,中文版的译名是《卡片笔记写作法》。 书里重点介绍了德国学者卢曼(Luhmann) 的故事。卢曼是个公务员,业余时间爱好阅读社会学相关的内容,他将所有的笔记、想法写在小纸片上,编上号,全部收集在卡片盒(slip-box)中,并将有关的想法串在一起。这些源源不断的笔记,最终汇聚成了 50 本专著和 600 篇论文,还有大量的手稿和内容。 本书分为三部分。第一部分的引言里,介绍了卡片笔记的概念、方法;第二部分是四个重要的原则;第三部分则是关于如何使用这个笔记系统来更好地写作。 对而我言,最想了解的就是第一部分,后续写作相关的内容,稍显宽泛而冗长。David Perell 的写作课里有更多细化、可以实践的方法,所以草草翻完。接下来,还是聊聊让我印象深刻的几个点吧。 写作与思考 写作就是坐在一张白纸前,然后用文字将纸面填满的过程吗? 如果你有一些写作经验,答案是否定的,当然高考作文题可不算(苦笑)。写作是在表达想法,而想法,早在写作之前就已经产生,甚至在写作的过程中,会有更多的想法冒出来。 所以在写作前,这些想法的质量,就决定了文章内容的质量。就像一家好的寿司店,一定是在营业前就开始精心准备,从市场买来新鲜的鱼,剖开、清理、腌制好,最后才用一点时间,切片、捏成寿司、摆在你面前。 对于在思考,或是在做内容输出的人来说,这些想法是如此宝贵,然而人的记忆却并不牢靠,因此需要一套高效的笔记系统来作为“第二大脑”,存储想法,随着时间的积累,这些笔记就像雨水汇集成河流一样,形成知识的复利。 用机制来代替主动性 人都是想偷懒的,对吧? 如果让你制定一项计划,例如一年内看完 20 本书,你需要不断地 push 自己,不情愿地去翻开书,然后完成目标。 有主观能动性是好事,但前提是有。如果想要达到一个目标,但又没有特别强的积极性时,该怎么办?建立一套简单的机制就好了,例如挑自己感兴趣的书看,看书的时候做做笔记,看完了写一篇读后感,分享给大家。完成每一步都有些许的满足感,并且随着这套机制一次又一次的执行,你会收获更大的成就感,以及良好的习惯,我就是这么做的。 卡片笔记法也是如此,通过简单、固定的流程,提取想法,帮助思考。 如何写卡片笔记 这才是我想学习的重点。 方法也很简单:记录灵光一现的闪念笔记(fleeting notes),记录阅读的文献笔记(literature notes),然后将它们转换为永久笔记(permanent notes),并放入卡片盒中(slip-box),需要时取出来用就行了。 闪念笔记和文献笔记就不细谈,因为他们都比较“临时”,能做到快速输入就好,真正有用的是永久笔记。一张小卡片上仅记录一条永久笔记,而一条永久笔记里,只记录一个想法,这个想法可以理解为比较完整的观点,必须是用自己的话来表述的,包含了必要的上下文。当你需要表达、写作时,这些已经记录了自我观点的小卡片,就是强大的兵器库了,取出来就可以使用,不需要再来转述。 而在卡片盒中,相关的想法需要串联起来,做好双向关联。一个内容满满的卡片盒,会给你的思考、写作带来源源不断的内容,抬起一根细绳,你就能拉出一长串早已准备好的想法。 看完了这本书,我的下一步动作就是动手重构现有的笔记系统了,近期会思考实践一下,然后单独写一篇文章来介绍,如果你也有相关的想法,要和我交流哦~

October 7, 2021

不能想象没有书的世界 | Talk Like TED

TED(Technology, Entertainment, Design) 每年会召集众多科学、设计、文学、音乐等领域的杰出人物,在大会上分享他们关于技术、社会、人的思考和探索。TED 的演讲拥有独特的魅力,不论是激动人心的故事,还是引人深思的想法,看完后总会有所收获。如此成功的演讲一定有成功的方法论,这本 Talk Like TED 就是在介绍其舞台背后的秘密。 书中一共有 9 个小秘诀,我就挑印象最深的 3 个来聊聊,其余会列举在文末,方便查阅。 激情 You cannot inspire others unless you are inspired yourself. 你能从演讲者的表情、腔调和肢体语言里,看到他的激情。如果演讲者只是平淡如水地念着稿子,想必你也会左耳朵进,右耳朵出,get 不到任何信息;而如果你是一名演讲者,没有激情,就没有输出的动力,反而会让自己变得紧张。 那什么是激情呢?激情是藏在心中,你认为真正有意义的事情,它会渗透在你的生活、工作中,它是你独一无二的“身份”,驱使你不断向前。站在舞台前,有激情的人,是很自然地在表达真实的自我,而不是默默地背稿,听众才会被吸引、打动。 但是有激情的人是少数,大部分人的生活都普普通通,我也是如此,那该如何找到自己的激情呢?书中提了三个问题: What do you do? What are you passionate about? What makes your heart sing? 前两个比较好回答,第一个就是当下在做的事,第二个则是目标,例如近几年或者近几个季度的目标,但是第三个问题,it’s really hard to say。看到这个问题的时候,我就开始思考,直到两周后看完了这本书,依然难以给出一个清晰的答案,当然我会带着这个问题去生活,努力做些尝试。 除了闷头自己找答案,还有另一种办法,就是找到有激情的人,邀请他进入你的生活。 你是有激情的人吗?或者,你有认识这样的朋友吗?如果是一个肯定的答复,欢迎私信我,我想和你成为朋友~ 新鲜感 人总是喜欢新鲜事物的。大家都知道,多巴胺是生理原因上的快乐,就像是大脑中的“保存”按钮,很容易将关联的内容牢记心中。如果演讲的内容比较新颖,能激发人们的兴趣,那就像是在键盘上,对着“保存”按钮一顿猛敲。 新颖的想法和内容很考验学习能力,得不断地走出舒适区,去新的领域探索。多花点时间和精力在这方面,绝对是值得的,不仅能丰富你的内容,更重要的是,你会变成一个有趣的人。 18 分钟规则 如果你多浏览一些 TED 的演讲,会发现时长普遍在 18 分钟左右。对于演讲而言,这是一个简短有力的时间范围,足够严肃,又不会让听众感到疲惫。 而在这 18 分钟内,内容通常会被分为 3 部分,因为人们能很轻松地记住 3 块信息。这一数字越大,就越难被记忆。我们的手机号有 11 位,背诵的时候,你也是分成 3 段来记忆的吧?这也是为什么,我只挑印象最深刻的 3 点来讲,其余的都不再是有效信息了。...

October 1, 2021

过期影像 | 20210926

“秋刀鱼会过期,肉酱会过期,连保鲜纸都会过期” 相册里的影像,放久了也是会过期的。 @涵涵 @过期头发 @lilpilot @lilpilot @lilpilot 当镜头穿过两列火车的缝隙 @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot 一朵正直的云 @lilpilot 一朵没礼貌的云 @lilpilot 丸子头井盖 @lilpilot @lilpilot 慌吗 @lilpilot @lilpilot @lilpilot

September 26, 2021

英语学习回顾 - Stage Three

距离上一篇 英语学习回顾 - Stage Two 已经过去五个月了。 这五个月间,虽然也有保持日常的英文内容输入,但是感觉进步的速度有些放缓,预计获得阶段性提升的时间比想象的要长。当然,我学英语的目的并不是为了应试,对我而言,学习英语是一个长期的投资计划。所以在这一阶段,我调低了预期,拉长了整体的学习时间,并且改变了学习策略,采用“非均衡学习法”,以听力优先,尽可能融入生活。 什么是非均衡学习法? 费曼学习法强调了输出的重要性,利用输出来获取反馈,驱动整个学习过程。而且我也相信对于英语能力,有着短板理论,如果仅仅会听会读,但是不会写不会说,就不能证明英语能力好。 但是现在身处的环境决定了,很难有机会去说去写,也很少有人能给出准确的反馈。所以想要自学英语,采用费曼学习法并不是一个好的选择,那可以怎么做呢? 语言学习是一个 输入 -> 理解 -> 输出 的过程,使用“非均衡学习法”,就是把重心放在输入环节,通过大量的听力、阅读,优先提高辨识和理解能力。那输出呢?试想一下,如果你听不懂别人在讲的内容,又怎么能和他们正常交流。所以,先保证自己能听懂、看懂,等到有机会时,再去联系口语、写作也不迟。 在输入环节中,主要练习的就是听力和阅读,而我采用的是以听力优先,阅读为辅。 为什么是以听力优先? 因为这是最自然的学习方式。 小孩子学习语言的时候,是先学习阅读的吗?并不是。小孩子在听大人讲话,听得多了,在脑中就会建立声音与事物、概念的联系,然后再通过识字,建立与文字的联系。更何况,阅读的时候,会在心里“听到”文字所对应的声音,一定程度上,听力的辨识能力也会帮助提升阅读的流畅度。 不同于应试教育过程中听到的,那些精心设计的对话音频,你在生活中实际听到的英文内容,可能会充斥着连音、吞音,不同的地区会有千奇百怪的口音,甚至有很多“懂得都懂”的俚语,这些都会加大听力的难度,但学到的都是很实用的内容。例如,我在唢呐的嘻哈英文课里,就学习了不少嘻哈文化里常常能听到的“偷懒”发音和 slang。 当然,非均衡的输入练习需要花费大量的时间,成年人的时间总是很宝贵的,而在我学习英语的过程中,实际上并没有额外付出很多的时间,诀窍就在于把英语学习融入日常生活。 如何将英语学习融入生活 融入生活,就是将生活中的部分中文内容,平滑地替换为英文内容。例如将日常浏览的资讯源切换为英文网站,将打发时间看的长短视频换为英美剧,平时阅读的书籍改为看英文原版。不过要注意衡量自己的英语能力,挑选合适的内容,降低输入门槛。 我是怎么做的呢?15 分钟的通勤路上,我会听一期 EnglishPod 来学习单词、短语,目前已经听了 106 期;每天会检查一下邮箱列表里订阅的 newsletter,比如通过 Morning Brew 了解当天发生的世界新闻,通过 Emerging Tech Brew 了解 IT 相关的新闻。最近也有订阅一个帮助英语学习的英超周报,作者每周会更新一篇自己撰写的战报,并附上一段音频,讲解其中的词汇和术语。顺带一提,我在公众号上更新过两期 English Brew,就是受此启发,而素材来源,正是 Morning Brew 。中午午休的时候,原先都是在 bilibili 上看一些 up 主的视频,现在会固定看一集 Netflix 上的美剧,打开英文字幕。我的阅读书单,也正在逐渐更新为英文原版优先,虽然刚开始啃起来有些费劲,但能感觉到阅读能力的进步。其他零碎的冲浪时间,我会刷一刷 Reddit 或 YouTube。 以上就是我在这一阶段英语学习过程中的总结,积累的过程会比较漫长,因此我调整了学习策略,并将学习融入日常生活。而在英语学习上投资了这么久,是否有所回报呢?答案当然是有,在专业能力、各种软技能的学习上,我接触到了很多中文互联网上所没有的内容,例如软件架构编年史、David Perell 的写作课程,而通过阅读英文原版书,也能避免生涩的翻译所带来的理解偏差。 这些仅仅是开始,期待下一阶段学习所带来的成果。

September 12, 2021

为什么读书很难获得知识

最近这段时间,我和书的关系很差,似乎有些厌倦了阅读,坐下来静静一想,或许是因为从书中得到的,有些低于自己的预期了。 正巧翻到 Why books don’t work 这篇文章,就结合自己的一些阅读经历,思考总结一下原因。 读书能获取知识,你和我都是这么认为的吧。然后花 6 - 9 个小时来阅读非虚构类的书籍,像是《思考,快与慢》、《原则》等等,但是看完书后,只记得几个句子,却回忆不起来更多的细节。所以最后收获了多少知识呢?少得可怜。 似乎得出了一个奇怪的结论:书本作为传递知识的媒介,实际上表现的很差劲,而且读者往往意识不到。可是回顾人类的历史进程,高尔基说“书是人类进步的阶梯”,也有数不清的例子能证明,人们确实能从书里汲取知识。 知识就在书里,为什么我们很难获得呢? 为什么读书很难获得知识? 我们来比较一下,三种常见的传递知识的媒介:讲座、书和课本。 在讲座上,演讲者能很好地抓住你的注意力,但是很难有效地传达知识,为什么呢,因为演讲只做了一件事:传递信息。演讲者说出想法,台下的人听到句子,然后去理解。 书也是如此,作者用文字表述想法,读者阅读文字,然后去理解作者的想法。在这种认知模型下,演讲和书本就像是赛前的热身,而真正的思考,需要听众、读者在这之后,主动地去触发。 那些获取到知识的读者,实际上是在阅读时“偷偷”地思考,一边读一边想,“这个观点让我联想到了 blablabla”,“这个观点和谁谁谁说的有冲突”,他们在整理、总结和分析,构建知识的正反馈循环。 课本则更进一步,提供了练习、讨论题,目的是为了让学生深入地参与其中。然而现实却令人失望,学生更倾向于上课,因为课程限定了范围和程度,学生不需要自己来设定学习计划,还可以通过考试获得反馈,通过课上讨论来解答疑惑。 书本承载了知识,但是仅仅通过阅读,你只能获得有限的信息,而知识,需要你主动地去收集,思考,然后消化。 那该如何获得知识? 前人已经总结了许多关于学习知识的方法论。例如费曼学习法是通过复述概念、获取反馈来促进学习。我在 《如何在一个月内,从旱鸭子变成游泳高手》 里,也总结了学习技能的正向循环。 至于获得知识的渠道,那更是多种多样了。你可以看视频,直接、生动地理解一些抽象的概念;也可以听播客,充分地利用碎片时间;或者参与线上、线下的课程,通过提问、讨论来解答心中的疑惑。重要的是,你得主动出击,积极思考,而不是被动地接受信息。 如果决定了要从书里获取知识,《如何阅读一本书》教会了我,在阅读一本书的时候,要给自己提四个问题:这本书是写什么的?它是怎么描述的?写的好吗?和我有什么关系?在阅读的同时,通过这个 check-list 来引导自己思考。读完一本书后,也可以记录、整理自己的想法,写成文章并分享出去。现在,我每看完一本书,就会写一篇阅读总结,相比较于之前单纯的笔记摘录,写作时会有更多的主动思考,也会有更深的印象。如果针对某个领域,已经有了系统的认知,又想要对某一块进行针对性的学习,就可以挑选相关的书籍,进行主题阅读,在不同的观点碰撞中找寻答案。 知识就散落在书本的各个角落,主动地拾取书中的碎片,无数渺小的阅读汇集成知识,填满你的一生。 除了知识,书里还有什么? 如果一提起书,想到的就是知识、学习,那很多时候,恨不得立马把书本扔出窗外,逃离这枯燥的文字世界。 书里还有历史,有故事,有情绪,有天马行空的想法,也有不轻易谈吐的心路历程。 还有声音。“阅读就是抛弃自己的一切意图与偏见,随时准备接受突如其来且不知来自何方的声音”,卡尔维诺在《如果在冬夜,一个旅人》里发出了这样的声音。坐在安静的书桌前,翻开书本,就像是在人来人往的聚会里穿梭,侧耳倾听一个又一个的对话,有的对话会让你感到不屑,有的对话会让你默默点头,甚至悄悄地改变你的人生轨迹。 无论是为了获得知识,还是感受不一样的生活和思考,在文字的冒险世界里,祝你旅途愉快。

September 4, 2021

不能想象没有书的世界 | The Phoenix Project

这是一本小说,讲述 IT 运维进化为 DevOps 并帮助公司取得商业成功的“传奇”故事。 我看的是英文原版,厚厚的一本,刚开始啃起来还有点费劲,有很多不熟悉的生词,在不影响理解上下文的情况下,我都直接跳过了。 说回书中的内容,故事的主角,Bill,有些意外地成为了运维部门的 VP,新官上任,就将面临巨大的考验。混乱的项目管理,各部门之间的利益纠葛,业务步步紧逼的压力,都是 Bill 需要翻越的大山。 幸运的是,Bill 遇到了一位优秀的导师,Eric。Eric 指点 Bill 使用三步工作法梳理工作流程,将日常工作划分为四类,分析并解决工作流中的瓶颈,思考如何更快地帮助业务前进,然后逐渐形成了 DevOps 的文化。 相比较于纯粹讲述方法论或者解决方案的专业书,这本以小说的形式,生动地描述了 IT 行业内会遇到的种种难题,以第一人称的视角来思考,结合方法论来解决问题,更有带入感。 书中有两点令我影响深刻。首先是 Eric 这个角色,为 Bill 指点迷津,一步一步地帮助 Bill 思考和解决问题(所以,为什么不让 Eric 直接领导整个 IT 部门?),不得不感叹,这就是生命中的贵人吧,如果有缘遇到这样的高人,可一定要多多请教。同样地,也不能吝惜自己掌握的知识,有机会也要多帮助他人。第二点是关于信任,公司的 CEO,Steve 在动员大家全力投入凤凰项目时,轮流让高管、组员讲述个人经历,拉近相互的距离,能让大家产生信任感,“Solving complex business problem requires teamwork, and teamwork requires trust”, that’s right。 另外书中有涉及到的一些方法论,摘录在下方,方便在日后的工作过程中,回顾和思考。 一张图 这张图展示了资源使用率与等待时间的关系,当资源使用率超过 80%,等待时间就会直线上升。 例如在一个单位时间(1 小时)内,你有 90% 的时间在忙碌,依赖你的等待时间就会是 0.9 / 0.1 = 900%,也就是 9 小时,会严重阻塞工作流。 三步工作法 第一步是构建从左到右(开发 -> 运维 -> 客户)的工作流,使用 kanban 等工具将流程可视化,通过持续交付(构建、集成、部署)来优化、趋近整体目标。 第二步是沿着从右到左的价值流,持续地快速反馈,将利益最大化,防止问题重复发生或快速修复,这样就能从源头上保证质量,沉淀领域知识。 第三步是创造公司文化:勇于尝试和重复练习。尝试需要承担风险,并能从成败中吸取经验教训,而一旦出现问题,重复练习带来的成熟度,能让项目回退到安全地带,恢复正常运作。 四种工作类型 业务项目 内部项目(基础架构、运维工具和平台等) 变更(通常由 1、2 引起) 计划外的工作(生产事故等救火工作)

August 15, 2021

什么是事件驱动架构

Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events. - Wikipedia 什么是事件驱动架构? 按 维基百科的定义,事件驱动架构(EDA)是一种软件架构范式,促进事件的产生、观测、消费和反应。 在认识事件驱动架构之前,先来明确一下,什么是事件。 事件是已经发生的事实,并且不可变。例如,“创建订单”是个指令,而“订单已创建”就是个事件,订单的信息、订单创建的时间,在这个事件发生后就无法被修改。 在传统的架构体系下,编程思维可以说是过程驱动的,一个指令触发了一段逻辑,这其中可能包含了几个不同的方法行为,它们之间按照过程顺序来编排、嵌套。看起来似乎很清晰,但是很容易写出长长的“面条”代码。而事件驱动架构则强调了事件的产生与消费,将逻辑的过程转换为事件之间的环环相扣。 就如上图所展示的,如果采用事件驱动架构,订单服务就只负责订单的创建,然后发出“订单已创建”的事件,交由 EventBus 路由,转发给关心这个事件的各个监听者。 在我的开发经历中,也有采用事件驱动架构的项目,接下来,就结合自身经验,总结一下 EDA 的优缺点和其适用场景。 EDA 的优点 解耦 首先,解耦是事件驱动架构所带来的最明显的优点。从上述的例子中就可以看出,采用了 EDA 后,订单服务只需要负责处理对应的业务逻辑,而其他的切面逻辑,例如操作记录、发短信等,都可以通过事件的通知机制来解耦,从而保证业务逻辑的简洁、专注。并且,这些切面功能点可以考虑使用异步处理,也能很好地提升系统的响应能力。 DDD 与事件风暴 在领域驱动设计(DDD)中,如果采用 以“领域事件”为核心的建模思路,与业务人员通过事件风暴的形式来梳理业务流程,就会得到一系列的事件列表,也就是事件驱动架构中的所有事件。从业务人员到开发人员,从真实业务逻辑到系统设计实现,都以这些事件为核心,就能够形成统一语言,方便沟通和理解。 事件溯源 事件上存储了必要的信息和时间,如果将所有的事件持久化,结合最初的实体信息,你就拥有了一台来去自如的时光机。例如在一个资产管理系统中,存储了“资产已入池”、“资产归属已变更”、“资产已出池”等所有的事件,并且存储了资产初始化时的快照数据,就可以根据快照数据和给定时间范围内的事件列表,重新计算出某个时间的资产数据,这就是事件溯源。如果整个生命周期中事件量很大,可以考虑定期给实体做快照,溯源时获取最近的一份快照数据。事件溯源能给业务提供更灵活的数据支撑,同时,因为存储了所有的事件数据,也保障了系统的故障恢复能力和数据一致性。 EDA 的缺点 系统复杂度 “在软件工程中,没有一个中间层解决不了的问题”,事件驱动架构,就是通过引入中间层 EventBus 来实现事件机制,看似能带来不少诱人的优点,也必然会增加系统的复杂度。Spring 虽然有提供事件机制,但是比较简单,如果有复杂的使用场景,得考虑自己实现。 事件驱动架构改变了编程思维,一切都围绕事件的发布和订阅,将完整的功能过程,拆解为了不同的事件,也丧失了过程驱动带来的叙事能力。如果事件数量众多,就容易在“事件丛林”中迷了路。 使用场景 软件工程没有银弹,事件驱动架构也有其适用的场景,结合上述优缺点,个人认为,以下几个方向可以考虑采用 EDA: 组件解耦(消息推送、操作记录等) 数据沉淀系统(审计、资产等) 常规的业务逻辑里,如果有一些切面组件,例如消息、操作记录,可以接入轻量的 EDA 来解耦,保证业务逻辑清晰和职责的单一;而在数据沉淀系统中,例如审计、资产等领域,通常没有特别复杂、长链路的业务逻辑,由业务系统来触发更新数据,更关注的是数据的准确性、一致性,就可以考虑使用 EDA 和事件溯源机制。

July 11, 2021

过期影像 | 20210704

“秋刀鱼会过期,肉酱会过期,连保鲜纸都会过期” 相册里的影像,放久了也是会过期的。 着急回家吃车厘子差点错过不过期的粉雾海 @涵涵 @过期头发 春天在屋里 @lilpilot 岛雨 @lilpilot 喝好咖啡 @lilpilot @lilpilot @lilpilot @lilpilot @lilpilot 一只假鸟 @lilpilot 一只真鸟 @lilpilot Summer Remains @lilpilot

July 4, 2021