lcomplete 的技术分享
关于
博客
推特
邮箱订阅
RSS 订阅
GitHub
关于
博客
推特
邮箱订阅
RSS 订阅
GitHub
  • 野生架构师周刊

    • 019 ✨ 从凯文·凯利的建议中找到对自己有用的那 10%
    • 018 🙊 Less Is More
    • 017 🏅 成为职场优秀程序员的 5 个建议
    • 016 🐒 野生架构师成长之路(1)——游戏与现实、乌龟与火箭
    • 015 🍻 内卷时代的软件和自媒体
    • 014 🚮 中国互联网的三个问题
    • 013 🔭 重新掌控自己的信息
    • 012 📸 Old But Good 、UNIX 艺术、互联网历史博物馆
    • 011 🖼 Browser = OS 、文章、工具、资源、文摘、言论
    • 010 🚀 Hacking The Mind / 拆掉思维里的墙、放飞想象、打破规则
    • 009 🌈 Newsletter Of Newsletters、海绵宝宝的智慧
    • 008 📚 Notion vs Obsidian、程序设计 vs 软件工程
    • 007 🍀 十年后重新使用 RSS 给我带来的巨变
    • 006 📒 与人保持联系的系统、用低代码应用设计产品原型、万能锤
    • 005 ⚙️ IFTTT 和 Zapier 使用对比、最好的效率系统、投入产出比最高的 3 件事
    • 004 🧛‍♂ 备受程序员喜爱的暗黑主题、程序员的英语有多重要、Newsletter 资源分享
    • 003 🐂 新一代 kubernetes、反脆弱
    • 002 🕷 Web 3.0、关于好品味的商业模式
    • 001 🐣 低代码、我的信息管理
  • Java

    • 俯瞰 Java 服务端开发
    • Java 工程师能力提升路径(一):从业余到专业
    • Java 学习大法
    • [Java] 5 分钟搞定 liquibase 数据库版本控制
    • [Java] 高级工程师的自我修养之单元测试(一):DAO 层测试
    • [Java] 你还在统一返回 ApiResultBean 吗?✋ duck 不必,快来看 API 错误处理的最佳实践 ✔️
    • [Java] Spring 项目开发最佳实践
  • 数据库

    • MySQL 数据库开发规范
  • 软件工程

    • 万字长文带你彻底搞懂什么是 DevOps
    • 网站项目 Git 使用流程和规范
  • Javascript

    • 🎄 [React] 使用 remotion 制作视频,让圣诞快乐 PSD 动起来
    • [Javascript] 使用 lit 编写 Web Components 简化 Layui 代码
  • 编程人生

    • 编码的道与禅
    • 程序员的职业素养
    • 研发质量与效率的绩效指标设计
    • 编程界的 51 条名言佳句
  • 编程语言

    • 七周七语言之使用 prolog 解决爱因斯坦斑马难题
    • 七周七语言之用 ruby 做点什么
  • 效率

    • [10 倍程序员] ⭐ 脚本的魅力,内含 js 写爬虫、python 骚操作等实用代码
    • [10 倍程序员] ⭐ 51W+ 的终端命令行工具助你成为 10 倍程序员
    • 我的效率工具箱
    • 使用开源工作流自动化工具 n8n 打造个人助理
    • 我如何流畅地切换使用 Mac 和 Windows(一)

008 📚 Notion vs Obsidian、程序设计 vs 软件工程

欢迎打开第 008 期「野生架构师」周刊,这是由  lcomplete 每周发送的 newsletter,本周的主题是相似工具和事物间的对比,通过搞清楚差异可以让我们更好地运用它们。

cover

Notion vs Obsidian

以防有不了解 Notion 的读者朋友,我们先看看其 wiki 介绍:

Notion 是一款提供笔记、任务、数据库、看板、维基、日历和提醒等组件的应用程序。用户可以将这些 组件连接起来,来创建自己的系统 ,用于知识管理、笔记记录、数据管理、项目管理等。这些组件和系统可以单独使用,也可以与他人进行 跨平台协作。

Notion 很强大,是一个 All In One 的笔记工具,除了 wiki 里提到的功能,用它还可以玩出很多花样,比如:

  • 搭建内容管理系统:Using the Notion API to Build a Content Management System ;
  • 用 Notion 谈恋爱:七夕特供 | 如何用 Notion 谈恋爱 ;
  • 用 Notion 组织推文:Twitter Scheduling Tool for Notion 。

为什么 Notion 这么强大,本质上在于它给我们提供了一个易用的 数据库 ,数据库可以用表格、看板、列表、日历、画廊和时间线的方式来组织或展示。当我们在 Notion 中新建内容时,首先要考虑它的组织方式,如果你有很好的内容组织能力,就越能将其使用的得心应手,甚至制作模板进行售卖,或者分享使用心得,比如这位作者则分享了他是如何使用 Notion 来学习编程的:Using Notion to organise programming topics 。

在 Notion 中记笔记的路径是 从数据库到文档 ,而 Obsidian 在记笔记的路径上则与其相反,使用它我们不需要先考虑数据结构,而是直接记录笔记,然后再通过笔记的元数据来得到数据库,这就形成了 从文档到数据库 。二者都具备文档和数据库的闭环,但他们的使用思想却截然不同,这就是为什么我要拿 Notion 和 Obsidian 进行比较,通过这一点我们可以很清楚地看出两者的优劣,更能搞清楚哪种情况下用哪种工具。

Obsidian + 卡片盒笔记法

Obsidian 是借鉴卡片盒笔记法进行设计的,而卡片盒笔记有三个重要特点:

  • 原子化:每条笔记包含且只包含一条知识,每个笔记都具有一个唯一标志,在 Obsidian 中这个标志是文件名。
  • 个性化:每个笔记尽管可能包含收集、整理、标注、概括阶段的内容,但也一定要用自己的语言去描述这个知识点,只有经过自己的描述,才真正融入自己的思想。
  • 连接性:笔记之间通过唯一标志可以互相连接,从而形成个人的思想之网。

思想之网局部图(示例):

更详细的介绍可以查看:卢曼卡片盒笔记法介绍 (Introduction to the Zettelkasten Method)

如果上面的概念一时难以吸收的话,可以将卡片盒笔记类比成 个人的维基百科 ,它们之间有许多相似之处,只不过卡片盒中的每个百科主题都是更小的知识点,用好卡片盒笔记法就是在脑子里装进一个自己的维基百科,现在你明白为什么 Obsidian 的口号是帮你构建第二大脑了吗?

借助 Dataview 插件,可以从数据视图来查阅笔记,把整个笔记本当作一个数据库来使用 ,可根据需求来定制数据,比如写这篇 newsletter 时我可以查询笔记数据库中最近一周创建的笔记来决定写哪些内容。

dataview

Dataview 使用类似 SQL 的 DSL 语法,对于非程序员来说上手会稍难,感兴趣的可以查看:如何在 Obsidian 中自動彙整筆記?使用 Dataview 查詢與呈現符合條件的筆記 。

Notion 和 Obsidian 都是现在非常受欢迎的笔记系统,值得我们去学习,当然学习后更重要的是持续使用它们。

程序设计 vs 软件工程

vgod 是台湾人,在 MIT 读的计算机专业,自从他读完博士以后就很少写博客了,即便如此,我还是经常分享他写过的 「追求神乎其技的程式設計之道」 系列文章,这系列文章启发了很多台湾的软件工程师,因为网络的关系也被我发现了,其中的许多观点我都非常喜欢。

比如:

很多人都聽說過,同樣是寫程式,一個頂尖程式設計師和一個普通程式設計師之間的生產力可以有 十倍甚至百倍的差距 。這是其他行業很少見到的現象,於是不禁令人納悶,為什麼會這樣呢?

...

我後來發現,程式設計師和其他行業有個很大的不同點:一般行業只能在現有的工具上磨練自身的技術,但 程式設計師除了磨練技術外,還可以獨自創造、修改自己使用的工具;換句話說,程式設計師的能力就是在電腦上創作出更好的軟體,不但能便利他人,也同時能增進自身使用電腦的工作效率 。舉例來說,理髮師能磨練使用剪刀和設計髮型的技術,但理髮師並不知道怎麼發明及製造新的剪刀讓自己更有效率的剪頭髮;電機、化工、土木工程師要設計 IC、化學製程、建築結構,但他們得依賴電腦軟體才能設計,並且靠許多大型機器和工具才能生產,即使想提昇自身的工作效率,也不是自己一個人想做就能辦到的。但軟體工程師就不同了,我們只靠一台電腦就能工作,我們的工具是軟體,我們的產出也是軟體,我們的所依賴的一切都是軟體,只要自己願意投入心力,隨時可以修改每天使用的工具和系統讓自己更有效率的工作。 這一點可以說是程式設計師的先天優勢,也是頂尖的程式設計師和普通程式設計師的生產力差距的關鍵。

再比如:

Eat Our Own Dog Food

我發現厲害的程式設計師常有種共同特質:寫工具給自己用,解決自己日常工作碰到的問題或改善自己的工作效率。英文有句話叫 eat one’s own dog food,字面上意思是說一家公司應該要吃自己做出來的狗食,實際上是引申為一家公司應該要在內部用自己的產品解決自身的問題,才能發現真正的問題,並且說服人這東西真的很實用。Google 是奉行「吃狗食」原則的典型公司,Google 內部有一個獨立的搜尋引擎搜尋公司內部網路的資料,新技術也都能在上面先行測試;Google 內有獨立的 gmail、google docs,都在對外公開前先讓內部的人實際用上好一陣子;Google 甚至做了自己的 Linux distribution 給工程師用、自己的 compiler、自己的瀏覽器…。

...

出於「懶惰」的美德,頂尖的程式設計師工作時想的不只有產出最終產品就好,而是如何花最少力氣最少時間把產品做到最好。但這件事說來容易做來難,能不能實行往往跟程式設計師工作的系統環境有很大關係。

最近,我发现 vgod 又开始写博客了,这次他写的是 「軟體工程師的修煉與成長」 系列 ,我想必须分享给你。

  • 追求神乎其技的程式設計之道 — 2022 重編版
  • 軟體工程師的修煉與成長 (1)

我是从台湾媒体 Star Rocket 的 newsletter 中得知 vgod 开始在 medium 上写作的,所以也分享给你。

程序设计和软件工程最大的不同,我想是在于协作方面,在程序设计上我们可以有自己孜孜不倦的追求,而在开发商业化软件的时候我们又需要在各方面进行妥协,软件开发便是这样一门平衡的艺术。

希望阅读我的 newsletter 的朋友可以在 vgod 那里汲取到更多的养分。

Until next week,

lcomplete

最后更新: 1/11/26, 7:08 PM
Contributors: lcomplete
Prev
009 🌈 Newsletter Of Newsletters、海绵宝宝的智慧
Next
007 🍀 十年后重新使用 RSS 给我带来的巨变