欢迎光临
我们一直在努力

为什么说学会学习是开发者重要且必备的技能?

做一个高效的学习者,与做一个高效的编程人员一样重要。 

作为一名开发者,你的工作要求你每一天都要学习,而不只是每天关注Hacker News、Twitter、Reddit和Facebook。 

在每天的工作中,你会不断的遇到新的代码库和新的挑战。在家里的情况也一样,你需要不断的接触开源repo和你自己的项目,这些都需要你不断克服各种挑战。

科技世界的变化非常快,学习最新的工具、语言和框架,会让你觉得自己多了一份全职工作。长话短说:学习是一件艰难的事情。但是,要想在工作中不被淘汰,我们就需要具有快速、高效学习的能力。

去年一年内,我从一个连Chrome debugger都不会使用的人,成为了一名软件工程师,加入了一家知名的数字货币企业。在这个过程中,我快速的学会了一门新的技能(编程)。 

但是尽管如此,我依然觉得学习是一件困难的事情。 

老实说,在这个过程中,每一个我遇到的新概念,都让我挣扎万分。我遇到了太多的未知,太多的不确定性。 

我不断质疑自己:“我怎么可能坚持下去呢?” 

“如果学习编程的过程中,我每一天都感觉这么累,我会被累垮的。这真的是我想做的事情吗?” 

“如果编程是我想做的事情,我会感觉轻松一些吗?艺术家在创作的时候会如此挣扎吗?作家在写作的时候会如此挣扎吗?运动员在比赛的时候会如此挣扎吗?在追求梦想的过程中,我们一定要如此挣扎吗?” 

“我难道不是应该在这个过程中找到快乐吗?” 

一、学习编程到底会不会有一天变得轻松一些?

会。一年之后,我发现学会一个新的编程概念依然会很“困难”,它还是会要求你高度自律,努力学习。 

但是这个过程变得更加享受,而不是让你觉得手足无措。

这一年究竟发生了什么,居然会有如此大的改变。答案很简单:我对学习的观点发生了改变。曾经的“困难”变成了如今的“吸引”。

在这篇文章中,我将会讲述这个转变的过程。

二、这仅仅只是个开始

学习编程在最初的时候是全世界最难的事。 

例如,你可以回想一下你所学的第一门编程语言。一些最基本的概念都会让你感觉难以理解,例如语法和样式。你还需要理解一些复杂的核心概念,例如值、类别、错做、流控制、函数、高阶函数、参数、闭包以及推递等。

你会觉得自己在学杂耍,而且是一上来就给你8个酒瓶子让你耍起来。

在我刚刚接触闭包的时候,我花了好几个星期才彻底搞明白了这个概念。当我刚接触到这个概念的时候,我以为我马上就理解了。但是之后当我尝试在实际操作中使用它的时候,我发现自己立刻就卡住了。 

这样的情况会经常出现。在当老师的时候,我也经常会遇到这样的情况:学生在第一次接触到某个新概念的时候,无法马上理解,有的时候接触了10次依然无法理解。 

但是对某个概念纠结久了以后,你会迎来一个“顿悟”的时刻,突然间一切都豁然开朗了。依然用我自己来举例,我阅读了大量有关闭包的文章,然后突然在一瞬间明白了这个概念。 

我阅读的每一篇文章,都给我提供了新的视角,在我对这个概念有了360度的了解之后,理解这个概念就成了顺利成章的事情。 

这次顿悟对我来说非常重要,因为它就像是一次奖励,鼓励我却学习更多的知识。 

三、学习是一个过程,而不是目标

如果我们将学习一门知识当成“不得不做的事情”,我们就会急着去完成,好用剩下的时间去做其他一些“有趣”的事情——我们“想要”做的事情。 

但是,人的精力是有限的,因此将学习视为一场竞赛,会让我们产生倦怠,甚至对自己失望。 

而如果你将学习视为一个过程,那么每一次小的胜利都会让你欣喜无比。这样依赖,你就会获得不断学习的动力。

就像健身一样。健身会给你带来疼痛,如果停止锻炼,疼痛也会随之停止。但是疼痛并没有远离,下次锻炼的时候它还会等着你。如果你能够预见到疼痛会来,你的痛苦就会减轻一点。学会适应疼痛,熟悉疼痛,让疼痛成为你生活中的一部分。你的回报,就是健康的身体和健美的身材,还有继续健身下去的动力。 

锻炼会形成一个积极的连锁反应:

学习也是这样。

四、把学习变成一个有吸引力的过程

想象你自己正在做第一个web应用。 

最初的时候,面对空空如也的编辑器,你会感到恐惧,整个任务看上去根本无法完成。你什么都不懂,在完成项目之前,你要学习大量的新东西。 

但是,你决心已定,无论如何也要硬着头皮上。 

从那之后,你决定一点一点慢慢来。 

  • 首先,你需要一个创意,你要做什么样的应用?你的终端用户是什么人? 

  • 其次,你要做一个原型应用,或是做一些大概的设计,确定应用大致的样子。你从朋友、互联网那里获得反馈,然后进行迭代,不断完善应用。

  • 第三,你开始研究语言、工具和框架,选择那些最适合你的东西。 

  • 之后,你开始集中精力完成这个目标。

    有的时候你是在写代码。更多的时候,你是在调试bug和错误。 

    有的时候,你会累的无法继续,于是决定休息一会。

    其他时候,你一点代码都不想写。没关系,你可以花时间来研究其他和你的项目类似的项目。 

    最终,经过几周的辛勤努力之后,你将作出应用的基本框架。突然间,这个应用的开发过程变得不再那么痛苦了。最初的努力终于迎来了回报,写代码或是进行重构对你来说已经不再是什么难事——因为你以前已经做过100次了。 

    曾经让你无比头疼的事情,如今变得有意思起来了。 

    这就是我们的成长过程,我们在这个过程中越来越强大。无论是编程、跳舞、跑步还是阅读:这些事情都不容易,而且这些事情都没有“结束”或是“完成”的时刻。

    把你的精力投放在某件事情中,享受这个过程,享受这个过程给你带来的痛苦。因为最初的痛苦会在未来给你带来回报:成就感和自我满足感。

    换句话说,挣扎和愉悦是相辅相成的。时刻牢记这个循环:

    五、一种学习科技概念的方法

    下面我来说说我自己的学习方法。这种方法并不能适合所有人,因此如果你也有自己的学习方法,欢迎分享给我们。

    我会使用我学习React.js的过程来举例。

    1、这个技术能解决什么问题? 

    第一步:我会在谷歌上搜索React.js的文档进行阅读,了解这个库的背景和东西。

    对于学习来说,先弄懂“为什么”,这是一个非常实用的方法。它能让你了解以下几个问题:

  • 它和其他解决方案有和不同?

  • 它对我有用吗?

  • 这个解决方案旨在解决哪些问题?

  • 它是不是一个只能使用几个月的工具?还是能够从根本上改变我思考和写代码方式的工具?

  • 2、通过阅读了解核心概念

    第二部,我会阅读大量入门文章,以及文档中提供的案例。

    请注意,我现在还没有开始接触任何新的代码。阅读和了解应该放在实际操作之前。这一点非常重要,因为这样做是在为未来的学习奠定基础。

    就算你可以在了解基本概念之前就学习React.js代码,但是未来你依然需要回头来了解这些核心概念,尤其是遇到bug的时候。

    3、第一次写代码

    在阅读了大量文章之后,我会觉得自己对新技术有了一定的了解,甚至觉得自己已经彻底理解了它。之后,我就会开始接触代码了。 

    一般情况下,我会尝试做一些规模非常小的项目,方法是跟着一段视频指导。

    4、遇到问题

    无可避免的,你将会遇到问题。 

    阅读说明文档对你来说非常简单,但是真正使用新技术的时候,你会意识到自己其实还什么都没有掌握。

    在这个时候,我会产生放弃的念头。但是在遇到问题的时候我不会真的放弃,而是提醒自己痛苦=收获。现在放弃是懦弱的行为。

    我会做如下几件事情:

  • 1.首先我会仔细分析自己所遇到的困难,然后试图找出问题的根本原因。就算不知道原因是什么,我也会猜测一下。 

  • 2.之后我会从电脑前站起来,做点放松的事情。在我头脑混乱的时候,很难找到解决办法。暂时远离问题本身,有的时候会有良好的效果。

  • 3.之后根据我的推测,我会试图寻找解决办法,但是先不再网上进行查询,而是尝试独立解决。即使我的方向是错误的,在这个过程中我也能收获良多。

  • 4.如果我的推测方向是正确的,太好了,我自己解决了问题。如果我的推测是错误的,我会在谷歌上查询文档、博客或是Stack Overflow文章,在其中寻找解决方式。

  • 5.在阅读的时候,我会做笔记,尤其是那些有可能帮我解决问题的内容。

  • 6.还是没有解决方案?没关系,在这个过程中我已经学到了很多东西,即使它们并没有直接帮我解决问题。这些知识在未来一定会起到作用。

  • 7.当我觉得自己真的无法解决的时候,我会在Stack Overflow上求助,或是请其他开发者同事来帮忙。

  • 8.有的时候,这个过程只需要几秒钟,还有的时候需要几个小时,甚至几天的时间。无论时间长度,这个过程本身都会给我带来巨大的好处,成为一名更好的开发者。

  • 遇到问题的时候,你会觉得自己身在一个伸手不见五指的隧道中,到处寻找光亮。你一定会找到光线,而且在这个过程中,你会对这个隧道有所了解——正是对这个隧道的了解,才能让你成为一名优秀的编程人员。 

    5、不断重复 

    在做了一个小项目之后,我需要通过不断的重复练习来掌握这种新工具。因此我会再一次自己用它做过项目。但是我依然不会去做大项目,而是继续做一些与上一个项目有所区别的小项目。

    6、掌握

    业精于勤,因此我会通过不断的做小项目来掌握新技术,直到我确定自己掌握了其中的核心概念。 

    最终,在通过阅读、实践之后,我终于准备好用新学的技术做点真正的东西了。 

    在整个过程中,我都会刻意的让这个过程变得更有趣。我会不断的提升难度,让项目的难度稍稍高于我当前所掌握的技能,但是注意难度不能太高,免得将自己扔到深渊里爬不上来。当我觉得自己被项目搞得疲惫不堪的时候,我会马上休息一会。

    六、 学习很有趣

    有了良好的计划,学习编程可以是一件很有趣的事情。期初的时候,你会觉得编程非常复杂,正是由于这个原因,很多人选择了半途而废,这些人放弃不是因为编程“无聊”,而是由于编程“太难”。

    在经过了一段时间的适应之后,处理新信息就会变成你的肌肉记忆,无需特别的思考,大脑就会反应过来。学习,就是在痛苦的浪潮中存活,之后你就会获得奖励。

    突然间,你会发现编程学习变得简单了。

    未经允许不得转载:BkCoding » 为什么说学会学习是开发者重要且必备的技能?

    分享到:更多 ()

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址