每年学习一门新的语言

标签: Uncategorized | 发表时间:2011-06-26 10:16 | 作者:我是胡凯 用心阁
出处:http://www.iamhukai.com

这篇博客来自于周末参加西安Open Party(http://openparty.in/xian)的社区活动时的开放讨论,感谢在场的诸位提供给我的素材。

5年前刚加入ThoughtWorks时,有人告诉我:ThoughtWorker要每年学习一门新的语言,老实说,这句话我不是第一次听到,但在ThoughtWorks,我第一次发现有一群人真的这样作。在加入了这个群体的5年间,我学习了超过5种编程语言,那么学习新的编程语言带给了我什么?

  • 构造”T”型知识结构的横向部分,当手上有榔头时,满眼都是钉子,每一种语言背后有它面对的问题域,掌握一种语言,不足以让我们在面对问题时从容的从工具箱中找出最适合的工具。
  • 他山之石可以攻玉,即便你没有机会在项目中使用你掌握的新语言,但是完全可以借鉴它解决问题的思路。
  • 有趣,这种内在的满足感会不断驱动你。
  • 修炼,Roy说ThoughtWorker的使命之一是通过软件塑造21世纪的模范公民,在我看来,21世纪的模范公民需要保持好奇心,保持学习的热情。树立一个目标,每年驱动自己学习不仅仅是学习语言的过程,更是建立学习习惯,修炼自己心性的过程(稻盛和夫说的比我有煽动力多了

其实明白了这些好处并不能让大多数的人做成任何事情,好比减肥,能成功的人少之又少,这里我想分享一下我学习的各个阶段,也许能帮助感兴趣的人少走些弯路吧

第一个阶段、读书

最直观的学习语言的方法是买一本书来读,通过书中的一些例子和练习题来巩固知识,完善技巧,我自己从没有通过这种方法成功过。

读书的弊端,第一是慢,第二,里面有大量的知识用不到,也就忘记了,第三,难于坚持,很多关于语言的书都是大部头,甚至上千页的,我自己从没有坚持看完过一本。

第二个阶段、翻译书

因为发现了自己读书不能坚持的弱点,我就想了个办法来强制自己读书,那就是翻译书,和出版社签了约,当然不能随便放弃不翻,这样可以强迫自己把书仔仔细细的读一遍,有助于深入学习和理解。

事实的真相是,大部分的时间都被我花在校对英文和中文上了,根本没有太多的精力细细吃透书中的技术思路。

所以书最后翻译出来了,但是没有达到我学习的目标

第三个阶段、实践

那就学以致用吧,要想学习ruby,那就拿ruby作个小项目,这样有需求拉动,有重点的学习效果一定好的多。

总体来看,这个方法是要好很多,比前两个方法都要深入的多,但我也发现了另一个模式,就是虎头蛇尾,大多数以这种方式启动的小项目,根本还没做到可以用和展示的阶段就做不下去了。原因有两个:

  • 相关技术都采用最新的,导致大量的时间都花在穿刺和搭架子上了,
  • 没有反馈,没有人批评也没有人赞美,更没有意见和建议,热情是个易耗品,一两个星期一过,没有反馈,就坚持不下去了。

第四个阶段、实战

这期间我读了一本书《Rework》,中文译作《重来》(我能想到的最差的名字,译者,我怎么说你好呢?),作者是DHH,37 Signals的创始人,rails的作者。这本书里提到了一个观点,不要去想一个抽象的、似乎能够改变世界的牛X产品,事实的真想是谁也不会用它,从你和周围人的生活出发,想一个不那么牛X点子,写一个简单的软件真正改变他们的生活,或许一个改变世界的点子可以从中诞生出来,即便没有,你也至少改变了“那个人”的生活。

实战阶段和实践阶段的分别就在于具体的思路和操作手法,我不再去想一个抽象的,另我自己觉得兴奋的点子,而是观察周围人的痛苦,去了解他们的工作,找到可以用软件改进的部分,有了这个目的,在技术选型期,我更多的采用了新旧技术混合,比如scala + Spring framework而不是scala + lift,通过降低学习曲线,减少发布的周期

由于这件改进是会影响到某个人的生活的,她也会特别上心,愿意尝试,愿意给出反馈和意见,有了积极的反馈就更能激励自己向前。

最后再推荐一篇文章,微创新(Micro-Innovation)

相关 [学习 语言] 推荐:

每年学习一门新的语言

- 用心阁 - I am Hu Kai
这篇博客来自于周末参加西安Open Party(http://openparty.in/xian)的社区活动时的开放讨论,感谢在场的诸位提供给我的素材. 5年前刚加入ThoughtWorks时,有人告诉我:ThoughtWorker要每年学习一门新的语言,老实说,这句话我不是第一次听到,但在ThoughtWorks,我第一次发现有一群人真的这样作.

《学习Go语言》0.4 中文版

- way - python.cn(jobs, news)
鱼哥(https://twitter.com/#!/smallfishxy)上个月勒令我要完成 0.4 版的翻译. 之前公司重组的时候,没顾上看英文版本的更新,结果这老外不声不响的做了如此之多的改动……. 于是只好人工 diff,一条一条的对比 commit 内容. 总算是跟进到了 0.4 这个 tag.

学习C语言的教材

- 勇 - 阮一峰的网络日志
我的C语言是自学的,这些年看过不少教材. 下面,我对其中一些教材做个点评. 这是我读过最易懂的C语言教材. 虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉得累,而且它还允许免费下载. 我认为,这是C语言的首选入门教材. 下载网址:http://prof.beuth-hochschule.de/scheffler/lehre/programmieren-in-c/.

repl.it支持学习15+语言

- 小班 - Solidot
repl.it是一个学习程序语言的在线交互式环境. 它支持16种程序语言,包括了QBasic、Forth、Ruby、Scheme、Python、Lua、JavaScript等. 用户可以直接在浏览器上学习和体验这些语言. 在线编辑器的内容和会话可以保存和分享,可以通过创建的链接重复执行. repl.it支持Android,部分支持iOS.

学习C语言的教材

- 博 - 博客园新闻频道
日期: 2011 年 9 月 18 日. 我的C语言是自学的,这些年看过不少教材. 下面,我对其中一些教材做个点评. 这是我读过最易懂的C语言教材. 虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉得累,而且它还允许免费下载. 我认为,这是C语言的首选入门教材. 下载网址:http://prof.beuth-hochschule.de/scheffler/lehre/programmieren-in-c/.

《学习Go语言》0.4 中文版

- j - Some reminiscences, some memories
鱼哥(https://twitter.com/#!/smallfishxy)上个月勒令我要完成 0.4 版的翻译. 之前公司重组的时候,没顾上看英文版本的更新,结果这老外不声不响的做了如此之多的改动……. 于是只好人工 diff,一条一条的对比 commit 内容. 总算是跟进到了 0.4 这个 tag.

为什么要学习C语言

- - Solidot
O'Reilly采访了《Head First C》一书的联合作者David Griffiths,谈论了为什么今天还要学C语言:C至今仍然流行的原因是它无处不在,靠近硬件,被用于开发其它语言和操作系统;通过学习C,可从系统级上更好的理解程序的工作原理;大学应该继续教C语言,它是一种非常重要的基础性语言,要求完全理解整个技术栈;学会C后学生将能更深入的理解计算机.

如何快速学习一门语言

- - 煎蛋
# lmliu59 童鞋投递:. 模拟显示,如果你假设每件东西有且只有一个名字和它相联系,那么你就能快速的掌握这个词的意思. 每个小屁孩每天大约能学会10个词,但是大人们还没有弄清楚小朋友们开了什么挂来达到如此快的学习速度 (你们当年也不是小孩么). 为此一个专业研究团队模拟了词语学习的过程,并揭示了一个简单有效的学习策略,那就是在想象中否定同义词的存在.

编程语言教程书该怎么写: 向K&R学习!

- kapster - 为之漫笔
原文地址:Lax Language Tutorials. 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁. 从这些年的评审经验来看,这些语言类教程的写得都不错,但除此之外,少有亮点. 换句话来说,这些书都很严谨、很精密,如果读者有足够的定力,通过它们掌握一门语言的编程技术还是不成问题的.

学习不同编程语言的重要性

- 蒋冰 - 伯乐在线 -博客
  注:本文转载自flyfy1的博文;.   引子:今天选了下学期要学的一门课,叫做编程语言. 据说是两周学习一门新的语言,很有挑战性. 以及这门课的课本是MIT出的《Concepts, Techniques, and Models of Computer Programming》(一下简称《CTMOCP》),今天看了一部分它的前言部分,联系我以前读过的《黑客与画家》里面有两章对编程语言的讨论,发现学习不同的编程语言还是相当有必要的.