程序员的学习方法(转)

  学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。

  一.学习也是一种能力

  看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生的时候,什么也不知道,是一张真正的白纸,我们靠学习的本能,学会了走路、说话、穿衣服…后来,我们上学了,老师把书本上的知识一点一点灌输到我们的脑子里,我们掌握的知识越来越多,与此同时,我们学习能力却好像越来越差了,习惯了被别人喂饱,似乎忘记了怎么来喂自己了。

  学习本来只是一种本能,算不上什么能力,然而,经过二十多年的不断学习,学习反而成为了一种真正的能力,因为我们慢慢失去了它,它就更显得珍贵。

  在学校里我们基本上被动式学习,然而走出了象牙塔之后,不会再有人对你负责,不会有人主动教你,我们需要主动的学习。所谓的学习能力,其实就是自主学习的能力。

  几年前,曾有一本风靡管理界的书,叫《第五项修炼》,这本书倡导建立学习型组织,因为从长远来看,一个组织唯一可持续的竞争优秀,就是比竞争对手更快更好的学习能力。

  一个公司如此,一个人又何尝不是如此?众所周知现在是一个知识爆炸的时候代,知识更新非常快。据说,一个大学毕业生所学习到的知识,在毕业之后的2年内,有效的不过剩下5%,更何况我们的学校与社会需要严重脱轨。我们赖以立足的,不在于我们现在掌握了多少知识,而是我们有多强的学习能力!

  学习不但是一种能力,而且是一种至关重要的能力,而这种能力的核心,就是学习的方法和心态。

  二.买书是最划算的投资

  古人云:“书中自有黄金屋,书中自有颜如玉。”这说明先贤们早就认识到,买书是最划算的投资了。

  当我刚出道的时候,拿着非常微薄的工资,有一次我向主管抱怨道:“现在的书真贵啊,这点工资连饭都吃不起,更别说买书了!”主管对我说:“不要吝惜买书的钱,宁可忍着不吃饭,也不要忍着不买书,因为买书是回报率的最高的投资了。”

  主管的话让我非常震动。后来,我看到喜欢的书时,再有没有手软过。我不断的学习,开发能力也不断的提高,工资水平也获得了大幅度的提高。一年后,我一个月工资的涨幅,就足够买两年的书了。你说,还有比这更划算的投资吗?

  一本书,哪怕只有一页纸是有用的,它将所产生的潜在价值,也会远远超过书本身的价格。当然,书不在多,能踏踏实实消化掉一本好书,可能比泛泛而读10本普通书,要更有价值得多。

  三.多读经典书

  十年前,我刚进入IT行业的时候,真是求知渴,每星期都要往购书中心跑,可惜的是,那时给程序员看的书不像现在这么多,高质量的书就更少了。当时我印象中比较经典的书籍就是《Windows程序设计》、《COM本质论》、《Java编程思想》,还有就是谭浩强的《C语言程序设计》。其它充斥书架的,就是类似于《21天精通XXX》、《XXX从入门到精通》、《XX宝典》这样的书籍。

  回首往昔,令我比较郁闷的一件事就是在我最有学习动力的时候,看的高质量的书籍太少,就好像是在长身体的时候,天天吃的是没营养的泡面。当然,这跟没有人指导也有很大的关系,独自一个人学习,让我走了很多的弯路。

  软件开发方面的书籍,我大致将其分为三类:

  (1)浅显的入门类书籍。

  这类书的标题往往是《XX天精通XXX》、《XXX从入门到精通》、《XX开发实战》等,这类书往往从软件的安装讲起,喜欢翻译帮助文件。有人批评这类书为烂书、毫无价值,这并不公平。至少我本人,也曾从这些书中学到一些东西。即使是21天系列书,也有适合看的人群,只不过,它一般也就只能看21天而已,过后就可以扔到垃圾堆。这类书只适于还没有入门的初学者,从中学到一些入门的招式。这种书在刚起步的时候一般买上一本就可以了。如果你善于使用搜索引擎,这一本书也可以省了。

  (2)国内外高手写的实战类书籍。

  这类书实战性很强,把技术及原理讲得很透彻。比如《windows环境下32位汇编语言程序设计》、《深入解析MFC》、《Delphi深度探索》、《深入浅出WPF》、《深入剖析Asp.net组件设计》等。以前这类书都是从国外翻译或从台湾引进,现在国内高手越来越多,出自国内作者的也越来越多。这类书如果在你学习的每个方向看个两三本,并且通过实践消化掉,那么毫无疑问,你会成为一个优秀的程序员。

  (3)国外大牛写的、揭露本质、有丰富思想的书。

  这类书就是所谓的经典书了,例如《代码大全》、《编程珠玑》、《设计模式》、《重构》、《代码整洁之道》等。经典书就像一个有深度、有思想的朋友,他会给你启发、每次阅读都会有新的收获,这类书具有真正的收藏价值。看经典书永远是正确的选择,它绝不会浪费你的时间,因为经典书是无数人沙里淘金、帮你挑选过的结果。

  然而,阅读这类书并不是一件容易的事情,读者需要有丰富的开发经验,才能与作者产生共鸣。真正能消化经典书的人其实不多,这就好像饮酒,一个新手无论如何也品不出葡萄美酒的醇香。在酒桌上,人人都把杯中酒一饮而尽,当有人点评“这个酒不错”的时候,我只能无奈的苦笑一番,真的是甘苦自知。

  如果一本经典书你看得很辛苦,很有可能就是因为你功力未够,这种情况下不要着急,慢点来,不妨先将其先束之高阁,多看看第二类实战型书籍,过一段时间再回头来看,也许你会有新的惊喜。

  四.不要在上班时间看书

  一个善于学习的人,首先要善于利用一切时间来学习。不知是伟大的雷锋叔叔还是鲁迅爷爷曾经说过:“时间就像海绵里的水,只要愿挤,总还是有的。”然而,当我们从上班时间中挤时间学习时,就千万要注意了,不要在上班时间看书!

  上班时间看书不但是一件很敏感的事情,而且非常吸引眼球,很快就会引起周遭的不爽。首先老板心里不爽,他想:“我给你钱是让你来工作的,不是来学习的!”;其次同事们也不爽:“我们工作都做不完,瞧,这小子真闲哪!”用不了多久,你就会成为被众人排斥的异类。

  当然,你可能会说,“我工作已经做完了,经理没有安排,当然可以学习了”,其实不然。你完成了一件事情,不等于所有的事情都完成了。一个优秀的员工,应该是主动要工作,而不是被动的等工作。工作完成以后,你至少还可以:

  (1)主动汇报给你的经理,请他来检查你的成果,并安排新的任务;

  (2)如果公司这一段时间确实比较闲,没有什么具体的任务,可以进行代码重构、优化;

  (3)你还可以主动请缨,承担额外的工作或更艰巨的任务。

  (4)如果一定要学习,也只能对着电脑屏幕来学习,纸质书最多只能拿来翻阅一下,而不能一直捧着,以免影响到其他人的情绪。

  五、只学习与工作相关的东西

  我曾发现不少程序员在学习方面找不到方向,一会学学C#,一会学学Java,看了最新的编程语言排行榜,又觉得该学C++。这样左抓抓,右挠挠,只会让你觉得更痒。

  学习最忌三心二意。俗话说:“伤其十指不如断其一指”,每门都学一点,还不如专心学好一个方向。这个道理谁都懂,可是又该学哪个方向呢?难道只能跟着感觉走吗?

  不!最实际的方向,应该跟着工作走,工作需要什么,我们就学什么,把工作需要的技能熟练掌握。我们为什么要学习和工作弱相关的东西呢?是为了转行或跳槽吗?可是,如果我们连现在本职工作都不能做好,又怎么能保证到新的岗位、用新学的技能就可以做得更好呢?

  学习与工作需要的的东西,有很多好处:

  首先,可以集中精力,在某一方面钻研得更加深入。所谓“百招会不如一招绝”,有了绝招,你还怕不能在“武林”立足吗?《天龙八部》中的慕容复武功博学无比,最后还不是被只会一招六脉神剑的段誉打得落花流水?

  其次,可以学得更快、更深入,因为学习更具有针对性,而且可以立即在工作中运用,可以马上检验出学习的效果,对存在的问题可以进行深入的研究,因此掌握的知识也会更加的牢固。

  第三,学习与工作结合在一起,工作时间也就成了学习时间,这样突破了三个8小时的限制。有人说,我们每天所有拥有的时间可以分为三个8小时,工作8小时,睡觉8小时,另外还有8小时自己可以自由支配的时间。工作和睡觉的两个8小时大家都一样,决定人生高度的是另外这个8小时。当我们把学习的焦点放到与工作相关的知识上时,工作时间中的很大一部分,同时也就成了宝贵的学习时间,这真是一举两得的美事啊。

  六.织网式的学习

  知识的广度和深度都很重要。作为一个程序员,深入把握技术细节,是写出优质代码的保证。但对于一个项目经理而言,知识的广度更显重要。项目中碰到的问题往往是综合性的,只有具有广博的知识,才能快速的对问题进行分析和定位。在程序员通往项目经理的道路上,我们必须有意识的扩大自己的知识面,形成更完善的知识体系。

  每个人的知识体系就好比是一张网,我们学习其实就是要织这样一张网。 我曾看过渔网的编织过程,渔网虽大,也是一个结点起步,一个点一个点的编出来的,编织的过程中,始终只有一根主线。

  学习又何尝不是这样,知识体系的大网也是由许多小的结点组成,要结这样一张网,只能由一个点起步。牵住一条主线,织出一个个的点,由点带出面,最后才能形成这张大网。

  我曾经编写过一个网络信息采集软件,这个软件可以从具有列表页网站中按字段设置采集信息,支持自定义字段、页面多级关联、下载附件、支持多种数据库、可视化定义等特性。刚开始时,觉得这个软件也是一个比较大的功能点而已,后来发现这个不起眼的功能关联着大量的知识点,在开发过程中, 我顺藤摸瓜,各个击破,对很多知识点进行了细致的学习研究,软件开发完成后,个人的知识体系网也进一步得到了补充和完善。

  七.问题是最好的学习机会

  日本经营之神松下幸之助曾经说过:“工作就是不断发现问题、分析问题、最终解决问题的一个过程,晋升之门将永远为那些随时解决问题的人敞开着。”可见,工作过程中有问题是正常,没有问题那才是真正的问题。在发生问题能时,能勇于面对问题、解决问题的人,才是公司真正的核心骨干。

  现实中,很多人总是千方百计回避问题,当上司安排一项艰巨的任务时,也是想尽办法推托。殊不知,对于个人而言,其实问题是最好的学习机会。往往那些愿意接受困难工作的人,能力会变得越来越强,那就是因为他们在克服困难的过程中取得了巨大的进步。

  有一次,一位项目经理对我说:“有一个问题,客户有一台HP服务器要装磁盘阵列,没人会做,怎么办啊?”

  “可以学啊,没有人愿意去吗?”

  “我都问了,没人想去。”

  “哦,正好明天我有时间,我也没装过磁盘阵列,那我明天去学着弄一下。”我说的是真心话。

  第二天早上,当我准备出发时,项目经理告诉我不用我去了,因为项目组好几个同事都想去“学着弄一下”。

  结果服务器很快就装好了,远远没有之前大家想像的那么困难嘛。更重要的是,在解决这个问题的过程中,大家都学会了怎么装磁盘阵列。

  碰到困难时,迎难而上吧,千万不要拒绝这个最好的学习机会!

  八.经常思考总结

  子曰:“学而不思则罔”。只学习不思考,就会迷惑,难以把握事情的本质。这就好比一个学武之人,只习得其形,而未得其神,难以成为真正的高手。

  一个程序员从入门,到成为高手的过程中,往往要经过几次顿悟。顿悟会让你跳出知识的丛林,一切豁然开朗,仿佛打通了全身的奇经八脉一般奇妙。记得我有一次,顿悟到了一个很简单的结论:“原来高级编程语言中的类库是封装了Windows API来实现的。”后来碰到一些自带类库无法实现的功能时,我就会想到,其实可以通过调用Windows API来实现。利用这个思路,我解决了一些看起来很难的问题,得到老板的赏识,从而很快获得提升。

  顿悟非常可贵,然而它不是随便发生的,而是经过一次次苦苦思索之后、灵光闪现的结果。思考的过程,其实就是将外在的知识内化为自己的知识的过程,而顿悟,则是批量的实现这种内化,将无数个知识点连接在一起,达到融会贯通的境界。

  九、克服“高原现象”

  爱学习的人都会有这样的经历,学习持续了一段时间之后,往往会有一个瓶颈期,长时间似乎很久没有什么进步,于是内心非常着急。

  这种情况实际上这是由人的学习规律决定的一种“高原现象”。据研究,学习者在刚开始进步快,随后有一个明显的或长或短的进步停顿期,后期进步慢,中间的停顿期叫高原期。

  在我看来,高原期实质是一个消化期,由于前期的学习积累了太多的知识点,这些知识点在大脑中乱作一团,还没有形成一个知识体系。这时需要一定的时间来消化它,将它融会贯通,经常思考总结可以快速帮你跨过高原期。

  在处于高原期的时候,还可以换一个相关的方向来学习,例如编程语言学不下去了,你可以学习一下设计模式,设计模式也学不下去了,再换成数据库。通过学习这些相关的知识,不但补齐了知识体系中的短板,而且各个知识点之间可以互相启发,帮助你实现顿悟,跨过高原期。

  十、学习要有好心态

  (1)学习要静心

  急于求成是学习过程中普遍存在的一种心态。这可以理解,毕竟作为一个程序员,要学的东西实在太多了,而社会又是那样的浮躁,让人觉得一切都是那样的不安全、不确定,似乎只有学得快一点,才能跟上社会的脚步。

  可是“欲速则不达”,想快快的学,往往会形成东一榔头、西一棒槌的学习方式,每一个点都没有吃透。心沉不下去,知识也会沉不下去。要想成为真正的高手,只能静下心来,一步一个脚印的攀登。

  (2)学习是一个持续一生的过程

  人生的过程,就是一个自我完善过程。

  孔子曾经说:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”可见孔子也不是天生的圣人,也在不停的学习、进步,从“志于学”到最后“从心所欲,不逾矩”,孔子一共花了55年的时间。

  作为一个程序员,更是需要不断更新自己的知识。我们所知道的东西,就像一个白色的圆圈,圈外则是黑暗的未知的世界。当圆圈越大,所接触到的黑暗部分就越多。我们只有不停的学习,打破更多的黑暗,找到更多光明。

  (3)保持饥饿,保持愚蠢

  看了《乔布斯传》之后,我最喜欢的一句话是“求知若饥,虚心若愚”(Stay Hungry,Stay Foolish),其实我更喜欢它更原生态的翻译“保持饥饿,保持愚蠢”。我们只有认识到自己还很饥饿和愚蠢,才会像没吃饱一样,由衷的需要学习、爱上学习。

  当然,知易行难,知行合一才是学习的最高境界。我也始终是一个学习者,一直在路上。

时间: 2024-10-25 05:42:22

程序员的学习方法(转)的相关文章

程序员的学习方法【思考】

程序员的学习方法 作为IT业的一员,我们几乎每天都有大量的知识需要学习,有大量的技能等待我们去掌握.几乎从我决定"献身"程序员这一伟大事业之后,我就一直在考虑怎么提高自身的学习的能力(简称学习力),以下两张图作为我多年学习生涯得来的宝贵经验,拿出来和同学们分享.   如果你看到的第一张是埃及的金字塔,第二张是中国的太极图,说明我的图片没错:第一张代表"知识的金子塔结构",第二张说明了"理论和实践的相生相克原理". 一.知识的金字塔结构.我把我了解

关于程序员的学习方法的一些总结

1.不可盲目看API文档     很多人在接触学习一门新的平台语言时,总是喜欢先去探究一番API文档.这种方式不适合大部分人来效仿,因为API领域广泛,牵涉到的知识点太多,而对初学者来说,遗忘的速度远远大于记忆!这种做法是大量消耗精力.小量吸取知识的方法,只会事倍功半. 2.前人铺路,后人乘凉     对于初学者来说,任何想要学习与掌握的知识点,之前都会有高人学习总结过:所以建议大家每学习一个知识点,都尽可能的先动手去网上搜索和学习别人总结出来的相关知识点的文章,毕竟前人总结过的知识会让你减少学

程序员高效学习方法

注:以下内容出自http://www.cnblogs.com/weilu2/p/learning_method.html 1.自顶向下的学习方法 也就是分层学习,与网络化学习方式有一定的关联性 2.网络化学习方法说到网络化学习就不得不提到传统的学习方式,线性学习. 认知一个事物的过程,是通过逐一认识这个事物方方面面的属性来实现的.但对于一个特定的事物的认知过程中,其各个属性之间的关系有些是线性的,有些是有网状关联的,甚至还会有一些是孤立的. 这种线性的学习方式效率很低,而且把一个单一事物的认知过

程序员学习方法(摘抄)

程序员必看,学习的方法 0.引言 在学习编程语言的路上,发现初学者(包括俺)问 得最多的问题莫过于“如何学习编程?Java该如何学习?“.类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法.到时候再有人问起类似的问 题,我可以告诉他(她),请你去看看<Java学习之路>.拜读过台湾蔡学镛先生的<Java夜未眠>,有些文章如<Java学习之道>等让我们确实有共 鸣.我个人推荐的<thinking in java>. 从网络上摘下来的一句话是这样的:”软

优秀程序员学习方法

重复.先学会用它.不断向自己问问题(写博客).自己做产品! 1.对于较艰深的技术,如内核和算法,重复看,硬着头皮看,找到该技术top3的书反复研读,会有所悟的. 2.linus torwards大神如是说:想精通Linux,先学会用它!搭个系统使用它,再写小程序练习验证. 3.问问题,big view and small detail,反复缩放,直到问到的问题足够具体,你就理解了.写博客,是整理思路的好帮手. 4.自己做产品.不做产品,不做项目,学来何用?成功的产品是你彻底理解的最好验证. 优秀

轻松学霸 (程序员思考方式)——1 十种有效的学习方法

好方法,高效率.特别推荐下列十大学习方法 1.目标学习法 把一个伟大的目标,拆分成一个个小目标,再把小目标分成各个步骤.按步骤当学霸.就像程序中只有0和1一样.so easy. 目标拆分还有一个好处,可以多任务并行处理.如在路途中,不能看书,那就听书. a.目标是什么?一定要明确,有标准. b.此时时刻做到哪一步了? c.是否完成? 2.问题学习法 带着问题去看书,有利于集中注意力,目的明确.也会感兴趣.当您真正找到问题答案时,您会发现要找的东西很少,学到的更多.不要被问题吓倒,解决问题的过程就

程序员怎样锻炼编程思维(学习方法)

1.明确学习目的 学习编程对大多数IT业人员来说都是非常有用的.学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位:从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象.学习编程还能 锻炼思维,使我们的逻辑思维更加严密:能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作.知识经济时代给我们带来了无限的机会,要想真

CSDN日报20170311——《程序员每天累成狗,是为了什么》

[程序人生]程序员每天累成狗,是为了什么 作者:郭小北 程序员可以投入的资本就是:身体和脑力,说白了都是出卖劳动力换取回报,也就是钱.我们大部分人都是凡人,或许当初是基于兴趣和理想去做一件事,入一门行,但随着阅历的丰富,年龄的增长,责任感的叠加你工作就是为了钱啊,因为在这个物质的社会,你连家都养不了,何来生活的更好? [物联网]Android Things --SDK框架 作者:王玉成 物联网应用开发与手机和平板的应用开发有一些区别,那么Android Things与Android又有哪些差别呢

坚持住,慢慢来(送给大学的程序员)

开篇 作为一个计算机科学的学生,我们需要做的是找到一个自己感兴趣的路线,找到一个属于自己的学习方法,让兴趣驱动着自己,不断深入的探索.计算机的世界很奇妙,当你真正踏入进来后,你会感到它的魅力是无法形容的. 下面以我的个人经历为蓝本叙述一下一个计算机科学的学生的成长以及学习方法,仅为个人观点,希望能帮助到大家. 我们在学校首先接触的一般是C/C++或者是C#,我们学校就是以C为起点的.在国外的高校也有以python为起点的,但是国内却不多,所以在此我暂不供述,在我看来都很不错.首先,像C这样的静态