还在为工作发愁?学JavaScript吧
事实上,每家专业招聘机构,从Glassdoor.com和Linkedin到美国劳工部,都报导了就业市场对开发人员需求的增长速度出于意料地快。这种需求可能已经不新鲜了,但是就业市场对哪种开发语言的需求量最大,依然是个热门话题。虽然对HTML5技能的依然需求保持稳定,但真正必须掌握的语言就是JavaScript。
在Monster网站的技术求职趋势报告中,特别指出了JavaScript是必须掌握的几门技能之一,这要得益于企业级Web应用的增长。在2015年1月,Mashable网站列出了对于开发人员来说最重要的15项技能,JavaScript排在第二。相比前几年JavaScript并不受欢迎,这种变化很明显。博客作者Glen Maddern的文章代表了对JavaScript的全新思考,他相信JavaScript正从一种“凑合”的语言变成一种优秀的语言。
JavaScript好在哪里?
为什么如今JavaScript如此火爆?首先,很多企业都在采用它,它在很多技术系统中均扮演了正面的角色。根据JavaWorld的Martin Heller的说法,JavaScript不仅仅可以搭配HTML5和CCS来构建Web前端,在移动应用中也经常见到它的身影,甚至在后端开发领域,它也通过Node.js服务器在发挥作用。如果你去读读这篇文章《全栈JavaScript介绍》,你就会理解JavaScript远远不止是一门“90秒钟可以掌握”的编程语言那么简单。JavaScript在产品经理和设计师人群中越来越流行,因为它实现了很多具有良好用户体验的功能,支持大多数流行的网页浏览器和平台。这对于设计师和终端用户来说是好消息。
随着移动领域的飞速发展,消费者和企业用户不管使用什么设备,都开始期望得到高响应性的(译者注:指针对不同设备的显示屏幕自适应地显示内容)、无缝的Web体验。那些理解大势所趋的品牌,都撤下了m.开头的移动版网站,开始提供完全动态的体验,它们具有丰富的功能,性能良好,而且可以根据环境为你展示不同的内容。此外,客户端为了达到使人惊叹的效果,也需要动画和交互;最早,Flash是这些目标的解决方案。如今,JavaScript能得到更好的效果。
以前原生应用中很多很酷的功能,在网页浏览器中只能用Macromedia的Flash或微软的Silverlight这样的插件才能做出来。今天,JavaScript配合HTML5和CSS3就能达到这些效果。复杂的数据交互(比如内嵌过滤、即时反馈、基于上下文的规则等)以前需要花数个星期才能编出来,但现在如果用流行的JavaScript库和框架来操作和实现,能达到开箱即用的效果。由于这些原因,前端开发人员的职位需求描述已经从“有jQuery经验”,变成了“有Angular、Node、Bootstrap和jQuery经验”。作为一门语言,JavaScript在迅速成长,但高质量的开发会不断地催生新的需求。
局限性
光有技术还不能造就一个优秀的开发者。他要有从整体角度去理解和处理应用的能力。JavaScript可以成为架构和开发策略的一部分,但它本身并不能作为一种架构或开发策略。
换句话说,JavaScript很不错,但是它不是万能的。有经验有能力的开发者知道,何时何地应该如何去使用它。但开发新手不一样,就像他们对待任何编程语言那样,一旦他们熟悉了某种库或框架,就想着用它来搞定一切,哪怕它对某个任务来说并不是很合适。这个问题要潜伏一段时间才能暴露,这将会给业务的可伸缩性、可维护性和性能带来负面影响。
举个例子,在一些发展中国家,网络带宽、计算机的CPU和内存资源都很成问题,这种情况JavaScript就不是最好的选择。甚至,用户的浏览器版本落后最新的版本很多,也是很常见的事情,所以如果大量使用JavaScript的话,性能和兼容性就会成问题。如果你产品的受众是世界性的,那就少用些“最前沿的UI”,否则产品到部分用户手里会产生糟糕的用户体验。此外,在安全管控甚严的工业领域,JavaScript也不是开发应用的好选择。
架构师和资深开发人员理解上面这些因素,知道什么时候使用JavaScript是正确的选择,什么时候不是。这里的底线就是把这方面的最佳实践时刻牢记,确保用户体验不受影响。
JavaScript就业市场展望
JavaScript会经得起时间考验吗?会长盛不衰,还是昙花一现,很快被更好的技术所替代?换句话说,用JavaScript来开发你的企业应用是否保险?
很多开发者同意Flash已经穷途末路。部分人认为Flash退出历史舞台是自然演化的结果,但更多人都知道是谁击败了它。JavaScript已经替代了Flash,至少在下个十年中,它会继续扩张,在各种软件系统中承担越来越多的角色。我们来考虑一下Flash提供的功能——主要是UI方面的——再把这些UI功能的数量乘以几倍来估算应用程序所有方面的功能,可想而知JavaScript将带来多大的价值。JavaScript会有过时的一天吗?当然会,但我们还不知道是何时。
另一个有可能促成JavaScript长盛不衰的因素是它总是在不停地演进。新的JavaScript库和框架在不断地涌现出来。就在几年前,AngularJS还处于beta测试中;而今天,就业市场对有AngularJS经验的开发者的需求空前高涨。并且这仅是一个例子,说明JavaScript的前沿成果演变成市场主流的速度有多快。当然知识是多方面的。解决重大问题的能力、最佳实践以及能够清晰地理解这些库和框架如何解决我们面临的挑战,是人事经理为人才定价的最重要依据。
要精确预测一门技术会如何演进是不可能的,但是我们可以确定今天用JavaScript写的应用,在未来好多年中都需要得到持续的支持。就算我们乐观地认为JavaScript会很长寿,目前的这些产品也需要在未来十年中得到多次升级和修改,以适应企业级的应用。为了能维持业务,或增强JavaScript写的应用,企业在当下以及未来都需要拨出预算来和外部机构合作,或雇佣内部的专家。
JavaScript开发者下一步该做什么
对于那些经历着Web技术演进并保持自己的JavaScript技能持续更新的开发者来说,这一切都是好消息。但是,刚刚入门的开发者(或刚刚参加工作的年轻开发者)要想抓住这一波机会,应该做些什么呢?当下从事技术工作的迷人之处就在于,所有的文档、示例代码以及其他开发者讨论过的问题,只要稍一搜索便唾手可得。
转投JavaScript的开发者,或者想试水现代Web技术的人,可以从在线进修课程开始。像Codecademy这样的网站免费为初学者提供了JavaScript课程。如果开发者希望通过实战来学习尽可能多的知识,那么订阅Pluralsight可能是更好的选择。Pluralsight有更多的课程门类可供选择,从AngularJS基础课程,到使用Backbone.js在服务端存储数据,样样都有。这些课程都由业界专家编写并解说。
这些库和框架的开发者社区是很强大的。如果你需要面对面讨论解决问题的学习方式,那么你可以考虑找一个本地学习小组或上Meetup去找一个,这类小组通常会分享关于特定技术问题的知识。像StackOverflow这样的网站也是一个知识宝库,开发者遇到的常见(或不那么常见)的问题都会有。
大多数顶级的框架和库都是开源的,并且托管在GitHub上(比如,GitHub AngularJS)。对于当代软件开发来说,GitHub是一笔无法想象的财富,它提供了大量在不断演进的优秀软件。开发者如果希望帮助开源软件发展,并获得开发者社区的认同,可以通过解决bug、更新wiki和提交新功能补丁等方式来参与进去。而且越来越多的技术招聘者在筛选阶段要求查看应聘者的GitHub或Bitbucket的账户,使得这一点变得更加重要。
你的职业发展、受欢迎程度和薪水从没有像现在一样,掌握在自己手里。你是否还记得几年前,就业市场对iOS开发者的需求量空前的大?如果像你这样的UI开发者当时只能站在边上看着那些招聘广告流口水,那么好消息来了:现在是你的时代了。由你统治的市场来了,并将繁荣很久。
关于作者
Areos Ledesma是AIM咨询公司的企业发展总监。曾经担任该公司数字体验和用户体验设计的解决方案总监。Areos是一名经验丰富的咨询师,他在高效领导项目管理方面有卓越的声誉。他精通于管理一项大规模行动的方方面面,包括数字策略、用户体验和视觉设计、快速成型、内容策略、开发、测试和计量。
Will Asrari是AIM咨询公司的解决方案咨询师和高级移动开发工程师。Will是微软认证的ASP.NET工程师,他精通iOS和移动Web开发。他关于数字体验和移动的解决方案致力于用户体验设计原则和以及移动技术如何能创造出吸引人的客户体验,同时又能满足业务目标。
英文原文:JavaScript is Cool…and the Market is Hot
还在为工作发愁?学JavaScript吧的更多相关文章
- Java学到什么程度能找到一份还不错的工作
我的读者里有很多 Java 新人,新人是指正在学 Java 的.以及工作时间不长的年轻人,他们经常问我一个问题: Java 学到什么程度才能找到一份还不错的工作? 今天我就从我自己面试新人的角度来回答 ...
- 前端网老姚浅谈:怎么学JavaScript?
作者:小不了链接:https://zhuanlan.zhihu.com/p/23265155来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信问我( ...
- 怎么学JavaScript?
作者:小不了链接:https://zhuanlan.zhihu.com/p/23265155来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信问我( ...
- 统一回复《怎么学JavaScript?》
作者:小不了链接:https://zhuanlan.zhihu.com/p/23265155来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信问我( ...
- 从头开始学JavaScript (十)——垃圾收集
原文:从头开始学JavaScript (十)--垃圾收集 一.垃圾收集 1.1javascript垃圾收集机制: 自动垃圾收集,执行环境会负责管理代码执行过程中的使用的内存.而在C和C++之类的语言中 ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- 【跟着大佬学JavaScript】之数组去重(结果对比)
前言 数组去重在面试和工作中都是比较容易见到的问题. 这篇文章主要是来测试多个方法,对下面这个数组的去重结果进行分析讨论.如果有不对的地方,还请大家指出. const arr = [ 1, 1, &q ...
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- 从头开始学JavaScript (十二)——Array类型
原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...
随机推荐
- 获取更新元素文本html()
html() 方法,获取元素文本,包含元素标签,也可以设置元素的文本值(包含元素标签),还可以包含子元素标签.相当于JavaScript中的innerHTML. <!DOCTYPE html&g ...
- 《剑指offer》-链表的第一个公共节点
题目描述 输入两个链表,找出它们的第一个公共结点. 这题目是指针相关的题目.初步要判断出来,有公共节点的两个指针,应当是链表后半部分相同.这样的话,当遇到第一个相同节点(不是node的val相同,而是 ...
- hdu 1004 颜色与数字(map水题)
Sample Input5 //Tgreenredblueredred 统计颜色的次数 输出最多的颜色3pinkorangepink0 Sample Outputred pink # include ...
- huffman编解码英文文本[Python]
对英文文本的字母进行huffman编码,heapq优先队列构建huffman树 python huffman.py source.txt result.txt import sys import he ...
- 【BZOJ5110】[CodePlus2017]Yazid 的新生舞会
题解: 没笔的时候我想了一下 发现如果不是出现一半次数而是k次,并不太会做 然后我用前缀和写了一下发现就是维护一个不等式: 于是就可以随便维护了
- bzoj4184
题解: 按时间分治线段树 然后线性基维护一下就好了 尝试了一下循环展开并没有什么效果 代码: #include <bits/stdc++.h> using namespace std; ; ...
- Python 中常见错误总结
IndentationError: unexpected indent Python 中强制缩进,, IndentationError: unexpected indent 缩进错误 这类错误非常常见 ...
- (转)java面试总结-(hibernate ibatis struts2 spring)
说说Hibernate对象的三种状态 Hibernate对象有三种状态,分别是:临时态(Transient). 持久态(Persistent).游离态(Detached). 临时状态:是指从对象通过n ...
- POJ 3070 Fibonacci 【矩阵快速幂】
<题目链接> Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 ...
- Python常用模块--logging
(转载) 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python内置的标准模块,主要用于 ...