分类:
2007-03-07 20:00:06
不同技术水平的人要学习不同的东西。初学者需要明确的,彼此孤立的简单规则,过多的关联会导致他们概念混乱。然而,较高水平实践者不依据规则工作,他们有大局观,从整体着眼。
另外,不同的人也有不同的学习方式。有的人喜欢读,有的人喜欢听,还有的人喜欢通过实际操作学习。无论如何,在学习以前,先要确定学习什么。
为了让学习有明确的目标,先考虑三个问题
需要学习什么?
如何进行学习?
如何知道学习已经完成?
让我们详细地考察每一个问题。
这个问题,第一眼看来很容易回答,实际上却不那么简单。如果项目中要使用新的语言或环境,这个问题的答案确实相当简单。但是,大多情况下,你真正需要学习的东西不是那么显而易见。
发生了什么问题? 哪里还有缺陷? 你做了哪些可能错误的猜测? 你的知识还有哪些欠缺? 除了知识和技术这种明显的东西,考虑一下不明显的东西,例如:“在高负载下, 一个运行的系统会怎样?”。把要学习的东西做一个列表。
好的,你现在已经有了一个列表。对列表中的每一个专题要决定如何去学习。除非你故意挑选新的领域,否则对每个专题,你应该有或多或少的经验。根据你经验的多少,每个专题分别要分别对待。
对你不熟悉的专题,要从基础开始,你需要简单的规则,有详细操作步骤的说明书。如果你有了较多的经验,你需要概括性的描述。例如,如果你已经熟悉多种编程语言,对于一个新编程语言,你只需要简单地看看语法和关键的语言特性,就可以直接开始编程了。
通过何种方式学的最好? 如果阅读是适合你的方式,就去买一些书。如果听是适合你的方式,你应该上网看看,有没有相关的讲座,讨论会或其他的学习机会。
最后,如何知道你已经学好了。在大多情况下,要成为一个高效率者,你需要知道如何确定已经完成了。只制定一个简单的目标:“要学习什么”,这是不够的。例如,如果你学习Ruby语言,你应该制定一个更具体的目标,就像“使用ruby编写一个基于web的应用程序,管理你的个人事务”。另外还要严格制定一个期限,例如,第一天要就写出"hello world"程序,一个星期内完成一个小规模的程序并单元测试,而在一个月内完成一个较大的web应用。
当到达一个里程碑,重新考虑你的进度。虽然学无止境,你永远不能真正学完,但是如果你能制定一些具体的目标并且努力去做,达到目标后就意味着获得了一个更好的开端。
有计划的情况下,你能够学得更多。你的技术提高得更快,你的职业生涯也发展得更好。
《The Pragmatic Programmer》的作者。