本文主要是介绍知识的积累(转载自梦想风暴),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最初认识Darwin的时候,我还是个没毕业的新手。那时,我在公司做毕业设计,题目就是用C++对部门内已有的一套C的库进行封装。那套库就是Darwin开发的,这次封装工作也是在他的领导之下进行的。当时,我对C++有着说不清的好感,心里认定那是成为高手的必经之路,因此很乐于参加到这个工作之中。Darwin当时的C语言已经达到了相当高的水准,而对于C++了解十分有限,大概比“C with Class”高不太多,这一点从当时的讨论上可以清楚的看出来。没过多长时间,我惊奇的发现,他对于C++的理解一下子加深了许多,有许多他谈到的东西已经不是我能够一下子理解的了。又过一段时间,他开始给大家讲设计模式,而之前他对于设计模式可以说是一窍不通,因为他看的是我买来后尘封许久的那本GoF经典。我惊讶于他吸收知识的速度,不仅仅是简单的学习,而是可以深刻的理解。
C++之父在《C++程序设计语言》第一章中,谈及学习C++时提到:“你学习一个新语言的方式依赖于你已经知道些什么,还依赖于你的学习目的。”
作为一个程序员,学习是生活中无可避免的部分。在面临项目压力时,通常学习的目的都是十分明确:解决遇到的问题。这时真正起决定性作用的基本上是自己的知识积累。工作几年之后,我开始理解这一点。对于一些真正用到的新技术,大多数时候,我只是简单的翻翻文档就可以拿过来用了;对于一些理念上的东西,也可以比较快的吸收理解,并能提出自己的一些见解。其实,并不是是我比毕业前后变得更聪明,而是我比那时接触的东西更多。所谓的新技术大多来源于已有的技术,有了基本的东西,面对新技术的时候,把它与已有的知识联系起来,在脑子简单比较一些异同,就可以对这项技术的优劣有个认识,再加上项目的实践,我便知道了这项技术运用在实际的项目中能够解决什么问题,比之从前的解决方案有何差异。
以我个人的一些经历而言,知识积累的过程中,思考是非常重要的一环。孔老夫子几千年前就教导我们说:“学而不思则罔,思而不学则殆”。在这个信息爆炸的年代,每个希望自己进步的人都会面对着一大堆要学的东西,盲目的学习,而不去思考,只会让自己迷失于知识的汪洋之中。在学习的过程中,思考可以让我们把新知识和已有的知识联系起来,这样,新知识便也不在孤单,而已有的知识也常常能被催发出新的活力,二者彼此推动,加深知识的理解。
记录,是促进思考的一种方式。我经常愿意向别人推荐blog,因为我每次写blog的过程都是我对一个主题进行深入思考的过程,有意或无意。自己想明白是一回事,把它解释明白又是另外一回事。当然,独乐乐和与人乐乐还是有所差异的,一个是加深自己理解,一个是与人分享。侯捷先生曾借用过胡适先生的一句话,“发表是最好的记忆”。,也许blog不比书籍、杂志等媒体,也许我没有那么多的读者,我并不在乎这些,德不孤,必有邻,能与人分享就好。记录的结果也常常使我有案可查。我的大脑能够记得东西是有限的,许多细节都会随着时间而消逝,知道哪里可以找到比记住全部细节更加有效。《恶斗EJB》写就之后,不知道有多少次被我重新查看。记录还可以比较好的锻炼自己的表达能力,谁说程序员只擅长写代码,写文章和写代码一样,只要多练习多思考,就能达到一个不错的高度,至于再进一步提升,那就要看天分和造化了。^_^
交流,是另外一种促进思考的方式。从小我就是一个比较愿意表达自己观点的人,工作之后,受Darwin的影响,这方面表现的越加明显了。交流之中遇到不同的观点简直是一件再正常不过的事了,毕竟大家经历不同、对问题的理解不同,正是有了这些不同的观点才使得交流更加有意义。和一些朋友讨论测试驱动开发时,一个一直从事测试工作的朋友提出的观点让我们几个程序员觉得非常新鲜,而我们对测试驱动开发的讨论也改变了他对单元测试的认识。只有从不同的角度理解问题,才能把问题看得更加的全面。有条件要讨论,没有条件创造条件也要讨论,现在一些的条件使我与外界的程序员交流的机会并不多,所以,除了参与一些网上的讨论之外,我们几个关系要好的朋友也经常自发的组织起来,利用业余时间进行各种各样的交流。
知识的整理可以帮我理清胡乱的思绪。整理是一个看起来容易,却需要很大功夫才能完成的。Martin Fowler值得我们尊敬,并不是他有多么伟大的发明创造,而在于他把一些知识(重构、分析模式、企业应用架构模式等等)很好的整理出来,让后来者可以很方便的进行学习。以同样方式让程序员们敬仰的还包括整理出《设计模式》的GoF。《代码阅读方法与实践》的价值所在也并不是其中具体涉及的阅读技巧,而是其对阅读代码所需内容做的整工作。
有了整理,与之对应就是摘要的工作。为什么同样的内容,有人写了一本书,而有人用一章甚至几句话就能够把核心理念描述出来,这便是摘要的工作。荣膺第14届Jolt大奖的《测试驱动开发:使用指南》用了第二章一章的内容,把一些常用的重构手法点明。对于大多数的重构工作来说,这些内容基本够用了,而对于重构,Martin Fowler写了一本书。同样用了一章来说明重构的还有Robert Martin的《敏捷软件开发》,书中还用了一章说明了测试驱动开发。当年关于考试的教导中常有“把书读薄,再把书读厚,最后把书再次读薄”的绕口令,其理念与此大抵相同。
谈到知识整理,不由想起了信息的整理。想必许多人和我一样,硬盘上存了大量的资料。不过不知道你是否能在需要的时候,快速的找到自己所需的内容。小时候养成的习惯让我很愿意把自己的东西随便乱扔,其结果经常是要什么不见什么。最初开始搜集资料的时候也常常是信手放置,结果往往是不知道自己有了些什么,用的时候也无处可寻。后来见founder_chen的资料整理工作做得相当的到位,需要时可以很轻松的找到,便也开始逐渐整理自己的资料,分门别类的进行整理,果然效果好了许多,以致于现在许多同事找资料的时候,首先考虑上我这里来查找。
不知不觉就着这个话题写了这么多,这应该算是我所作的又一次整理吧!
这篇关于知识的积累(转载自梦想风暴)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!