有意思的冰书挑战

在微博上被 @MarchLiu 老湿点名了冰书挑战,我正好可以仔细的想想这些对我影响大的书

  • 晃晃悠悠,http://book.douban.com/subject/1047851/
  • 大教堂和集市,http://book.douban.com/subject/25881855/
  • Unix 编程艺术,http://book.douban.com/subject/1467587/
  • 失控,http://book.douban.com/subject/5375620/
  • The Lean Startup,http://book.douban.com/subject/6779576/
  • Doom 启示录,http://book.douban.com/subject/1152971/
  • 黑客与画家,http://book.douban.com/subject/6021440/
  • 软件随想录,http://book.douban.com/subject/4163938/
  • 激荡三十年,http://book.douban.com/subject/1970428/
  • 异类,http://book.douban.com/subject/3688489/
  • 理解媒介,http://book.douban.com/subject/6391212/

这11本书,都是在我阅读之后都好像打开了另一种思维方式的书。基本上是按照时间顺序排列的。

另外,还有一篇文章对我影响很大,就是《提问的智慧》

现在获取知识的主要途径是 Google,但是这都是定向的知识获取,而非定向的基本上只能是从跨界的人那里听来的书。

下一步想读的书主要集中在一些人文历史和典籍方面。

其实非常想有一个互联网产品,能够让我知道我欣赏的那些人,他们正在阅读什么,不仅仅是书。

Tweet about this on TwitterShare on FacebookShare on RedditShare on Google+Email this to someone

在构建中学习

先给大家说一个真实的故事: 有一个少年(也许是中年吧)在10年就购置了全套的水果设备,信誓旦旦的说要进行爱疯开发。他也尝试着喊出了『你好世界』,也真的把这个口号部署在了机器上。
然后,然后就没有然后了。
虽然我们知道有很多的因素造成了到现在世界都没末日的时候他还没能拿出一款应用,但是其中一个不可忽略的因素就是对未知的知识领域的恐惧,这种恐惧让他始终也没能认真的跨出有效的第一步。

嗯,对,那个骚年就是我。我就是学习了三年的iOS开发,也没学会的那个白痴。
与其说没学会[1],倒不如说从来没真正的踏出那一步。我们知道,想跨进一个成体系的知识领域是比较困难的,尤其是第一步。如果我们无法保持对这个知识的足够频繁的接触,则知识无法沉积,不但不会学到新的内容,而且还容易把已经学过的很多内容遗忘。在接触中,也不能是眉毛胡子一把抓,否则涉猎的知识点太广切分散则毫无关联可言,也是意义不大的。我们要的是找到河对岸的一条路,而不是踩过岸边的所有碎石。

一般要跨入一个全新的领域,我觉得有两个方法。一个是找到足够多的时间,全面的去学习这个领域的点滴;另一个方法是使用这个领域的知识去完成某一个目标,在达成目标的同时学习领域知识。 第一种方法学的更加的扎实,而且在实践中会给出『对的』解决方案,坏处是时间长,而且在学习的过程中没有足够的阶段性的产出作为对自己的刺激,更适合在学校、实验室等地方进行。 第二种方式会不断的有阶段性产出,不断的刺激学习者让学习者能够持续的保持对领域的渴望。当然坏处也是很明显的,就是由于一路突进式的学习,导致很多的实现方式往往是『凑合』出来的一些解决方法,而且容易留下各种隐患(这种隐患完全因为对系统的『无知』而无法避免)。

其实我们几乎每次在这种时候都是按照第二种方式去进入一个全新的知识领域的,不管是学习一个新的技术,还是新加入一个公司/项目。我们都或主动或被动的要求在一个给定的时间点去完成什么目标,也就是我想说的『在构建中学习』。

我们应该如何跨出第一步,并且在构建中学习呢?

  1. 给定一个目标,让自己去完成一个达到足够好(Good Enough)质量的任务。
    很多时候并没有走出第一步是因为我们还没有一个明确的目标,这个目标不用很大,但是要明确、可达、有监督。
    明确:意味着这个目标是没有歧义的去完成一个明确的任务,而且是可以度量的
    可达:意味着这个目标不能是高不可攀的,一定要在一个段时间内可以完成
    有监督:这个至少对我很重要,我经常是下定决心然后不了了之,其实就是找某种方法监督自己一定把这个任务完成比如我一直想要开始 Mac/iOS 的开发,但是一直没能展开下去。直到我参与了我的一个小兄弟 @lovekonakona 发起了一个Mac下番茄工作法的应用 TomaTodo 。在这期间,我们对目标进行了上述的分析
    明确:只做一个可以计时的功能,工作25分钟,休息5分钟,到时间给提醒,工作中可以选择是否有滴答声。
    可达:这个任务是可以实现的,因为总的工作量就三个大点,计时、Notification、播放声音
    有监督:我俩相互推荐开发,互为监督。
  2. 利用已有的知识去推测可能隐藏的细节。
    虽然是进入一个新的知识体系,但是也会有一些方面和我们已经掌握的知识能够相互映射。我们可以利用自己的知识储备去快速的理解新的知识。在这过程中应该不断的去仔细体会一些细节的地方,去想为什么这些地方要这样设计,因为往往细节都是全局的延伸,而且是初期最容易接触到的。
    在这里要求我们就是敏感一些,多问一个为什么。在 TomaTodo 的开发过程中,遇到了 NSRunLoop、NSTimer、Notification Center 等 OS X SDK 的概念,也遇到了比如什么叫做 Target,怎么做一个应用的发布等基础概念。
    每个点想要『凑合』的完成并不难,但是明白了一些变化,为什么这样设计等问题工作量就会大好几倍甚至一个数量级。往往我们是被这些庞杂的概念吓倒或者干脆跳过去,但是想深入的研究 Mac OS X 开发,这些就必须下功夫仔细的研读相关文档。
  3. 寻找最佳实践,并给定一个新目标,重复1
    在经过一些思考和熟悉之后,我们往往会发现之前的实现方式其实是比较麻烦、性价比低甚至是南辕北辙的一种方式。那么就去优化这个方案,让她更加的『合理』。同时一定会有新的需求等出现,让我们再重复1。这期间,我们对代码进行了多次小规模重构,其实都是因为之前对一些概念的理解偏差或者是实现的并不合理,当然就更别提什么『优雅』了。然后我们定了新的功能点,继续回到第一步开始边构建边学习。

如此往复,我们会在一段时间内推开新知识的一个门缝。不断的修炼自己,就能达到一个『术』的层面,可以开始利用新知识工作了。但是想要达到『道』的层面,还需要大量的实践和经验了。而且根据自己的情况,也可以给自己一些稍微挑战的任务,这样进步的也会快一些。

 

注: [1],学会是指能够掌握这个领域的知识,并做到对一些问题的举一反三。而不仅仅是能够理解和看明白一些专业内的东西。

Tweet about this on TwitterShare on FacebookShare on RedditShare on Google+Email this to someone

2013

  • 体重增加20斤,10斤为及格
  • 在豆瓣做成一件事儿
  • 在豆瓣外做成一件事儿
  • 给自己买一辆车,至少是能跑高速的
  • 运营好《背包电台》,目标是2013年度新播客
  • 看25本书,平均每两周一本
    • 经济类
    • 历史类
    • 新闻传播类
  • 看50部电影,平均每周一部
  • 去一个以前没去过的地方
  • 每周至少1小时德州
    • 目标从新浪打到PS
  • 坚持体育锻炼,每周至少一次足球或者游泳
  • 每两周坚持写一篇文章
  • 生活有规律,让家里不像一个垃圾宿舍
Tweet about this on TwitterShare on FacebookShare on RedditShare on Google+Email this to someone

2011最后一天

今天是2011的最后一天,今年要总结的很多,稍后给出吧。只想说一句,今年结婚是我人生到现在最大的事情,宝宝我爱你。

Tweet about this on TwitterShare on FacebookShare on RedditShare on Google+Email this to someone