IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能密切相关。而如果你在企业中扮演的是工程师的角色的话,那么你的核心竞争力就是IT相关的知识与技能的储备情况。而众所周知,IT行业是一个大量产生新知识的地方,就拿Web前端举例,短短的5,6年时间,Web前端已经经历了数次变革,就目前来看变革还将继续下去。从以前的div+css网格化布局到JavaScript的方兴未艾,然后是各种JavaScript框架的百家争鸣,HTML5和CSS3的落地,移动web冲击下带来的响应式设计,jQuery,AngularJs,ReactJs等操作DOM元素截然不同的理念和方式,web component的标准化进程……为什么现在企业到处都在招前端工程师?好像突然之间,前端工程师成了稀缺资源。这里的原因之一就是很多前端工程师跟不上行业变化,无法达到目前市场上对前端工程师的能力和要求。在这种大环境下,工程师能够掌握快速学习的能力就变的至关重要。
笔者根据自身的亲身体会,以及结合对周围同事的观察,对如何快速掌握一门新技术(这里的技术包括一门新的IT技术,包括一门新的编程语言,抑或一种新的程序框架等)有着以下几点指导。
要想快速掌握一门新技术,首先有两个先决条件。
1.
首先思想要主动求变,敢于跳出的自己的舒适区,对任何技术都抱有开放的心态。贪图安稳是人的本性。而这种本性往往会阻碍你的发展。人所能了解的知识的多少,取决于自己的舒适区有多大,舒适区越大,与外界接壤的范围越大,就越感觉自己的无知。程序员至少要做到两点,不要对自己不了解的技术心存偏见,不要对自己不熟悉的技术心存恐惧。
2.
要化被动式学习为主动式学习。在中国很大一批程序员每天都是在被动式学习。什么是被动式学习?就是被人、事逼着去学习。今天新启动一个项目,技术调研不想采用新的技术,开发过程中碰到难题才会去查资料,整天就是把别人的、自已以前写的代码复制重用,复制以后出问题了也要花好长时间解决。举个例子,一个程序员使用了Spring好几年,都不知道Spring的核心理念,不知道Spring框架结构,不知道Spring各个组件功能,不知道Spring新版本的新特性。这是非常可怕的,因为你不知道这些东西,就无法采纳Spring的最佳实践,出现问题不知道如何快速定位,项目中的某些需求就无法使用Spring早已封装好的功能(因为你不知道Spring还能干这个)。主动式学习需要你未雨绸缪,不能临时抱佛脚。而且要把学习看做是对自己的积累和提高,看成是对自己的长期投资,不能抱有太强的功利性。
有人说,我就是喜欢舒适区,我就是不喜欢主动学习,有什么好的方式和方法改变这两点?说实话,我所能提供给你的帮助很有限。正如《后会无期》里的一句台词,“我听过很多大道理,可依然过不好这一生”。这两点还是更要靠你个人来实现。而接下来的一些点,我相信可以帮助到你。
1.
学习一门新技术前,先要搞清楚为什么要学习它?没这个技术前我们是怎么干活的?有了它以后我们又是怎么干活的?它带来了哪些改变?其实问这些问题,就是为了了解该技术解决或者简化了那个问题域的问题,又是采用了什么方式达到了这样的效果。就拿AngularJS为例,AngularJS最初是为了弥补HTML构建应用的不足。以前的HTML在设计时是为了展示多媒体信息,后来虽然拓展了一些动态功能,但是在应用web化的潮流下,HTML设计上的不足就越来越突出。比如DOM元素操控太繁琐、业务逻辑很难模块化、可测性低、开发效率底下等。而AngularJS采用了一种全新的设计来解决该问题,它提出了一系列概念,引入了数据绑定、标识符、路由、依赖注入等特性,大大简化了我们开发WEB开发的工作量。通过这样的方式能迅速建立起了对该技术的宏观认识,了解了其潜在的应用场景、应用方式以及一些局限性等。
2.
接下来就要实际使用一下该技术的核心的功能,强化对它的认识。方式就是参考该技术官网的Quick Start(快速开始)章节,一步一步来。现在的程序员越来越珍惜时间,文档的简洁性、完备性、易上手都成了是否采纳某项技术的指标之一。尤其是现在的各种开源组件,连文档都是开源的。所以很多文档都是完全按照程序员的思维写的,读起来很清爽。再拿Spring来说,想学习Spring4.0推出的Spring boot组件,那么可以访问其官网,页面上最大的按钮就是Quick Start。点击学习吧。页面是一个简单的例子,可能花不了你五分钟。如果还没过瘾,右边又列出了更多的 Getting Started Guides ,也是一步一步的教你进阶功能。有些人可能要问了,英语不好怎么办?请学英文。英文是一个优秀程序员的必备技能。可能也有人说,看文档时有各种杂音咋办。比如看Spring boot的start guide,需要之前对Spring有一定了解,需要知道tomcat、jetty是干啥的,需要有一定gradle或者maven使用经验…这些知识在演练Spring boot的那个小程序时都需要,但由于这些杂音的干扰,会拖慢学习的过程。摆脱这些杂音的唯一方式就是,对于那些不了解的知识点,也花时间去学习吧。所以学习是一个良性循环的过程,学的越多,就学的越快。
3.
前面两步能够保证你对一门技术入门,那么如何进阶那?这个阶段就是读了。从官网上把该技术的详细文档扒拉下来,使劲读吧。通读这些文档能让你进入它的实现细节,以及各种使用方式与场景,甚至一些最佳实践。比如Spring boot官方文档,详细到了牙齿。凡是你想到的、没想到的,文档都贴心的列了出来。如果你想学习Scala,那么请访问http://www.scala-lang.org/documentation/,各种文档应有尽有,读完就是大半个Scala专家。一门技术最好的文档必须是它的官方文档,如果不是,那么这门技术火不了。注意通读文档的过程中一定要在项目加以运用。如果在项目中没实践机会,自己可以写一些小的demo来实践。学习知识时实践与理论相结合的道理恒古不变。
4.
走完前三步,你对这门技术的理解已经比大多数人强了。你可以算掌握这门技术了。那么还有进阶方式没?当然有,那就是把你所学、所想讲出来,写出来,暴露在公众之下,接受批判,从而发现自己的不足,促使你进步。有空给大家做几个讲座,写几个系列文章,那么你在大家眼中就成了这门技术的牛人。你就有了各种机会来解决使用该技术遇到的各种疑难杂症,反过来加深和修正你的理解。没事上上StackOverFlow,回答别人几个问题,或者订阅该技术的问题列表,经常看一看。
5.
还可以再继续深入。加入国内/国际技术社区(国内没这样的社区咋办,机会来了,赶紧自己建一个),进一步发挥自己影响力。翻译、编写与该技术相关的书籍;如果该技术是开源的,那么有时间就提交修改把,自己就成了开发者一员了。这就是质的飞跃,从使用工具进阶到创造工具。
走完5步,你已经不是仅仅掌握这门技术了,你已经超神了好吧!有人可能又会问,能达到这五步的肯定要花很长时间,不是一般人能够到的高度。那当然了,这个过程肯定很难,但并非难到登天。至少我身边有很多这样的例子。其实你只要完成前三步,你就比50%的程序员牛了,完成第四步,你已经站在90%程序员的前面。
最后快速总结。重要的事情说三遍。
1.
主动学习很重要,主动学习很重要,主动学习很重要。
2.
官方文档很重要,官方文档很重要,官方文档很重要。
3.
实践很重要,实践很重要,实践很重要。
作者:黄博文@无敌北瓜
出处:http://www.cnblogs.com/huang0925
黄博文的地盘
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分享到:
相关推荐
在编程世界中,掌握一门语言是每个...总结来说,掌握一门编程语言需要理解其基本概念,实践编程,学习最佳实践,并保持对新技术的关注。通过不断的学习和实践,你将能够精通C、C++、Java或C#,并成为一名出色的程序员。
go语言是目前开发语言排行榜中前三的佼佼者,呈逐年上升的趋势。但是如何学习go语言呢?如何在极端的时间内快速的掌握一门技术(语言、原理、框架、规范、使用等等)?
许多学校和在线课程都将Python作为教学语言,帮助学生快速掌握编程思维。Python的普及也催生了大量的社区和资源,如Stack Overflow、GitHub和Python.org,为开发者提供了丰富的学习和交流平台。 总的来说,Python的...
- 学习Go语言不仅可以掌握一门优秀的编程语言,还能为将来进入区块链开发领域打下基础。 ### 部分内容:“第01套-Go语言快速入门(2018年2月更新精品,推荐观看)” #### 知识点7:资源获取方式 - 提供了百度网盘的...
在信息化社会中,掌握一门编程语言已经成为越来越多人的需求。本文将以Shell脚本语言为例,介绍如何在较短时间内高效地学习一门新的编程语言。无论你是IT行业的专业人士还是其他领域的爱好者,以下分享的学习方法都...
【标题】"script经典框架3" 涉及的核心知识点主要集中在JavaScript的框架技术上,JavaScript作为一门广泛应用于Web开发的脚本语言,其框架在提高开发效率、优化代码结构和增强可维护性方面起着至关重要的作用。框架...
Java作为一门广泛使用的编程语言,始终在不断发展和更新,以适应不断变化的软件开发需求。在"java最新技术点"这个主题中,我们主要关注的是Java在近年来的一些关键技术和框架的发展,包括jQuery、JSON、iBatis、...
使用场景及目标:读者可通过本教程快速上手 Rust,不仅限于掌握一门新的静态类型编译器语言,同时还能了解到这门强调安全性与性能的现代语言背后的设计哲学。 其他说明:文中详细解释了许多关键概念,比如变量的...
在压缩包中的"awesome-cheatsheets_master.zip"可能包含了这个项目的源码或者预览版本,可以解压后查看详细的JavaScript备忘单,以深入理解和掌握这门语言及其相关技术。 总的来说,JavaScript是一门功能强大且灵活...
计算机技术的快速发展使得计算机应用教育相对滞后,教学内容和知识结构的应用性、实践性、创新性以及知识更新的速度都跟不上新技术的发展和变化,与社会需求总是有一定的差距。 再者,实践教学环节薄弱。实践性教学...
1. **结合C#与.NET框架:** 本书的最大特点是将数据结构与C#语言和.NET框架相结合,充分展示了如何利用.NET框架提供的功能来实现各种数据结构和算法。这有助于读者更好地理解和应用这些概念。 2. **实践导向:** ...
《数字图像处理基础框架代码》 本程序是一个用于数字图像处理的基础框架,旨在为具有相关经验的研究人员提供一个可扩展的...通过深入理解和实践这些代码,可以掌握数字图像处理的核心技术,并进一步应用于实际项目中。
### C#语言简介 C#(C Sharp)是由微软公司在...随着.NET Core和.NET 5等新技术的发展,C#的应用范围还在不断扩大,未来有着广阔的发展前景。对于想要进入软件开发行业的新人来说,掌握C#将是一项非常有价值的投资。
然而,随着微软推出的C#语言和.NET框架的不断发展,这些新技术为数据结构的教学和实践提供了全新的视角。 **C#语言的特点:** - **简洁性**:C#语言设计简洁明了,易于理解和学习。 - **面向对象**:C#是一种完全...
移动软件研发工程师负责开发移动互联网应用产品或框架、移动应用核心技术研发、学习和研究移动客户端新技术、根据开发过程中的体验对产品提出改进建议、配合市场等其他部门,提供产品相关技术支持。所需技能包括精通...
此外,Python的开源文化促进了技术创新,不断有新的库和框架涌现,如TensorFlow用于深度学习,Scikit-learn用于机器学习,Matplotlib用于数据可视化等。 随着人工智能和大数据的快速发展,Python的重要性日益凸显。...
1. **掌握一门语言**:学习并精通一门编程语言是成为技术牛人的第一步。根据部分提供的内容提到的“初学者可以先学C/C++、Java等”,这些语言因其强大的功能性和广泛的应用场景而备受推崇。例如,C/C++由于其高效性...
Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题...
《汇编语言与接口技术》是一门深入理解计算机底层运作原理的重要课程,实验部分通常涉及到实际操作和编写汇编代码。在本实验中,我们将学习如何在Windows XP平台上利用Editplus和其他相关软件建立一个集成的汇编语言...
在IT领域,特别是软件开发行业中,C#作为一门强大的、面向对象的编程语言,自微软推出以来便受到了广泛的关注和应用。对于初学者而言,掌握正确的学习资源是至关重要的,以下是从给定文件中提取并扩展的相关知识点,...