学东西容易。化为己有难。
我发现自己在最近的几个项目中偷窃了其它项目的思想。当然,并不是真正的“偷”,而是浏览和学习你欣赏的项目和开发者,从中窃取思想。诸如设计模式,重构方法等。Chris是如何处理hub里的命令行参数的?shell脚本和rvm上的Ruby是如何进行韦恩转化的?
当你遇到问题,有点难度、需要你动一下脑子时,你要问“嗨,我怎么实现这个呢?”,这是个不错的问题入手点。
一旦你遇到这种问题,当然,你可以在Google上搜索出一篇文章,找到方案。但如果你从别人哪里“偷”来,你会收获两点:
- 你的理解和那个特别的项目之间建立了思想上的连接。
- 你“拥有”了那个思想。
“拥有”你偷来的东西是一种潜移默化的过程,但你可以想象出:你花大量的时间去理解这些思想,你把它应用到解决自己的问题里。这种思想上的过程是很有满足感的。突然灵光一闪,你开始明白为什么作者要重构这个方法,为什么他们需要一个辅助类了。
不要误解;能够自己创造东西当然是最好。这是学习知识达到了另外一种完全不同的级别,大多数情况下都需要我们这样。但有时,从他人哪里学习优秀的经验是一种最快的启蒙方式——不是为了要解决你手头上的问题,而是要本质上理解其中的精髓。
观察别人是如何解决你的问题的,要自己能够理解其中体现的思想,按照自己的观点重新塑造它,让这思想成为“你的”思想,你把它装在自己的脑袋里,以备下一个项目中使用。这也就是“学习”这个词的另一种说法,但就在我想到这种想象的、异样的说法时——哦,这正是几个月前在另外一个项目中从Homebrew哪里偷到的继承策略吗 —— 我接受知识的能力提高了。
一旦你对知识的吸收消化达到了这种水平,那这些外来的思想就成为了你脑海里捻之即来的自有思想了。
[英文出处]:Steal the Code