摘要:老师会经常说一句话:“好记性不如烂笔头”。Leanote界面清爽干净,支持文本格式与Markdown,Markdown编辑也是所见即所得的方式。对工作日志,随时更新,随时改进,最后再进行整理,便是工作文档。
01 笔记缘起用机器处理过自然语言后,才发觉人类对语言比对数字敏感太多了,计算机能很快算出两个8位数相乘,却很难理解和分析一句简单的话。在人类发展过程中,漫漫形成的语言文字,是人类的宝贵财富。小学的时候,语文老师会经常说一句话:“好记性不如烂笔头”,强调上课必须要记笔记。那时候,迫于无奈,会在书的空白处胡乱写些自己后来都认不得的文字或者图形。
到了高中,发现记笔记还是有些好处,也被要求要写每周写一篇随笔。但自从上了大学,就又懒得记录了,又是计算机相关专业,甚至连笔都很少拿了。
真正对有用的笔记,是从工作中开始的。工作中因为要学习和处理很多东西,如果一些事情或者知识点不做记录,过不了几天就忘记了。尤其是工作内容相关的,你不记得了,别人可还记得找你要结果呢。
工作了几年时间,慢慢去翻阅以前记录的东西,发现还真有意思。甚至会发笑,笑当时居然连这个也要记录,太不可思议了。
02 笔记工具
记笔记,最简单直接也是最笨的方式,就是使用txt文件来记录,随处新建一个文件并记一些东西。时间久了,混乱会如影随形,需要的时候找不到,难以管理和更新旧的笔记,随处可见new.txt这样的文件。
找到的第一个专业工具,叫Keepnote,顾名思义,用于记录笔记。从这儿开始,发现树型结构的管理很好,一改以前记录的随性和混乱,方便分类与更新内容。后来Keepnote不更新了,放弃,找到一个Zim,和Keepnote一样,都是用Python写的,都能用于Linux环境,用了很长一段时间。
有一段时间,尝试过本地搭建一个Wiki环境Trac,也整理过一些笔记到里面面,但发现这是记录笔记中最麻烦的一个工具。它本身算是专业的协作型wiki平台,对于个人使用,比较麻烦,Wiki的语法相对于Markdown还是太复杂了。Wiki是图状结构,虽然知识也是图状结构,但一般个人使用,还是习惯树状来分类整理。
后来云笔记兴起,自己的系统也切换到Mac下,又重新寻找。找到的第一个是为知(wiz)笔记,用过很长一段时间,最后因为排版不太好看而且不支持Emacs快捷键Ctrl-K删除一行,且对Markdown支持不算好。当然,主要原因是发现了比较好用过Leanote。
Leanote界面清爽干净,支持文本格式与Markdown,Markdown编辑也是所见即所得的方式。支持Latex公式排版,另外,也支持发布博客,申请的账号自带了一个博客。Leanote本身是开源的,简单了解过Leanote的程序,服务端使用golang+mongodb环境,可以自己搭建服务端,数据安全性问题应该就不存在了。桌面客户端使用node.js的node-webkit实现的,估计也是因为node.js的特性,才使得排版出来的md格式很漂亮。
云笔记通常要满足6个版本,三个主流桌面客户端:Mac、Linux与Windows,两个主流移动版本:IOS与Android,一个网页Web版本。Leanote都支持这6个版本,因此多终端记录与同步没有问题。当然,自己平时用得多的还是Markdown写作方式,因此另外几个主流云笔记的,或者尝试过,或者听说不好用,总之没有他们的份。Leanote目前最大的缺点是,目前功能相对比较单一,很多急需要的功能都没有,比如拖动来移动笔记,导出的pdf也还不完善等。通常,写好md格式后,另外使用Macdown这个工具导出pdf或者html,效果不错。
工具是拿来用。尤其是记录技术点滴,把遇到的已经解决过的问题,记录下来,也许下次还会遇到,也不至于无从下手。从自己过去的经验中学习,常说要站在巨人的肩膀上,你的过去,便是成就你未来的巨人。
03 写作工具
开始在公司做技术分享和交流,才发现自己以前的那些对技术的记录,真是非常的宝贵,很多内容,整理和修正一下,再对周边做一些补充完善,就能形成一个不错的专题,分享出来。
分享与写作一样,类似于“教与学相长”的原理,分享和写作是教,要让自己讲出来或者写出来的东西,别人能听明白,看懂,那真是一点都马虎不得。自己理解不深刻,根本讲不清楚,也写不明白。
记录生活的点滴,花点时间整理,便可以形成生活感悟文。记录工作中的经验,花时间整理,便可以作为技术文章发出来。
或许每个人都有想要表达或者记录的时候,通常都会从博客开始。最开始用过163博客,后来朋友们都转战某空间,也就迁移过去了。最后空间越做越差,人气也基本没有了。最后又在github上搭建静态页面,这期间,倒也还写了些文章。
程序员会折腾工具,最后却忘记了初衷是写作。当然,程序员很多时间那是在折腾技术,过程当中,学了很多的配置与优化,或者一些新奇的玩法。就像最开始折腾Linux的时候,配置出了漂亮的环境,却忘记了要用Linux来做些有意义的事情。搞数据分析一样,有时会折腾各种编程语言。也许很多时候,真正需要的,只是打开一个解释器,输入想法,看结果是否满足。而此时,SQL便能满足,都不用麻烦R等专业工具。
阅读是一回事,写作是另外一回事,当你读到别人的文章中说:尽量少在程序中使用全局变量的时候,你会想,嗯,不错,知道了。但也只有当你在程序中被全局变量坑过一次后,在你自己的文章中写下:尽量少用全局变量时,你才会真正的“知道了”。
整理出来的东西,还是希望有人看,甚至希望得到反馈。
公众号很难成为写作的工具,真心写点内容,却很难传播,除了自己的圈子,无法很好的向外传播,太封闭了,而且不支持代码排版和高亮。比差太多了,上虽然技术文章不是主流,至少也是一个安静的写作的地方。正如其名,简洁的环境,书写的天堂,支持markdown,支持代码高亮,可以向专题投稿,增加传播性。
程序员都是一群思维复杂的人,因为思维不复杂,写不了程序。正如看到一句话:从心里学上讲,越是头脑简单的人越需要点缀和填充,而头脑复杂的人,则对简洁有着特殊的心理需求。
04 知识文档
要做好任何一份技术性工作,都需要涉及很多的知识,也会遇到很多的坑。如果平时经常记录自己遇到的一些问题和解决方案,哪怕只是一些想法和猜测,都会对自己日后的技术成长产生很大的影响。
很多时候,解决问题不是直线的方式,要走弯路,要起起落落甚至来来回回几个回合。人类对知识的积累应该也不是直线的方式,应该是螺旋型的上升,也许就如我们身体的DNA那漂亮的双螺旋结构一样。
知识的积累与问题的解决,很多时候,在A处遇到问题了,无法解决,转而研究B问题,但却发现,解决了B问题后,A问题原来也解决了。这过程中,尤其重要的是,记录下当时的各种想法与可能性方案,要抱着“此处不留爷,自有留爷处”的另类思想,最后证明,爷还会回来的,而且也成功绕回来了。过一段时间,你再回去总结当时的一些想法和猜测,可行的方案就出来了。
用到工作中,这便是写文档带来的好处。边做事情边记录,包括操作步骤,想法,猜测及可能的一些因素,全部记录下来。等你完成一个阶段的工作后,再回去翻阅与思考这些零乱的记录,用规范与成形一些的格式整理出来,也就成了工作文档了。
记笔记,常思考,常总结,常写作。不断重复一些简单的知识点,最后才能汇聚成复杂的技术。知识,是在一次次的重复过程中,才形成的。
踩过了坑,不思考不总结,下次遇到一样茫然。经常面试过程中,会问你踩过哪些坑,是怎么解决呢?也证明了踩过的坑越多,解决方案越好,经验自然越多。没有踩过坑,很难说有什么实战经验。
写作,是对记忆的整理,是形成知识的最好方式。文章是改出来的,知识是重复出来的。《云戒云》系列,即为自己整理知识的结果,强迫自己更深入的理解,形成技术。
工作中,尤其重要的是,把所有一切的操作与想法都记录下来,随时更新,随时改进,最后再进行整理,便是工作文档,而且非常详细。
这正是:笔记即知识,日志即文档。