怎样学习一门新技术(转载)



几周前一个朋友也打算通过跑步来甩一甩脂肪,控制一下自己那已经严重扭曲了的身材 —— 他便求教我从衣服到鞋,从腕表到心率带,都买了什么装备,性能如何,他好照着原样来一套。我告诉他我什么装备都没买,跑了半年多了,我还是随便套上件纯棉的T恤,穿条舒服的运动短裤,蹬着跑鞋,抓着手机,就这么跑将起来。他连连说不信,一个连排汗速干的衣服,臂包,运动腕表都没配的人,怎么也能(配得上)跑步?

「我想学rails,有没有推荐的ruby的入门书籍?」

「我想学android,对java掌握到什么程度才能开始呢?」

「我c/c++还没入门,能直接学python么?」

这些问题都是初学者常常萦绕心头的疑虑。在我们自己的现状和想要达成的目标间,总是横亘着一条名为「先决条件」的大河,似乎除了花费巨大的精力游过这条大河外,别无他法。很不幸,大部分人还没能够接近目标,便被湍急的水流冲走了。然而,还是有少部分人似乎坐上了阿拉丁的魔毯,毫无迟滞地直达彼岸,好像学什么技术都不那么费劲。这是怎么回事?

学一门新的语言,或者新的技术,与其说是一种能力,不如说是一种方法。试问什么样的人,或者说人在生命的什么阶段,学习效率最高?效果最好?答案显而易见:婴儿期。我的不到两岁的女儿估计现在也就掌握了几十个名词,十多个动词,三五个形容词和介词而已,但每天从她口中蹦出来的话不下几百句。想想我们自己学了多少年英语,才能从口中完整地说出:"hello everybody, so glad to see you",初中?高中?抑或大学?想想我们单词量三千的时候能做什么程度的沟通,交流?

如果你仔细观察,你会发现,婴儿的学习方法极尽实用之能。模仿,试错,练习,不管一切所谓「权威」的语法,词法,一切以用为主。还是以我女儿为例,她的表达是以短语和句子为主:

「爸爸抱抱小宝」- 求安慰

「小宝要喝奶奶」- 饿了

「要是小宝不听话呢」- 学会了反问之后你跟她说话她时不时就将你一军

「妈妈妈妈快回家,让我亲亲你吧」- 跟唱歌机学的,卖萌

「goodbye so long farewell my friend」- 跟音乐课学的,卖萌

说出的大部分的句子,她并不知道每个词的具体含义,但她知道这个句子的模糊的意思,而且从大人的反应中,她能知道她理解的意思是否正确,就这样,一次又一次模仿,试错,获得反馈,不断地累积自己直接能用的「知识」。

这是实用主义者的学习方法:绕过障碍,直奔主题,专注那些你马上需要学的。几年前,我在开始学某样东西前,会上网搜罗几乎所有能找到的从入门到进阶再到专家的书籍,在看了一大堆各式各样的评论后,心满意足地筛选出所谓的「精品」购买回家,然后把他们垒在书桌前,仿佛这是学习之前必要的仪式。但这样的做法仅仅是成就了豆瓣和亚马逊,堆积的图书往往在我豪气万丈地看到第一本的第X章(X<=5)后便被束之高阁。后来我发现,我被所谓的「学习要先系统地打下扎实的基本功」坑了 —— 我不断地陷入「基础知识」的泥沼,越陷越深,越学越苦,只能苦苦挣扎。这挣扎的结果,80%的情况变成了放弃。

其实我大可不必去担心这些「基础知识」,把它们先放在一边,用到多少,便学多少。比如说,我要学rails,那就直接从rails开始,遇到有关ruby的语法障碍,回过头来看看ruby文档中相关的内容,扫清障碍立刻回到rails本身,而不是先从ruby啃起。要知道,rails里用到的ruby特性,可能占ruby总体语言和类库特性的20%都不到!从ruby学起,便是走了岔路。

软件开发是个手艺活,它的学习不是各种可能很少用到的知识一股脑的堆积,我们没法在一切理论知识准备就绪以后再开始学习。scala的作者批评java的低效时曾经说过,java把写程序变成了做仪式,因此毫无乐趣可言。那么,当我们在桌前堆满了从入门到专家的各种书籍,是不是也把学习变成了一场盛大庄重的仪式?重要的不是堆砌了多少知识,而是学以致用。

仅仅专注并直奔主题还远远不够。学习过程中你需要大量练习和获得反馈。 婴儿并没有在累计了3000个词汇之后才开口说话,而是当身体和大脑准备好后的第一天就张口说话了,并且,尽管说得错误百出,他们依然越挫越勇,屡败屡战。同样的道理,当你学习python而不使用ipython在REPL环境下尝试各种使用技巧,当你学习django而没有从搭建一个可运行的web项目开始,那学习效率肯定不高,效果也必然马马虎虎。在健身房里,就算观摩教练的动作一百遍而不是自己亲自尝试,并接受对方的纠正建议,你还是无法掌握正确的动作要领。我见过有人把书中的例子一个个敲到编辑器中,全部运行正确,然后就心满意足地认为自己「掌握」这门技术了。殊不知,这种「练习」并非有价值的练习。我们需要试错,就像婴儿学步那样,模仿,迈步,摔倒,爬起来,再迈步。犯错是学习的一部分,当你看完教程掌握了里面所述的内容后,可以自己构思某个应用或者某个使用场景,然后从头写起。你会发现很多问题,也会加深对教程的理解。自己无法回答的问题,可以寻求社区的帮助,大部分和开发有关的问题都能在stackoverflow上得到解决。这样不断地练习和获取反馈,你的开发功底会很快提升。很多非系统的知识和能力(甚至洞见)就是这样通过不断练习和试错在下意识间学到的 —— 它们来得如此悄无声息,以至于除你之外,别人都将其视为你的一种天赋。

那么,什么时候需要系统地学习呢?当你有了实战所需的技术和经验,需要宏观上对自己所学的内容做一个升华时,或者当你的实战能力遭遇到了瓶颈的时候。有句话说得好:你不需要成为一个优秀的ruby工程师才能用好rails,但如果你想成为一个优秀的rails工程师,则你必须很好地掌握ruby。遗憾地是,很多初学者的问题是:想对一门技术快速入门,却使用了系统学习的方法,还未入门,便倒在了艰苦修行的路上。


这篇文章我觉得很好,因为我就陷入了这样的误区,我要改正


时间: 2025-01-13 15:14:43

怎样学习一门新技术(转载)的相关文章

如何快速学习一门新技术(转载)

前几天fork了Ruby China的源码,面对陌生的Ruby技术栈,一头雾水. 我fork它并不单为了学习,而是要在最短的时间搭建起我脑海中的社区网站.所以我不可能针对每一门新技术都去买一本书来读上半个月. 我在本机运行起Ruby China,新注册一个用户,发现不能发帖,提示说要注册一个月以上才可以.于是我去找相关代码: # 是否能发帖 def newbie? return false if self.verified == true self.created_at > 1.week.ago

如何快速高效的学习一门新技术

这个问题网上有很多不错的blog,每篇或长或短,我看了几篇评分较高的文章,认为有几个核心方法和思想: 原文链接:https://blog.csdn.net/foruok/article/details/49068181   https://blog.csdn.net/qq_30089191/article/details/73742425 (1)以未来某个阶段的目标和现阶段自身的需求出发,选择学习一门新技术. 以目标为导向,确定近期的学习方向,选择学习哪门技术.比如,现在遇到某个项目,该项目是你

怎样学习一门新技术?(转)

add by zhj: 我个人强调先整体后局部,先看要学的这个技术的整体框架是怎样的,然后再学,这样,可以把学到的东西用整体串起来, 形成树/图的数据结构,将知识进行了关联.人脑是非常喜欢这种数据结构的,也更容易存储这种数据结构,哈哈,从这个角度进行对比 人脑和计算机,两者的确是很像.而如果你没有整体的框架,存储集合类型的数据结构,那大脑就很容易忘记这些零散的知识. 原文:https://www.sohu.com/a/297468779_818692?spm=smpc.author.fd-d--

程序员如何快速学习一门新技术?

最近闲暇时间在bilibili看了大胖的程序员如何学习一门新技术视频教程,总结了一下几点 第一步:看官方API(2天左右的时间) 第二步:找实战教程(自己可以去各大资源网站上购买) 5天时间 第三步:推动新技术在工作中的使用 不建议使用新技术到公司的主营业务中,不然到时候没弄好就得走人 第四步:看Github上的开源项目或者自己可以去寻找技术生态 原文地址:https://www.cnblogs.com/yirufeng/p/12244284.html

如何学习一门新技术

目录 1. 如何学习一门新技术 学习步骤 2. 数据库优化和关注点: 3. 数据库整体架构 1. 如何学习一门新技术 学习步骤 1:完形填空的方法从整体了解:了解技术的套路,模板:执行流程,重复代码: 2:深度学习 3:通过案例倒逼技术的驱动: 考试倒逼学习法: 对于各种微服务项目,进行整合,进而对于技术进行强化学习: 1. 技术难点: 偏离论:拆解目标, 碎片化学习: 偏实践:先熟悉理论, 实践就是理论的验证: 2. 提高个人学习氛围的方法: 1:分享成果,多互动: 2:做好技术沉淀, 提高影

《如何快速且深入的学习一门新技术》读后感

本文是学习颜群的<如何快速且深入的学习一门技术>的一篇记录文章,对方的很多观点和让我很受启发,虽然自己平时对学习方法有些心得,但是真正去总结自己的学习方法却很少.缺少盘点的结果就是任凭本能和学习状态,显然这种方法是不可持续的.为了提升个人或团队的学习效率,如何摸索一套针对技术类型的学习方法是非常值得每个技术人员去探索和总结的. 软件开发正处于快速发展的时代,新技术层出不穷,那么在这个日新月异的互联网时代作为软件开发者,我们应该如何保证自己的技术竞争力?我们今天就来聊一聊,如何快速且深入的学习一

如何快速学习一门新技术

?>本文写于 2014 年 5 月. 前几天fork了Ruby China的源码,面对陌生的Ruby技术栈,一头雾水.我fork它并不单为了学习,而是要在最短的时间搭建起我脑海中的社区网站.所以我不可能针对每一门新技术都去买一本书来读上半个月. 我在本机运行起Ruby China,新注册一个用户,发现不能发帖,提示说要注册一个月以上才可以.于是我去找相关代码: # 是否能发帖 def newbie? return false if self.verified == true self.creat

React Native学习(1):怎么快速学习一门新技术

React Native学习方法论 这是我技术公众号的第一篇文章,也是ReactNative系列文章的第一篇,对我的文章感兴趣的可以加我微信16230091进行关注. 本文表面上讲React Native(以下简称RN),实际上对于学习任何语言和系统都适用. 对于新技术的学习,分为两种,一种是语言,类似Swift.Objective-C.Java.ES6,另一种是系统,比如Android.iOS.前端. 1. 语言层面,如果你精通某一门语言,那么是可以很快切换到另一门语言的.这就是语言的相通性.

如何高效的学习掌握新技术

作者:宝玉链接:https://zhuanlan.zhihu.com/p/20190356来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 最近一段时间,把React学习实践了一把,算是又多掌握了一门新技术,虽然学习过程比较辛苦曲折,但熟练掌握后感觉还是很好的,以后又多了一种选择,在技术思路上也开阔了很多. 回想编程生涯这些年,2001年开始学习Asp,2002年学习Javascript,2003年学习http://Asp.Net/C#,2009年学习Objecti