之前我拿这个问题问过我的同事,也问过国内的一些Javascript高手。
最近,我一直在拿这个问题问自己。之所以会有这个问题,我基于两个前提:第一、我自认为自己不笨;第二、我学习和使用Javascript也有一段时间了,并且自己学习还算努力。
思来想去,我觉得我应该先回答下这个问题:如何提高自己的学习效率?
想象一下学校的场景,有一些知识,有的人就是学得比你快。为什么?可能他本来就比你聪明;可能他之前学过的、接触过的东西使他对这个知识有启发;可能他背地里比你花的功夫还多。不管哪一种形式,从旁观者的角度来看,他就是学得比你快,也就认为他的学习效率比你高。
排除第一个答案不讨论。我们来讨论下第二个和第三个答案。
答案二:“他之前学过的、接触过的东西使他对这个知识有启发”,我这里简单的归结为积累,关于积累问题,我上一篇博客程序员的学习和积累有谈到。
答案三:“他背地里比你花的功夫还多”,还有现象本身“他花的功夫比你少,学得比你还好”,关键字都落在了“功夫”二字上。如何下功夫、功夫下在什么地方?这又引出了一个新问题。
关于这个问题,纠结了这么多天,我的回答是:如何下功夫?动手!功夫下在什么地方?和工作有关的地方!
说到这,我又想起了我深受毒害的应试教育。应试教育缺乏的正是动手和实践知识的场所或曰方式。很多时候我总是懒于动手,为什么懒于动手?难道是我真的懒吗?我不承认,我不动手是因为我找不到动手的理由,或是不知道如何动手。拿写一个Javascript库或框架为例,为什么我到现在还没有写一个Javascript库?首先我找不到写它的理由,现在这么多流行、易用且被广泛使用的Javascript库或框架了,有必要再写一个吗?就算我写了,公司会使用它吗?如果没有对其他库或框架的深刻理解和认识,只是把各个库或框架中的一些东西拼凑在一起,甚至不知道其中一个函数实现的内部原理,那能叫我写的吗?其次,我找不到入手的地方。在没有对其他框架有深刻认识,自己能找到其中的缺陷、不足而加以修正和实现之前,我找不到入手的地方。
解释下答案:
功夫下在和工作有关的地方,这需要有强烈的责任心和主人翁意识。我们需要深刻理解这句话,“功夫下在和工作有关的地方”不是说,每天把上司交给自己事情做完、没有bug、达到需求就可以了。而是要做得更好,我想提出3点,也给自己树立目标:
1、用最优的方案实现需求。在自己的已有知识结构、能力、经验上用最好的方式实现需求,在此基础上努力搜寻业界相关的解决方案比较优劣,选出最佳的方案,最终实现需求。
2、关心自己已做完的工作,关注业界的相关新思想、新技术、新理念,把已完成的工作,用最新最优的方案予以重构,并在适当的时机在产品上得以实现。
3、关注自己所负责工作的未来,把产品当做自己的孩子,努力将他引向最美好的未来。努力将自己所负责的产品打造成为业界的标杆(特别是自己所负责的部分,那是自己影响圈内的事情)。
动手。如果你知道了功夫该下在什么地方,也自然知道了要动手做什么,动手也会成为快乐的事情。
不知道大家有没有这样的经历,当你有极大的渴望想把某件事情做好的时候,你会花很大的精力去研究怎样把事情做好,为此你会学习很多相关的东西,平时你可能花一周时间也学不会的东西,你花一个上午就学会了,还应用到了你要做到事情中,并且事后你会对所学过的东西印象深刻。
这,就是我对“如何提高学习效率”这个问题的回答。
很抱歉,写到这里我还几乎没有正面回答“如何快速成为Javascript高手”这个问题,如果你已经有所收获了,我感到很欣慰。如果没有,再谈谈Javascript,因为我目前还不算Javascript高手,下面这段算画蛇添足也好,算狗尾续貂也罢。
语言层面:编程语言之间是相通的,至少高级语言是相通的(相对于机器语言和汇编语言),Javascript是一门特殊的语言,既可面向过程、又可面向对象。有人喜欢它弱类型语言的特性,而将其语言本身的特性发挥得淋漓尽致。有人喜欢Java这类纯面向对象语言的严谨,而使用一些功能函数将其包装成完全的面向对象,并采用它实现了一些常见设计模式。所以说,真正要精通Javascript这门语言本身,需要对其他语言的一些理解(至少是了解)。鉴于目前Javascript从业人员的构成,非计算机专业科班出身的同学可能需要努力补补课。
环境层面:Javascript运行的环境目前有浏览器端和服务器端,将来可能有机会到嵌入式设备中。目前大部分应用主要集中在浏览器端,而浏览器厂商为了各自利益等各种历史原因造成的Javascript运行环境兼容性问题,也是Javascript从业人员较为头疼的问题。
业务层面:很多其他语言有功能完善的底层API、工具包,抱歉,Javascript暂时没有(浏览器端、nodejs开始有雏形,希望commonJS规范能够一路走好)。所以各种库、框架对于一些基本业务需求都提供了类似但非相同的实现。一个优秀Javascript程序员需要辨别各种框架或库中的业务实现,或编写出自己的业务实现。
综上,要在语言、环境、业务三个方面都精通,确实是需要花费很大的功夫。一个人的精力是有限的,其他语言积累几十年的东西,你想一个人在Javascript得到实现是不太可能的。术业有专攻,不是说你是Javascript高手,Javascript的方方面面你都能做到最好。
故,我认为“如何快速成为Javascript高手?”, 无解。无法快速!
“如何成为Javascript高手”,动手,把功夫下在和工作有关的地方上!
运用Javascript把工作做得最好,才是Javascript高手!
PS:这是本人对自身问题的思考和分析,之所以发到首页来,是希望能给有同样疑惑、同样迷茫的同学带来些思考。分享这篇博文花了4小时的写作时间,如果你有同感,如果你觉得我还算用心,请帮忙右下角推荐一下,这样能给更多的同学带来一点思考和帮助。如果你以为我是Javascript高手,只是来学习经验的,却没有半点收获,失望而归,请拍砖。
分享到:
相关推荐
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它主要负责实现客户端的交互效果,增强用户界面。这个压缩包“JavaScript很全的示例”显然包含了一系列的JS代码示例,旨在帮助开发者掌握和深化JavaScript...
### JavaScript - 快速指南 #### JavaScript 概述 JavaScript 是一种动态的计算机编程语言,以其轻量级和灵活性著称。它最初被设计作为网页的一部分,以增强用户体验,允许客户端脚本与用户进行交互,并制作动态...
资源名称:Javascript快速查询手册 内容目录: 前言 第一部分 命令查询 第二部分 Javascript语句与运算符 第三部分 参考表 附录A 任务参考 附录B Internet资源 术语对照 ...
这份“JavaScript快速查询手册”旨在提供一个全面且实用的参考资料,帮助开发者迅速掌握和运用JavaScript的关键概念和技术。 JavaScript的主要特点包括它是解释型的、基于原型的对象导向语言,并且具有动态类型。在...
JavaScript快速学习教程旨在帮助初学者快速掌握这门重要的编程语言。JavaScript是一种基于对象和事件驱动的脚本语言,主要用于增强网页交互性和动态性。它的基本特点包括:脚本语言、基于对象、简单、安全、动态以及...
《战胜Javascript必做练习50题》是一本专注于提升Javascript编程技能的实用教程书籍。...它通过理论与实践相结合的方式,帮助读者快速提升编程能力,增强解决问题的信心,最终成为一名真正的Javascript高手。
这个"javascript快速入门Source.rar"压缩包文件很可能是为了帮助初学者快速掌握JavaScript的基础知识和实际应用。以下是对其中可能包含的内容的详细解读: 1. **基础概念**:JavaScript的基础包括变量、数据类型...
该资源是对javascript语言的系统性介绍,写作首要原则是准确、全面,但每个知识点简明,将庞大的js知识压缩为仅A4纸45页的简明教程(约6万字)。主要面向的读者是PHP开发人员,文中附带对比了php与js,帮助PHPer快速...
Javascript 函 数 快 速 查 询 手 册 .
, 本书共分四个部分,从准入训练、见习训练、忍者训练和火影训练四个层次讲述了逐步成为JavaScript高手的全过程。全书从高级Web应用程序开发者所面临的挑战谈起,由浅入深地覆盖了测试和测试工具、函数、闭包、对象...
深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇) 深入理解JavaScript系列(11):执行上下文(Execution Contexts) 深入理解JavaScript系列(12):变量对象(Variable Object) 深入理解...
本文将对 ArcGIS JavaScript API 进行详细的介绍,并提供多个示例来帮助读者快速上手。 一、ArcGIS JavaScript API 概述 ArcGIS JavaScript API 是一个基于 JavaScript 的开发工具,允许开发者创建交互式的 Web ...
在本项目中,我们主要探讨如何使用JavaScript实现一个简单的购物车功能。JavaScript是一种广泛用于网页交互的编程语言,尤其在动态网页开发中扮演着重要角色。在这个实例中,我们将关注如何利用JavaScript操作HTML...
本资源包包含了多个关于JavaScript的重要参考资料,包括“JavaScript权威指南(英文版).chm”、“javascript5.5.chm”、“css2gb.chm”以及“JavaScript对象与数组参考大全 .chm”。 首先,我们来看“JavaScript权威...
开发者可以在没有网络连接的情况下,快速查找和学习相关API,进行代码调试和优化。通过仔细阅读和实践其中的例子,开发者能够更好地掌握JavaScript API的使用,从而编写出更优秀的前端应用程序。