前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员如何更有效得学习

程序员如何更有效得学习

作者头像
神秘的寇先森
发布2020-02-19 10:54:07
8350
发布2020-02-19 10:54:07
举报
文章被收录于专栏:Java进阶之路Java进阶之路
一、 定位自我

对于程序员,我们对自己以及自己从事的工作,应该给一个准确清晰的定位,至少你要清楚,你是一个程序员,在你拿着高薪工作的时候,你要为这份工作付出很多,包括时间、经历和金钱,最主要的是,你需要不断学习,不断更新自己的技术栈。定位,意味着,你要认识到当前自己的优势和不足,并制定好未来的规划和技能需求,你要确定你是去大公司镀金还是去小公司独当一面,然后沿着这个方向不断学习和武装自己。

二、有效学习的步骤

对于国内大多数人来说,从小到大我们接受的都是应试教育,填鸭式教学。当你进入职场,离开了当初的教育环境,成为一个名副其实的程序员,你还在不断要求自己学习吗?

  1. 针对学习,不同的人的认知能力是有差距的,而不同的学科也会呈现不同的特点。就像技术更新迭代一样,人的学习过程也是一个迭代的过程,用已知的知识去认识未知世界,当两者之间有关联时,就会很快被理解并接受,否则就表现出不理解和不接受的特性。 所以关联是人类认识的本质,我们要刻意去强化这个过程,使得关联产生的越多、越直接,你理解和接受的认知也越多。类似于,当你在会Java编程语言基础上,再去学习Python编程语言时一样,你不需要再从HelloWord写起,而你应该去了解Python和Java在句法等上的不同点,并在熟知的必要条件下,你就直接可以开始写代码了,遇到不懂得地方,再去查查说明文档,很快你就掌握Python编码,笔者当初从Java开发做起,随着人工智能发展,学习Pyhton就采用的这种学习方式,一个月时间就很熟练了。但这种方式的优势的学习快,缺点就是不容易学习到第二门编程语言的精华,比如从Java到Python,采用上述方法写出的Python代码是Java风格,而不是Pythonic风格,所以笔者推荐Python的学习者看《编写高质量代码改善Python程序的91个建议》这本书。 因此,学会迁移学习让知识关联,你将学的更快,这种关联,不仅仅是代码与代码之间,包括代码和生活中的场景,这样更有助于我们理解业务知识。
  2. 学会简化知识,让繁杂变得简洁,你的大脑将更容易理解和接受。简化让我们对学习的知识印象更深刻,人的认知也是一样,复杂的东西是不利于大脑记忆和处理的,我们认知的第一感觉,更倾向简洁的东西。所谓一图胜千言,大概说的也是这个道理。 在《代码整洁之道》中,作者提出了一个观点:代码质量与其整洁度成正比,干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好基础。 就好比在开发过程中,假设我们模拟下五子棋,如果所有代码都面向过程开发,这样整个下棋流程为:开始游戏->黑子先走->绘制画面->判断输赢->轮到白子->绘制画面->判断输赢->返回步骤2->输出最后结果,你需要把个个步骤一步一步实现;如果你采用面向对象的开发过程,整个下棋流程为:先定义黑白双方,这两方的行为是一模一样的,再定义棋盘系统,负责绘制画面,最后定义规则系统,负责判定诸如犯规、输赢等。 采用上述2种方式开发的代码,我相信,如果大家选择的话,更愿意选择面向对象的代码,因为更简洁,大脑更容易接受。
  3. 学会知识分层,将知识系统化和层次化,存储在大脑合适的位置。这样我们在对知识使用时,大脑更容易搜索到。类似搜索引擎或需要模糊匹配,亦或需要精准匹配的过程。 我们的大脑存储知识,就类似与工作中常用的数据库一样,对于数据库而言,越是简单的结构,就越容易存储和处理,对于复杂的数据结构,不仅需要分库分表存储,还需要创造NoSql等来存储。 当你遇到大量知识和信息时,永远先分层,先抓重点。
三、没有人轻易告诉你的学习途径

也许每个人都有自己的学习方法,但是技术的学习还是有一些共性的东西。

  1. 学会搜索知识和代码。遇到困难或者代码报错,解决问题的快速办法就是先赶快定位你的问题,并通过搜索引擎查找关键字词,看是不是已经有人遇到过该问题,并且在博客或者论坛有解决办法,此外,CSDN博客、开源中国、极客学院、菜鸟教程、W3School、知乎等都是程序员学习的好去处;还要学会在GitHub上搜索代码,本着“避免重复造轮子”,要学会站在巨人的肩膀上看世界,尽管GitHub被微软收购,但是丰富的开源软件和代码有很多价值,要学会利用。
  2. 学会利用培训机构的课程大纲。很多人一提到培训机构的速成课程觉得都不靠谱,其实这是一种偏见。对于程序员要学习一个系统的知识,笔者有一个经验,就是去市面上找几个比较好的培训机构官网,然后在官网上找到你想学习的知识的课程大纲,对照课程大纲,通过不断利用搜索引擎来把知识点各个击破,你也就掌握了要学习的知识。
  3. 想系统全面的学习知识,一定是要静下心来看书。移动互联网和知识付费的快速发展,碎片化学习,成为越来越多人工作之余的选择,比如,微信公众号阅读、得到、知识星球、GitChat等。尽管碎片化学习,每一篇文章或者观点都会尽力把知识表达的完整和清楚。但是,笔者认为,碎片化学习效率高、速成,但是还是有断章取义的嫌疑,让阅读者缺少更加系统与深层次归纳思考和总结,而阅读一本书就不一样了,根据上下文和章节内容联系,阅读的过程中要不断总结和思考,这样的学习虽然慢,但是一定比碎片化学习更系统全面。
  4. 拒绝懒人模式只看不练。俗话说,眼过千遍不如手过一遍,对于学习编程来说非常实用,实践才能出真知。学习编程时,在新手阶段大多数人都有这样一个感觉,看视频或者资料时,一目了然,感觉自己都掌握了,等到亲自动手写的时候,却迟迟下不了手。原因何在?那就是缺少练习,你仅仅是只看不练。新手先从模仿做起,跟着教程自己亲自敲写一遍代码,这样知识点掌握的更透彻,然后在这个基础上,你才能根据自己的思路去修改和写出相应的代码。
  5. 没有永久的记忆,只有不忘的博客。都说鱼的记忆只有七秒,那人的呢?大家都知道,每天面对各种各样的事情,我们大脑的记忆存储处理也是有限制的,不可能把全部的东西一点不漏的记忆下来。也许随着时间迁移,当初你觉得记得非常牢固的东西,说不定哪天你就忘的一干二净了。所以说,没有永久的记忆,只有不忘的博客。不妨经常抽空把自己曾遇到过的问题和好的原创内容编辑在博客里,这样既帮助自己总结和记忆,又能利于别人搜索学习,利人利己,何乐而不为呢?对于好的原创内容要积水成流,说不定哪天,一个编辑就会敲开了你的创作之门,一本经典作品将流传于世,为后来者学习提供更好的资料。
四、如何快速学习新技术?
  1. 找到兴趣点。当下整个IT技术圈,技术从硬件到软件,更新迭代的速度是非常惊人的,作为程序员,不仅要依靠现有技能出色的完成工作任务,还需要不断学习新技术,不断提升自己。如果能把兴趣和技术结合起来,迅速找到自己想突破的领域将是一件非常幸运的事。我特别喜欢雷军说过的一句话,“站在风口上,猪都能飞起来”。学技术同样也是,要根据技术潮流和自己现有技能,选择一个自己感兴趣的细分领域,在好奇心驱动下,坚定的专注,这是你学习新技术的必要条件。
  2. 搞定环境你就对新技术入门一半了。面对越来越复杂的软件开发环境,在兴趣驱动的必要条件下,学习的第一步就是先配置好环境,其中虚拟机和Docker技术工具任何时候对你来说都是必备的,它们是你在未来工作包括开发或者测试装机必备的工具。很多情况下,当你想学一门技术的时候,你的资源是有限的,这个时候虚拟机和Docker你就派上用场了。比如,部署Hadoop大数据分布式环境需要几台机器,这个时候你就可以选择虚拟机。当你通过几台虚拟机,把Hadoop分布式环境部署好之后,在此基础上,继续部署Hadoop生态的其他组件,等顺利完成了环境部署和通过小数据量的demo测试,你发现你对新的技术有了一定了解,可以算是入门了。
  3. 想要深入,必须找到圈子。不管是工作还是学习,任何时候你都要明白,你不是一个人。对于学习,当你完成初级入门继续深入学习的时候,如果你还是一个人在孤军奋战,后面遇到更大的阻力,你可能会因此放弃。 要有团队意识,要找到自己兴趣的圈子,避免孤军奋战,学会让能力1+1>2的产出。学习也是,找到你的兴趣圈子,避免让自己的努力前功尽弃,学习的同时,找到相同爱好的小伙伴和兴趣圈子,比如通过QQ群、微信群、知乎等一些知识社群,和大家一起成长,要知道人外有人天外有天。
  4. 拒绝懒惰,持续输入时间和精力。任何时候学习都不是一件速成的事,通过速成你可能很快掌握技能型的东西,但是一些精华思想是需要岁月来沉淀的。要鼓励自己克服懒惰,对于学习要不断输入时间和精力,才能获得更大的输出。

建议:先找到兴趣点,然后把该技术涉及的环境搭建好,其次找到该领域的圈子,最后不断持续的输入才能获得更大的输出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 定位自我
  • 二、有效学习的步骤
  • 三、没有人轻易告诉你的学习途径
  • 四、如何快速学习新技术?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档