xdays

学习方法的反思

November 16, 2012

给自己定的近期主要的学习计划如下:
* 个人管理:时间管理《小强升职记》;知识管理《思维导图》
* Linux 基础命令总结《Linux in a nutshell》,整理成文档
* DNS 协议《Bind and DNS(第五版)》
* Web 方向《HTTP 权威指南》
* 数据库方向《高性能 MySQL(第二版)》
* Python 方向《《Python Essential Reference (4th Edition)》》

虽都在进行,但感觉不到成果,没有太多的成就感,今天反思了下其中原因。我发现我在很多情况下就是仅在学习,例如,会结合 google 和《Linux in a nutshell》的对比自己整理一份所有常用命令的索引,然后对照 man 手册一一学习;会每天晚上 12 点到 1 点看一章《HTTP 权威指南》;会一页一页读《高性能 MySQL(第二版)》;其他尚未进行。但仔细向来我除了去理解知识本身其他什么也没有做。

然而事实是,成就感来源于做成了什么。比如我虽然只用了 Python 很基础的一个 json 模块,解析调用公司管理系统的接口获取的 json 数据这么一个简单的脚本。虽然这里边没有用到什么高深的知识,却能给自己带来很大的快乐和满足感。 这就引出来一个问题,到底是深刻理解知识还是通过运用所学的知识做出一个给自己带来成就感的东西重要呢?或者举个更具体的例子,我在整理 Linux 常用命令的一个总结,我需要一个文档编写工具,于是就找到了 sphinx,这个东西很好很强大;但是连续上个周末和一个周的业余时间我都去学习 sphinx 的用法(包括 reST 用法,sphinx 一些扩展等等),至今也没完全搞明白,但是当初的整理 Linux 日常命令总结的计划却搁置了,以至于我很苦恼自己这周什么也没做出来,或者说因为我只是在接受知识,却没有什么成就感。

其实我一直坚持一个观点:一种技术,在你没有了解其全貌的情况下去用它而导致用错了然后再去修正,然后按照这个过程继续下去所花费的时间和精力要比,你一开是就下功夫看透这种技术的全貌然后一路畅通的使用它所花的时间和精力要多。优点是少走弯路,因为你已经有技术背景全貌,但是这种学习的方式有个缺点就是在漫无目的的学习过程中可能会迷茫,慢慢的放弃了。前段时间学习 git 就是一个例子,本来是想用 git 做我写的一些 Python 脚本的版本控制,结果花了一晚上学习 git,结果到现在却没有用起来。

再来看下另一种观点:先用起来(类似程序开发中的先让程序跑起来),即使用的不好甚至用错了,然后在这个过程中不断修改完善,即使修改后也没有那么完美。优点是那种立竿见影的成就感,缺点是会走弯路,会犯错误,会不完美。我今天就按找这个观点做了下,用我还没有熟练的 sphinx(仅熟悉基本的语法规则)编写了 Linux 日常命令的目录结构和第一个命令,然后用 git(仅了解寥寥几个命令)对 sphinx 文档项目做版本控制,虽很简单,但着实有点小成就感。

所以,我想以后尽量克服自己的完美主义心态,用第二种观点来学习技术,也许那才是对的。