JS工程师的成长路径

JS 说起来必须是一个神器,这个当年10天内被开发出来的神器,以一种谁也想象不到的速度快速发展,它击败了Java Applet,逼死Flash,当Android和IOS看似一统全球的时候,JS慢条斯理的和Html5一起蚕食App市场,甚至还出来了NodeJS 这种连后端都不放过的残暴东西。

原生和WEB的两种方式一直在争论不休,而我自己在三年前就是绝对的WEB支持者,windows对于JS支持的更彻底,只是Winphone一直不给力。

好 吧,对于拿NODEJS做后端工程项目我还是有点不情愿,然而提供各种辅助工具什么的还是挺不错的。JQuery,Ajax和RequireJS和 Angularjs和PhoneGap都是一些标志性的转变,还包括ReactJS。JS简直了,简直了,简直什么都不放过。

所以JS简单么?我带着你们了解一下JS工程师是什么样子的。

1 工作内容:

JS工程师其实分成两类,一个是套页面的,一个是前后端分离的。

对 于套页面来说,JS工程师的职责非常简单,一个是做一些简单的动画和交互和验证,轮播图,弹框,验证用户名是否为空等等。另一个就是通过Ajax取一些后 台数据,然后在页面上展示出来。那个时候的JS工程师并不被太多人重视,很多时候一些后端的人把前端的工作也做了--除了写CSS,大部分的后端工程师写 点JS还是不成问题的。

可 是前后端分离的出现,彻彻底底的改变了前端的世界。前端居然有架构了,前端居然也有“编译”的概念了(你能想象么,JS的项目居然不能直接打开源码直接使 用了,必须要经过编译才可以)。前端工程师和后端工程师只通过Json数据交互(感谢Nginx提供了一个完美的跨域解决方案,再也不用什么Jsonp 了),然后服务器端的同学发现:好简单啊,我对Android,对IOS,对Html都只需要提供一套API就够了~~

前 端同学更开心,再也不用去搭建各种悲剧的开发环境了!前端变的很轻,而且控制欲很强(AngualarJS好赞),页面跳转神马的SoEasy,而且也有 了Bower这样的包管理工具,还有类似于JSP自定义Tag的指令,MVC,还有了Service的概念,马丹,前端到底发生了什么!

所以我们现在说到的,基本上就是前后端分离的工程师,他们的工作职责就是和IOS&Android的工程师一样,跟后端定接口,确定框架和架构,分模块,然后跟后端联调互相吐槽对方是渣渣。

项目结束之后修复线上Bug,不停的跟用户说:在我这里是正常的,你换个浏览器试试?不行就清一下Cookie,再不然就换台电脑。

2 需要技能:

环境【IDE(WEBStorm,Sublime,EditPlus),源码管理(SVN/Git) ,WEB服务器(nginx)】

基础【Http,REST,跨域,语法,组件,F12,Json,Websocket】

框架【JQuery,AngularJS,Bower,RequireJS,GruntJS,ReactJS,PhoneGap】

业务【金融,教育,医疗,汽车,房产等等等等各种行业】

第三方【微信,QQ等各种第三方登录,支付,IM,地图,语音,视频,图片】

环境不说了,参考CSS的。

基础跟CSS差别就好大了,要有一些网络协议的基本概念,要了解什么是Http,什么是Https,什么是WebSocket,什么是Rest,各种JS的语法(太复杂的完全不用管,别去管什么闭包什么Prototype什么This的指向),Json是必不可少的东西。

框 架就多了去了。直接拿JQuery来学习就好,表去太在意什么原生语法,大部分场景你都不用担心引入一个JQuery的库导致系统变 慢,AngularJS真是一个好东西,表太纠结一些细节,Bower,RequireJS和GruntJS这些会有一些前端大牛帮你搭好框架你直接用就 好了。

想做点App就用PhoneGap,想尝试一下ReactJS就去试吧(我很想试一下然而看到有Render就看不下去了)。

必须提醒一次,如果你是从CSS转到JS的,这里强调的就是,你必须要懂业务逻辑,这跟CSS完全不需要懂业务逻辑简直是天壤之别,很多时候你并不是因为技术而无法学会JS,而是缺少对于业务逻辑的理解。

当然啊,这并没有完。还有无数的第三方库等着你,做微信呢你必须要用WX的SDK,要用百度地图呢就必须要用百度的SDK,还有各种支付啊神马的。如果你要做IM就有环信啊神马的。

所以。JS就是一个真正的程序员,一个真正的工程师,不但要能把代码实现,还需要理解需求,需要懂得编码规范,需要知道如何控制项目流程和进度风险,需要修复线下Bug,需要调优,需要做版本管理,需要制订接口,需要编写技术文档,还需要做新技术的调研或者是带新人。

现在你了解了咩?

3 发展前景:

我说了那么多,你们对JS的期望也很高了吧。坦白的说,有点高的离谱!

JS是唯一一个可以在两年之内薪水到20K的职业。虽然工作五年或者是七年的JS在薪水上差别并不太大,但是也已经让很多人难以置信了好么。

好多人在别的行业,工作十年都拿不到10K啊亲。

0~6个月:6K~10K

6~12个月:8K~14K

一年~两年:12K~20K

两年~五年:18K~30K

五年以上:24K~

JS的入门相对来说比CSS难的多,但是他的好处是学会一点是一点,并不像Java一样,绝对是前期Gank型英雄,到了6级就能四处杀人。Java是后期,要到16级以后才能出山才能够震撼全场。

所以JS相对来说比较平滑,而且现在学习的曲线也比较清晰,慢慢在业界都形成了相对完善的框架。JS可以选择前进的路有很多种,只要你不是太瞎,就没什么大的问题。

成长路径:JS菜鸟-JS初级工程师-JS中级工程师-JS架构师-UED-前端Leader-前端大牛

大概这个样子啦,JS工程师在后面有一点后续无力,一般来说,我还是强烈推荐JS,IOS,Android三者通吃,在我的带的Team中也一直要求他们这么做(虽然并未能完全实施成功)。

这三者有太多相似之处了,到最后你会发现,语言只是一种工具而已。要做的事情,其实是差不太多的,并不需要对所有的语言都特别熟悉,有一种打底的,其他的都可以随意去玩了。

4.入门门槛

必须有CSS基础,必须有CSS基础,必须有CSS基础。或者是有后端Java基础。

总之你要么是会了CSS,要么是精通了一种后端语言,千万不要CSS没学好,后端语言也不会就直接学JS,心里会没底,不踏实。

其他的都没什么了,列出来的基础知识,自己慢慢补就行了。

5.哪些行业适合做JS

IT界:CSS,然后是所有的都可以

其他界:所有的都可以

好蛋疼的结论然而事实上就是如此,这波JS的红利受益于微信,以及移动端的普及。我不确定在三年或者是五年之后会不会还是这种状态,然而三年和五年已经足够可以改变你的人生了,所以,你在等毛线?

6.职业限制

JS的职业限制也挺多的,主要就在于学习的方向上很容易误入歧途(至少在我眼里是这样的,相信我,我不是什么好人,我并不会我说过的每一句话负责)。比如说一直坚持喜欢用原生,各种喜欢写一些奇奇怪怪语法(我把我看不懂的语法都归结为奇怪的语法),各种回调等等等等。

学到一些好的框架其实很赞的,对于大多数人来讲,就够了。只是缺少一个清晰的指引。

有的时候你会发现,你对Http了解的比较少,会是一个瓶颈。

你对数组啊,循环啊不了解,是一个瓶颈。

你对MVC不了解,也是另一个瓶颈。

对Json不懂,不知道怎么定接口,也是个问题。

这些都学会了,也会遇到一些问题。就是JS的工程师三年,五年,七年的差别,大多数人都不算特别的大。

所以总会有人想学后端--但是我绝对不赞成学Java,NodeJS也可以不去学,不如去学习Python,更不要提PHP啦(我真心不喜欢PHP,不知道为嘛)

或者说,后端并不是语法,而是牵涉到算法,架构,性能,业务,选型等等跟前端几乎没有任何关系的知识,所以学习一门脚本语言,能做点简单的东西就好了。

还是需要把注意力转到IOS,Android上去。

7.去哪里学,怎么成长

如果你不想用这种方式去学习,还是我之前说的那些话,W3C,然后做点东西,跟着去一家公司实习。

参考文献 : 鸟哥笔记:互联网行业14个热门岗位

时间: 2024-10-05 06:05:19

JS工程师的成长路径的相关文章

从零开始学架构(一):架构师成长路径

内容摘要从架构的本质,软件工程,架构师职责,成长路径等方面,介绍什么是架构,架构流程以及架构师职责和成长规划. 本篇主题一.什么是架构二.项目中的角色三.架构师职责和工作内容四.架构工作流五.架构师成长路径六.架构能力模型七.扩展知识八.本章总结 一.什么是架构架构是系统的蓝图,描述了系统的结构和关键决策.包含系统的功能和非功能性需求,如何实现的,系统与子系统是如何划分的,系统之间如何通信的,系统功能如何设计的和交互的.包含重要的架构决策,系统组成,功能设计,技术选型,成本分析等架构的基础是设计

《构建之法》学习(3)——软件工程师的成长

<构建之法>学习(3)--软件工程师的成长 1.1个人能力的衡量与发展 积累软件开发相关的知识,提升技术技能 积累问题领域的知识和经验 对通用的软件设计思想和软件工程思想的理解 提升职业技能 实际成果      衡量软件开发的工作量和质量 项目/任务有多大? 花了多少时间? 质量如何? 是否按时交付? 1.2软件工程师的职业发展 职业发展--考级之路 职业成长--Steve McConnell版本 职业成长--大公司版本 职业成长--自我评估 1.3技能的反面 通过玩魔方的例子说明了技能提升的

读构建之法 第三章:软件工程师的成长

本章理论和知识点:评价软件工程师水平的主要方法 软件工程把相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.个人在团队中也有独立的流程.把每个人的工作有序地组织起来,就是团队的流程."有序",并不是"无争论".在大部分成功的软件团队模型中,各个角色有不同意见的冲突在

软件工程师的成长(构建之法)

上班的时候,高级的软件工程师其实和普通的软件工程师一样坐在电脑前敲敲打打,查下邮件,上会网,看看手机,聊会天.但是两者的区别就在下班的时候,高级工程师下班回家,而新入职的工程师还在电脑前奋斗. 软件开发不仅有团队的流程,还对每个成员有独立的要求.软件团队是由个人组成的,团队开发的大流程中是每一个人在做具体的开发测试用户界面设计管理交流等工作.个人在团队中也有独立的工作流程.但是个人的工作要用什么来评判呢,用上班时间?那是不是经常加时的同志能够赢得头筹? 初级软件工程师要成长要先积累开发相关的知识

(转)CSS与JS中的相对路径引用简单介绍

javascript和css文件中采用相对路径,其基准路径是完全不同的. 1.javascript引用资源(比如图片)相对路径是以宿主路径(被引用的网页比如你在首页index.php引用了某js文件,则index.php即为宿主)所处位置为基准. 2.css引用资源(比如图片)相对路径是以.css文件所处位置为基准! 大家在html中通常会导入一些外部的css.js文件,而其中一个比较容易被忽视的问题就是路径问题,有时候,我们在css.js中都有通过路径来引入一张图片的需求,当我们采用相对路径的

android程序员成长路径的思考

我之前就想过要写这个话题,不过之前没有什么认识,我只是在阅读别人的见解,看法.昨天晚上,我阅读了这篇文章<产品经理罗永浩:用户体验探索,没有尽头>,这篇文章描述了罗永浩对锤子手机设计细节的阐述,及罗永浩对产品经理的看法,认识.恰巧阅读了这篇文章,我从中想到了android程序员的成长路径. 成长路径之一,可以做出产品经理要求的各种界面效果. android程序员,是做android系统上的应用的,一个应用就是一个产品.我是这样认为的,你可以做出好的产品,那么,你就是优秀的android程序员.

《构建之法—现代软件工程》读书笔记之 — 软件工程师的成长

只有对软件工程有更清晰的了解,才能知道努力的方向,才能成为一个合格的软件工程师,邹欣老师用这一节的内容带我们走近软件工程师的世界.那么,一个合格的软件工程师到底是怎样的标准,为了达到标准,又需要我们怎样做呢? 首先,我们应该了解软件工程到底包括了什么? 软件工程包括了开发.运营.维护软件过程中的很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户的满意度.软件的可靠性和可维护

java ,js获取web工程路径

一.java获取web工程路径 1),在servlet可以用一下方法取得: request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/”) ”//upload//”; 2),不从jsp,或servlet中获取,只从普通java类中获取: String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); SAXReader()

Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结

上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题,那就是程序数据都已经查询出来了,但界面样式仍然十分丑陋,加载不了 css,js,图片等资源文件.当你在浏览器上直接输入某个css文件的路径时,直接得到404错误,而路径肯定没有错,其原因就在于在web.xml 中配置了类似如下的 spring servlet: 程序代码 <servlet>    <servlet-name&g