`
chshevo
  • 浏览: 9378 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

掌握新技术的方法

 
阅读更多
转自:http://blog.csdn.net/oatnem/article/details/4519365

   技术发展日新月异,工程实践中,免不了要时常学习新的技术。对于搞电子和IT这行的同学们来说,要学的新技术通常包括编程语言,开发环境/框架,处理器,新的辅助工具等等。这里我指的技术,限定在工具层面,不包括业务层面。业务层面的我更愿意称之为理论,比如搞电信的需要学习通信理论,搞信号处理的需要学习信号处理理论。理论学习的方法和技术学习的方法有所不同,这篇文章不提。

    学习新技术,我觉得容易走进两个误区。一是只求速成,流于肤浅 。这样可能会很快上手,但是作品往往质量较差,漏洞百出,返工频繁,不易维护。总的来看效率不高。二是前期准备过度,疏于实战 。这是上一个误区的反面极端,就是总害怕学的还不到位,总想准备异常充分了之后再开干。这样脱离实战,其实前期的学习效率低,而且学的也不扎实。

    读书和工作的这几年,我也学习了一些新技术,有了一些自己的体会。这里想写一写我系统地学习一门新技术的方法。所谓系统地学习,就是指有一定的时间和条件的前提下,对一门技术进行的由浅入深,比较全面的学习,最终达到基本掌握,灵活运用的水平。而不是临时救火,网上找些速成材料ctrl c v的那种学习。其实后面那种速成学习方法有时也会用到,也是有用的。我写的都是大白话,因为都是我的实际经验总结,所以是大白话。

一,找一些概述、综述性质的资料,对新技术有个感性的认识

    先知道自己要学的究竟是个什么东西。这一步看似无关紧要,其实对提高后面的学习效率非常重要,做得好往往能使后面的学习事半功倍。因为在最初,我们对于要学的东西处于一个“非知” 的状态。人的认识有三个阶段:非知-未知-已知 ,简单地说,“非知”就是不知道自己不知道什么,“未知”就是知道自己不知道什么。看概述资料,就是要快速地突破“非知”这个阶段,尽快来到“未知”的阶段,为下面从“未知”到“已知 ”的道路打好基础。

    这一步花的时间不多,少则一小时,多则一两天即可。得到的收获却很大,你会知道这门技术的历史渊源,核心要点,优劣之处,相似技术,未来发展。更重要的是,你还能知道很多关于这门技术的资料来源,比如wikipedia 或answers 上,它的技术词条就会给出很多相关的链接,推荐一些优秀的著作,这些资料往往是以后学习的重要参考。

二,搭建开发环境

    工欲善其事,必先利其器。做电子和IT的少不了开发环境,无论是开发软件,FPGA,matlab,PCB,嵌入式CPU,都需要有一套工具链或者说开发环境。我们应该尽快把它搭建起来,跑一个HelloWorld,这样才能放心进行下面的学习。

    有时候开发环境的搭建很容易,双击setup,然后等待就好了。有时候很痛苦,比如用一些开源工具链的时候,因为往往各个工具包是独立安装的,相互之间又有依赖性,各种设置又比较灵活复杂。和硬件相关的开发环境,往往还需要解决硬件上的bug或不恰当的配置。总之,开发环境不搭建好,是不能安心地进行下一步的学习的。HelloWorld跑通,方解后顾之忧。

三,学习两类参考资料,边学边练

    这时可以开始一个按部就班的学习过程。有两类参考资料是需要的,一类当然是随开发环境自带的文档,对于软件框架如 MFC、.NET、Qt、JAVA之类的来说,就是函数/库的文档了,比如msdn;对于CPU、各种芯片来说,就是datasheet或user manual、 app manual之类的文档了。这类资料,主要用做参考求证找例子。

    另一类是教材。有的同学可能觉得不需要教材,看文档就够了,我觉得教材还是有用的。因为教材和文档的编排是不一样的,导致他们的用途不同----教材是用来深入浅出地学习的,文档是用来随时查阅的。老老实实学习一本好的教材,会比自己摸索省力的多,会少走很多弯路。请相信,一本好教材 的作者对这门技术的理解,是远远在一个初学者之上的,即便这个初学者很强。

    在教材的选择方面,我比较倾向于国外的教材,因为质量有保证。对于一些很老的技术,国内也是有不错的教材的,新技术就难说了。

    在教材语言的选择方面,我倾向于最好有一本中文的。英文好的同学可能要bs我了,确实我英文一般,欢迎bs。我的观点是:你英文再好也没你中文好吧?对我们来说,中英文阅读的差距主要体现在速读上,就是快速把握一大段文字的意思,快速浏览,快速吸收。坦诚地说,我英文速读的能力比中文差的不是一星半点。中文书一眼扫过去,几秒钟就知道这一页讲的要点是什么,如果是英文,我做不到,只能一句一句看。当然,对于精读而言,两者的差距不大,而且理解技术花的时间往往比理解语言本身花的时间长。所以,我觉得要有一本中文的用于启蒙,浏览。如果觉得不过瘾,再来英文原著细读,慢慢体会。(我承认书架上全是英文原版比较能蒙人)。如果要学的技术实在找不到什么像样的中文教材,只看英文当然也是没问题的,我有时候也就是硬着头皮看英文的,虽然慢点,也能学会。

    学习教材的过程中,细节问题可以参考开发文档。有了开发环境,我们能够随时做实验,边学边练,这样才能学的牢。

    这一步需要注意的是,不要等把教材都学完了才去进行下一步!!! 一般教材都会由浅入深地展开,我们只需要把前几章的概述和基本技术看完,最多再翻一翻后几章讲的我们马上可能会用到的高级技术,就完全可以、也完全应该进行实战了。没学的不要紧,以后再进行螺旋式学习。这就好比汽车换档,换的太晚就要拖档了。

四,开始干活

    准备的差不多了,该上路了。不要怕还没完全掌握,不会的还可以随时学嘛,又不是学校里闭卷考试。赶紧用前几步学到的东西,来解决实际问题,这样学的更牢,更实用,而且还不会因为过长时间的前期准备耽误太多项目进度。有需求牵引 的学习,才是高效率的学习。眼前的项目往往就是最好的需求牵引。

五,螺旋式学习

    干活的时候遇到不知道的东西,再回头去翻教材,查资料,网上找别人的解决方案(通常我们遇到的技术问题,都会有人遇到过),安装新的工具等等。所谓螺旋式学习,就是说干活过程中,往往需要把前面几个步骤再小规模地重复一遍。这是一个很灵活的过程,不定时不定量,完全根据实际情况决定。

六,温故知新

    眼前的项目干完了,不代表这个技术就掌握得很好了。时不时地温故知新,加深理解,重复地在项目实践中磨练,技术才能日臻熟练。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics