程序员知识管理

前言

本文从一个程序员的视角来讨论知识管理,包括以下几个方面:

  • 什么是知识管理
  • 为什么要管理知识
  • 如何管理知识

什么是知识管理

个人知识管理(Personal Knowledge Management):一般指个人通过工具建立知识体系并不断完善,进行知识的收集、消化吸收和创新的过程。

知识管理的范围很广,一般的知识管理方法可以参考这篇文章 个人知识管理的方法

为什么要管理知识

计算机行业的一个特点是新技术更新特别快,意味着程序员需要不停地学习,才能跟上行业的发展。所以,知识管理对程序员非常重要。有意识,成体系地管理知识能够:

  • 更有效地学习新的知识。
    如果我们已经建立好一个技术知识体系,新的技术也只是在其他技术上建立起来的,有了坚实基础,学习新技术就会更有效。
  • 更好地掌握知识。
    使用合适的工具,正确的方法,可以更好地掌握知识,让知识凝固在脑海,而不是流走。
  • 节约时间成本。
    程序员经常遇到同样的问题,例如说部署开发环境的时候,如果有把解决方案记录下来,就能省去重新解决问题的时间。

如何管理知识

程序员的知识获取途径大部分来自于搜索引擎(谷歌可以提高搜索效率)和技术书籍,这与其他行业不同。主要原因是技术知识一个主要来源是互联网,例如说技术博客,技术文档等。因此,程序员的知识管理主要围绕互联网展开(并不意味着书籍就不重要)。

我把程序员的知识管理分为三个过程:

  • 知识积累
  • 碎片整理
  • 思考加工

知识积累

想想我们习以为常的知识积累方式有哪些?也许记笔记是我们最常用的一种。对于程序员来说,用笔记录笔记并不现实,我刚学 C++ 的时候就是把语法记在笔记上。实际上,这种做法是很低效的。更有效的方法是用笔记软件帮我们记录文章。例如说,印象笔记,有道笔记等。

一开始我看到好的技术文章时,都是加书签存起来。后面发现这样不能离线访问,而且链接可能会失效。后来用上了笔记软件,于是我可以把文章保存到笔记中,随时可以翻出来看。可以说,笔记软件给知识积累带来了极大方便,同时可以分类管理不同的知识。

知识积累难在养成积累的习惯。以前我解决某个问题,谷歌了很久找到一篇文章解决了问题。解决之后并没有记录下来,结果下一次遇到同样问题,我又浪费了很多时间搜索解决方法。重复多次之后,我意识到这是个严重的问题。所以逐渐养成了保存各种文章的习惯。这些网上积累下来的文章,成为了我知识体系的土壤。

现在开始,使用笔记软件分门别类地保存网上看到的文章,这里要着重强调一下分类的重要性,好的分类可以节省你以后重新检索文章的时间,不要把时间浪费在不必要的劳动上。笔记软件一般都会提供浏览器插件,保存起来是很方便的。

碎片整理

我自己经常遇到这样的情况:要用到某个 Linux 命令的时候,经常大费周章地去搜索。有人说直接查 man 手册不是很快吗?确实查 man 手册比查搜索引擎要快,但是有两个问题:一是看了 man 手册的命令语法,我还得试试看;二是如果我不知道命令的名字怎么查 man。所以,最快的方法不是搜索引擎,也不是 man 手册,而是个人 wiki。

与大家平常所知的 wiki 不同,个人 wiki 主要是用来记录知识碎片的,例如说:某个常用命令的语法,特定的软件配置等等。如果还是不理解,可以看看我的个人 Wiki。这些知识碎片是我们初步消化的知识,只不过因为太过碎片,不能够组成完整的知识体系。很多人以为把看到的文章保存到自己的笔记里面,就有一种已经掌握它的错觉,结果保存了成千上百的文章,却一篇都没认真看完。别人的文章是他的知识沉淀,并不是自己的。随时把文章中的精华提取整理到 wiki,才能初步消化知识,为后面的思考加工做准备。

有人会问为什么不用笔记软件记录这些碎片化的知识呢?用 wiki 当然是有理由的:

  1. 笔记软件保存的主要是知识原料。我们从网上保存别人的文章到笔记,存下来的知识是别人的,你只是存下来而已,还没经过消化。我们上面把笔记软件定义为知识的仓库,如果把初步消化后的知识也存在那里,会造成一定的混乱。当然你一定要这么做也可以,但我有分层的思维定势,这算是职业病吧。
  2. wiki 是随处可访问的。wiki 发布在互联网上,我们可以随时随地访问它。
  3. wiki 是分享的。任何人都可以访问你的 wiki,分享自己的知识何乐而不为呢?

那么如何制作自己的 wiki 呢?我自己用的是 Simiki,具体用法查看 Simiki-个人Wiki写作。发布到互联网我用的是 Github Page,具体操作自行搜索。

思考加工

写博客是最好的思考加工知识的方法。当年我也是被刘未鹏的 为什么你应该(从现在开始就)写博客 和 书写是为了更好的思考 给带入坑的。写博客的好处我就不提了,看上面两篇文章就够洗脑了。下面我着重谈谈如何写好博客的一点个人经验。

  1. 博客少写纯操作指南类的文章。网上大部分博客写的都是纯操作指南类的文章,例如,如何搭建 LAMP 之类,可能作者自己都不清楚为什么要这么做。不是说纯操作指南类的文章不好,相反我觉得这种文章很重要,只是它的位置不对。它应该放在 wiki 中,因为纯操作指南类的文章只是描述步骤,关注点是怎么做,而不是为什么。写博客的关注点应该在为什么,讲清楚为什么要这么做。另外不要钻牛角尖,我说的是纯操作指南,不要以为只要是搭建环境之类的文章都不能写,这里的“纯”代表只给步骤,不提背后的原理。其实写得好的操作指南应该力求让读者知其然,知其所以然。
  2. 定期写文章。 万事开头难,动笔开始写作很难,一旦开始就停不下来了。养成定期写文章的习惯,至少确保一个月一篇的节奏。
  3. 自荐文章到各个技术头条。例如说:伯乐头条,开发者头条,极客头条等,有读者才有动力,同时也是保证自己写好文章的监督。
  4. 写博客的工具。我自己用的是托管在 Github Page 的 Hexo 静态博客。搭建教程见 用hexo搭建github博客。如果你有服务器的话,可以试试 wordpress,ghost 之类的博客软件。
  5. 把无法加工的知识写到 Wiki。例如说:git 的一些配置和用法,这些内容在官方文档都能找到,写在博客也只是搬运工,除非你有新的理解。

总结

以上是我摸打滚爬两年多积累的经验之谈,如果你有好的经验欢迎留言交流。一开始我是在 CSDN 写博客,只不过走了不少弯路,后来折腾 个人博客,最后又开了 个人 Wiki。逐渐形成了自己的知识管理方法。最后总结一下:

  1. 知识积累:使用笔记软件保存好的文章,积累知识。
  2. 碎片整理:在个人 wiki 上记录初步消化的知识碎片。
  3. 思考加工:对存在笔记和 wiki 中知识进行思考加工后写在博客。

以上讲的是如何在互联网中学习积累,但是千万不要忽视了看书这一重要方法,书中的知识是成体系的,知识密度高,网上的文章良莠不齐,不成体系,比较碎片化。合理分配时间看书和上网学习是很重要的。

参考:

http://blog.jobbole.com/101321/

个人体会: 只要安装.net 3.5即可使用,免安装,支持代码高亮显示,搜索快速,用过一定会喜欢,目前发现最好的个人知识管理软件.该版本是目前最新版本. PKM2的优点:6 条推荐理由 ① 基于知识管理思想。 真正的好软件不仅需要功能、性能,更需要正确的思想指导。PKM2 在这方面很明显,打开软件主页,你的第一印象是知识管理,而不是软件工具。除了主页上把“知识管理的理论与实践”的随机文章置于 PKM2 之前介绍,右侧栏的链接第一项也是 设计思想。有思想还体现在下面良好的结构化。 ② 异常清晰的结构化。 PKM2 不仅绿色(绝对绿色)免费,还是我见过的最清晰、最结构化的软件。这一点直接提升了我对作者的信任度,对软件的安全性的信任度。软件的良好结构化,体现在安装目录、数据存储格式、数据存放目录三个方面,详见下文的“结构化”介绍。 ③ 非常稳定。 知识管理或资料管理软件,最重要的品质就是稳定。我相信 PKM2 的稳定性。首先,soberGGG 判定作者虽不是专业出身,但编程水平高且严谨;其次,PKM2 是作者写来自用的,经过几年使用(资料库不算附件达几百MB)的考验,才与大家分享的;最后,我认为良好的结构也能保证数据稳定。 ④ 导入文档速度极快。 xbeta 测试过大量文件导入,发现 PKM2 比mybase,websaver, treedbnotes 要快很多。我测试过一个 sap 项目的所有文档(大量巨型doc,xls,约几百MB)导入,它非常流畅。并且导入时的很多设定也比较智能。 ⑤ 听取意见,快速更新。 看软件的更新历史 就可以发现,最近3次更新是:2008年8月18日,11日,7日。作为业余作品,我们不能要求作者长期如此。但由此可以看到,作者对 PKM2 的兴趣和投入程度。另外,更新快,是因为作者能非常迅速地吸收读者反馈,进行改进。按 soberGGG的说法:“免费软件,比付费用户更高的待遇;早上提的要求,晚上作者就把程序改进了。” ⑥主观信任。 对软件本身和作者的信任度,会直接影响软件选择。PKM2 的软件界面、设计思想、主页风格、论坛发言,或许称不上专业,但给了我较多信任感。最让人感动的是,PKM2 把同类软件的链接放到网站上。这与一些软件恶意抨击对手,或严禁讨论竞争软件的做法真是天壤之别。此外,soberGGG 转述了他和作者的沟通交流,也增加了我对作者及其作品的信任度。之所以把此条列为最后,不是因为它不重要,恰恰相反,这是终极理由。 基于上述特点,我认为:如果真要选定一款软件,把所有的文档(doc, xls, zip, 图片)放入其中,再加上树状笔记、全文搜索的话,我会第一推荐 PKM2。 摘自: https://xbeta.info/pkm2.htm
前言: 这是本人开发的个人知识管理软件,特别适合需要阅读大量pdf\word\mht\txt等格式文献的科研人员,有效提高个人知识管理能力,减轻记忆压力。因为这几年来都没有时间开发和维护,所以现在开源,希望有人能发扬光大。由于时间关系,没有很好整理文档,而且不是最新版,需要的请联系。本人曾参与Sourceforge的latex2rtf项目,在知识管理方面具有独创见解,希望大家能共同探讨,促进我国科研人员的个人知识管理水平。 本软件综合了Tag2Find、Leapfrog Tag等Tag管理软件的优点,同时克服了这类软件速度奇慢的缺点,具有Everything一样的即时搜索性能。所以叫Tagging-Taggie。 大致工作流程: ------------------------------------------------------------ 1. 启动Tagging软件,此时后台会运行一些针对常用阅读软件开发的AutoHotkey脚本(可以自定义); 2. 在你熟悉的阅读软件中(例如Acrobat Adobe、Pdf Xchange Viewer, Office Word等里面)按下快捷键 Ctrl+`,将弹出一个迷你窗口(叫Taggie),可以输入各类标签(也可以从常用词中选择,如文章类型,重要性),同时显示以前的关键词,所有标签和当前页码等信息会自动保存到数据库中。 如果按下快捷键 Alt+`,则不弹出任何窗口,但是数据库中将记录此文件的标题,当前选中的文字前20个字等信息,这样方便地保存了您的访问记录,而且不受软件的限制。 3. 打开Tagging主界面(类似Everything),可以一边打字输入一边获得检索结果,同时有最近浏览记录、访问最多记录、最常用Tag等信息。 注:上述快捷键可以自定义,例如设置为F1是最轻松的。 背景知识: ----------------------------------------------------------- 一般来说,我们阅读科技文献时,希望随时快速记下带有自己思维方式的Tag,比如这篇文章是欧洲某国的,这一页很重要,这篇文章很重要,这篇文章是90年代的,这篇文章是某公司或某大学的,这是会议文章/期刊文章/技术报告/国际标准等等。但是如果采用重命名文件的方法(适用于Tag较短的情况),就会疲于应付。 如果你是研究生或者科研工作者,那么自然需要阅读大量的文献,采用其它知识管理软件都需要大量的鼠标和键盘动作,同样会疲于应付。 换句话说,采用文件夹管理只是实现了文件的树状分类,但是一篇文献在每个人脑海里面还有特殊的标签,只有采用标签和树状分类才能保证我们的每一篇文献都能快速找到。 采用本软件,你就可以从各种蛛丝马迹中找到你曾经阅读过的文献。 工作机理 ------------------------------------------------------- 1. Taggie会自动获得当前文件的特定属性,例如文件创建日期、pdf的页数、已有关键词等,并根据这些信息为该文件创建一个UUID.lnk,如果开启了Distributed Link Tracking Client服务,在本地计算机你可以随意重命名或者移动该文件,以后用Tagging搜索Tag时都可以找到该文件。 2. 当前版本用到的数据库其实就是类似csv或者xls的文本文件,你也可以通过OneNote接口把数据保存到One文件里面去,这样可以在OneNote里面补充注释,管理起来更加富有层次。 细节和讨论: ---------------------------------------------------------- 1. 多个标签数据库的同步和合并; 可以为不同电脑指定一个特定的数据库名字,在Tagging里面可以勾选要搜索的数据库,一般不用考虑数据同步。但是最好能随时把个人的数据库上传到快盘之类的地方,或者用Groove同步,实现团队成员的知识管理。 2. 采用Symbolic link的方式与采用快捷方式的对比。 还没有测试。 3. 。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值