当我在那里的时候,我想了很多关于工具的事情-机械工具、软件工具、耐用的工具和易碎的工具。阴郁的白雪覆盖的景色让我想到我们今天使用的大多数工具有多快就会过时或更换,我想到了过去几年来我一直在为自己建造的各种工具,以帮助组织我的生活。
那天晚上,我绕着SmábátahöfniníKeflvík(附近的一个小码头)走了一圈,走进酒店房间,开始写这篇帖子。
我想和大家分享一下我为什么要构建自己的工具,以及我认为我们应该如何思考如何为生活构建工具。它很长,所以这里有一个路线图。你可以随便跳来跳去。
在过去的几年里,我一直在用我自己开发、维护和部署的工具来取代我用来组织生活的所有必要的数字工具。
我在高中时制作的一款单页笔记应用程序开始时,已经成长为一系列我现在日常工作和学习所依赖的本土生产力工具。这是一个样品。
Pico,用于更多短暂的笔记和每天都会更改的任务。我把笔记分成两个应用程序(Ligature和Pico),因为它更适合我的工作流程。(稍后将详细介绍这一点。)。
米拉感谢我跟踪我认识的人,为什么他们很有趣,以及我们谈论了什么。
用于跨计算机和云备份和同步我的所有文件。Noct没有图形用户界面,只有一个命令行工具。
总而言之,这些应用程序几乎可以做我在电脑上需要做的一切事情,以保持自己的条理性。我不使用任何第三方笔记、任务管理或联系人应用程序,尽管我曾经是Simplenote和Todoist的忠实粉丝。我用过Conept、Dropbox Paper、Google Docs和Airtable,但只适用于集中在它们上面的团队。这些天,除了电子邮件和日历,我生活在我自己的工具系统中,它对我来说很好用。
我不想暗示我的工具客观上好于市场上的专业工具,如观念和Dropbox。后一种服务有更多的功能,今天甚至可能更可靠。但我觉得我的工具更适合我,因为另一个原因。
每个人的大脑运作略有不同,每个人记忆和处理信息的方式也略有不同。我认为,当我们使用适合我们大脑运作方式的工具时,我们都会以最佳状态工作。
当我们最终找到适合我们大脑的笔记应用程序或待办事项系统时,我们中的一些人会感觉到尤里卡时刻-当我们使用的工具反映了我们大脑的工作方式,以及我们想要如何在生活中传递信息时,那种顿悟就会发生。好的工具完全符合我们的工作流程,而不好的工具则不然。
当我们求助于让别人为我们构建工具时,他们构建的工具可能永远不会完全适合我们的工作流程,因为它们不是为我们的个人思想而构建的。当其他人创建供我们使用的工具时,他们要么按照自己的工作流和心理模型设计工具,要么更糟糕的是,他们为数百万人的大众市场设计工具,这些人都是以类似的方式工作和思考的。其结果是,大众市场的生产力工具不符合我们个人思维倾向的工作方式。相反,要使用这些工具,我们需要调整工作流以适应这些工具。
编写我自己的工具集的最大好处是我可以构建完全符合我的工作流的工具,而不是围绕我可用的工具构建我的工作流。这意味着这些工具可以真正成为我大脑思考和组织关于我周围世界的信息的方式的延伸。我的工具还不完美,但随着它们的成长和发展,它们只会更好地反映我的个人心理模型。
例如,我的思维与市场上的工具有一个不同之处,那就是任务/笔记的区别。
我的工作流程过去常常区分任务和笔记。任务是我可以参考、采取行动、完成,然后从我的列表中删除的行动项目。笔记是无限期相关的东西。我会做笔记,然后再回来参考很多次。一张纸条本身是不能起诉的。
但是,一旦我开始构建自己的工具,我意识到这种区别并不是我的大脑工作的方式。对我来说,在可操作、可完成的任务和纯粹的百科全书笔记之间存在巨大的灰色地带。以下是我从本周做的真实笔记中摘录的一些属于灰色地带的东西。
最近,我从“团结起来”一书中学到了一些关于如何在社区内培养领导者的非常有用的建议。我当然想在我领导的社区中的某个时候根据这些学习采取行动,但我不想让它们弄乱我的待办事项清单,因为它们不是我可以很快完成和检查的事情。我也想永远记住这些小贴士,即使是在我第一次照做之后。
我一直在集思广益,想出一个与符号数学相关的辅助项目的想法。我一直在写下我对这个项目的灵感。我不想把它塞进我的笔记里,因为这是我想很快构建的东西,但我也不想把一段段笔记塞进待办事项列表项目中。
我有一个关于未来博客帖子的想法列表,但我并没有一个“写下下一篇博客文章”的任务项目,通常我会把这些想法放在下面,因为我不会按时写作--我只是在我能写的时候才写。这些想法应该走向何方?它们是某种笔记和某种任务。
你可能会认为这些要么是非常清楚的待办事项,要么是非常清楚的笔记,这没什么。但我的感觉肯定不同,我意识到我之所以把东西分成这两个桶,是因为我的工具迫使我这么做。在我编写自己的工具之前,我有一个Todoist应用程序(Todoist)和一个笔记应用程序(Simplenote),两者之间没有任何东西。
最终,我发现了一种更好的工作方式的思维模式:我问自己,我有多需要立即采取行动。
在我看来,我学到和记下的每一件事都是我在生活中的某个时候要采取行动的。如果我读了一些我从未想过会影响我的生活方式的东西,它对我来说就没有价值了,我也不会把它写下来。有了这个洞察力,这些天,我有两个不同的笔记应用程序,而且我不使用待办事项列表应用程序。上面提到的这两个应用程序是Ligature和Pico。
一种是针对经常变化的音符。每天的任务,下周要记住的事情,甚至是与我现在正在做的工作相关的长笔记和链接。另一款应用是用来记录随时间增长的笔记,比如我在读书或看演讲时做的笔记,我的年度目标,财务规划,阅读清单和项目大纲。我的两个笔记应用程序反映了我大脑最好的工作方式-一个是我的短期工作记忆,另一个是我的长期记忆。
我使用这个系统已经有几个月了,没有感觉到需要更好的东西。它没有今天市场上一些笔记服务的疯狂功能,但它的工作方式和我的大脑一样。
构建自制工具的另一个好处是,您自己构建的工具可以随着工作流程的变化而增长和更改。因此,如果我的需求确实随着时间的推移而发生变化,我的工具可以增长以完全适应我的需要。
当我第一次开始更有条理地记录我遇到的有趣的人时,我从我的笔记应用程序中的一个文档开始。随着时间的推移,我注意到这些笔记遵循着一个模式:我写下了他们的名字和主要联系方式,我第一次见到他们的方式,他们上的学校,以及我们最后一次交谈的内容。
因此,当我构建我自己的人事管理应用程序Mira时,我围绕着我开发的确切工作流程进行了设计。当我后来意识到我也在Description字段中记录人们的Twitter用户名时,我只是给每个联系人添加了一个Twitter用户名字段。
这是我发现工作流程的典型方式。我从一个最简单的解决方案开始,并尝试学习我为自己创建的模式和技巧。然后,随着时间的推移,我会将这些模式和技巧编码到工具中。
这样,随着工作流程的发展,我的工具可以有机地增长。它们大多数时候都不会妨碍彼此,我想在我开始完全依赖自己的工具之前,这是很难理解的。
我的生产力工具,特别是我的笔记和联系人,是我生活中的承重工具。如果它们损坏或消失,我将需要很长时间和大量努力才能重建相同的工作流和工具,所以重要的是它们是可靠的,我可以依赖它们为我工作很长一段时间(以几年或几十年来衡量,而不是按季度计算)。
我以前写过很多关于所有权重要性的文章。我想要拥有我生活中最关键的部分,我想要代理这些工具如何随着时间的推移而变化。
我希望这些笔记、想法和工作流程在我作为一个人在接下来的几十年里不断成长的过程中一直伴随着我。如果非要打赌的话,我不会把太多的钱放在五年后为同样的客户和用例提供服务的公司上,比如IDEA和Airtable。也许他们会,也许不会--但是有了我自己的工具,我就有了一些额外的保证,我不会在短时间内搬走。
除了这些让我构建自己的工具的更具意识形态的原因之外,我还享受创建和托管我自己的软件的一些附带好处。其中包括。
满足。老实说,知道对我来说最重要的信息-我的日记、笔记、阅读日志-都是通过我编写的代码和我构建的界面来存储和管理的,这让我有一种很好的感觉。它只是给我一种很好的温暖的感觉,这是有价值的。
成本。我每月总共花6美元购买一台小型DigitalOcean服务器来托管我所有的个人工具,如果真的提高了价格,市场上有很多有竞争力的Linux服务器提供商。与市场上购买软件的成本相比,我喜欢低价的保证,而且如果价格确实改变了,我的工作流程也可以迁移出去,而不会改变我的工作流程。
速度。我的工具没有任何代码或图形用于入职、跟踪、分析、追加销售或我不需要的功能。我的应用程序正好有我需要的代码,让工具完成我需要它做的事情,这使得我的所有工具都很快。即使在速度较慢的连接上,我也可以毫无问题地完成工作。(您是否尝试过在3G连接上加载概念?)。
我认为,如果工具的工作方式与我们的工作方式背道而驰,那么我们很容易低估工具对我们思维的约束程度。相反,与我们的思维平行的伟大工具可以通过消除我们的心理模型和工具构建所围绕的模型之间的无形摩擦,来成倍地提高我们的创造力和生产力。
我是个极端的例子。我不认为每个人都需要走出去从头开始构建自己的生产力工具。但我确实认为,重要的是要把你用来组织生活的工具看作是你头脑和你自己的延伸,而不是用来填补你生活中空白的琐碎工具。
搜索那些以你的思维方式看待世界和你的工作的工具,并且更喜欢那些可以随着时间的推移而成长的工具,这是最适合你的方式。
我认为正是在我们的工具和我们的头脑之间的这种和谐共生中,我们才能做伟大的工作,并想象我们最好的未来。
在写这篇文章的同时,我还向Twitter询问了任何与我的个人软件套件相关的问题。其中很多都是技术性的,所以我不能在帖子里提到他们。相反,我会在这里回应他们。
我的大部分工具都在DigitalOcean上的Ubuntu服务器上,还有一小部分(静态站点)在Vercel和Surge.sh上。我过去常常用Node.js编写后端服务,但最近更喜欢Go,因为它提供了更好的操作/部署体验。我的一些应用程序,比如Ligature和Noct,都是用Ink编写的,Ink是我自己编写的一种语言,它的运行时也是用Go编写的。
在前端,我的工具使用我编写的名为Torus的Web框架。为了构建UI,我经常使用block s.css或Pap.css,这也是我自己构建的CSS库。
所有的web应用都有一个nginx反向代理,在google域名和Cloudflare上配置域名。我依靠自己的文件同步服务进行备份和冗余。
是否有您不期望能够构建替代方案的服务?
电子邮件、日历和协作工具,如Google Drive和Figma。网络浏览器可能也属于这一类,但我有一个白日梦,希望在我生命中的某个时候从头开始建造一个浏览器。
当我设计这些工具时,长寿一直在我的雷达上,我希望它们能持久。我的大多数重要工具都没有使用实验技术,其中一些构建在完全自定义的堆栈上-从编程语言到编程语言-UP都是用Ink和Torus自定义编写的。有点矫枉过正,但它确实保证了我可以轻松地维护软件至少十年,如果不是更长的话。
我唯一的硬依赖是Linux、Node.js、Go语言工具链和Web浏览器。
我的大多数工具都是Web应用程序,它们将数据存储在SQLite数据库或服务器上的纯文本文件中。但是服务器的文件存储是通过我的名为noct(Dropbox Alternative)的文件同步工具与我的其他计算机(笔记本电脑、台式机等等)同步的,所以我在任何地方都可以使用这些文件。
因为我是这些工具的唯一用户,所以我的大多数工具都在HTTP Basic身份验证和TLS之后。一些工具有额外的安全层。
我不知道,我真的没办法知道。如果非要我猜的话,大概总共至少1700个小时,时间跨度为5-6年。但是很多工作都是多余的,因为随着时间的推移,我已经重写了一些工具。
如果你喜欢这篇文章,你可能也会喜欢我的下一篇文章,它是编程环境,而不是编程语言。
我在我的时事通讯上分享这样的新帖子。如果你喜欢这个帖子,你应该考虑加入这个名单。