为什么优秀的前端工程师这么少?

「为什么优秀的前端工程师这么少?这么少?少?」,这是我在敝司HR群里最常听到的抱怨之一,甚至超过吐槽iOS和Android开发。。。

因为天真的HR mm们一般认为:「前端开发相较于其他领域的开发要容易的多,为啥CTO还要求那么多,推荐的前端被退回来一个又一个?」

我曾经也是这么看前端的,不就是切切图、排排版、加个动图嘛,后来准备学前端,才发现前端开发根本不是软!柿!子!

既然开了头就不能半途而废,发挥文科生的精神我查阅了一些前端的文献,从了解前端历史开始进入这个领域。

首先,我可以很肯定的回答第二个问题,是的,国外的优秀前端也是香饽饽,很难招!
先甩一张图:
[img]http://pic3.zhimg.com/d7373150863e9d272f350e893bcb5686_b.jpg[/img]
根据indeed.com抓取的数千家网站的职位显示,[b]目前「HTML5」岗位是需求增长最快的开发岗位,在所有开发职位中排名第一[/b],MongoDB和iOS紧随其后位列第二、第三。

可见,HTML5可以说是最热门的前端岗位了,在2010年和2014年底有两次爆发性增长,现在在美国的岗位需求甚至超过了iOS。

所以市场上优秀的前端工程师相对较缺少,是一个国际问题。

再来回答第一个问题,前端工程师的地位和薪水上涨除了供不应求的市场经济因素,与前端工程师独有的特性分不开。作为前端初学者,对前端开发的了解还比较浅,分享一篇看到的blog吧。

Jose Aguinaga是一位美国的前端工程师,根据自己求职、面试、以及项目工作的经验回答了这个问题,文章比较长,主要从三个角度回答了这个问题:

1、[b]前端是相对来说的一个新领域[/b]
这些岗位的大多数已经存在了多年,但是在web行业对它们做出合理规范的要求却是最近10年才开始做的。

2、[b]普遍存在误解[/b]
「大多数人心中的前端工程师」和「实际上前端工程师的工作」完全不是一个事儿。

3、[b]大量糟糕的前端工程师的存在[/b]
「糟糕的前端工程师」与「优秀的前端工程师」做的工作也不是一个level的事儿。


下面是原文,我简单翻译了一下。(专业词汇好多,有误请指出,轻拍~原文地址:[url]why-cant-we-find-front-end-developers[/url] )

[b]一、相对来说,前端是一个新领域[/b]

可能很多人认为前端开发和网页开发类似,而网页开发已经有20多年的历史,所以前端并不是一个新领域。然而,[b]前端工程师的概念中的接口技术实现和用户体验作为一个专业的工作领域[/b],却无疑是很新的。大概几年前,前端开发的技术增长迅猛,如下图所示:
[img]http://pic4.zhimg.com/80e48378d618e8f1db3c6beadf54693b_b.jpg[/img]
过去几年前端工程师的可视化增长趋势 by Google Trends

对大多数互联网圈外的人来说,[b]网页开发是横亘在网页可视化设计和技术实现之间的一条模糊的界限[/b]。毕竟,网页开发的确是一部分前端工程师的工作,并且人们想象前端工程师只专注于用户接触的部分。
最近,将接口技术实现和用户体验作为作为一个专业领域的概念才刚刚兴起。十五年或更久以前,网页的可视化设计和技术实现所需要的资源是平均分配的。随着网站的发展——网站不仅是一个登录页面,工程资源的需求越来越明显。人们开始专门学习网站专用的Javasript、后端技术、UX、数据库,甚至系统设计。
今天,[b]一个像AirBnB/Facebook/Quora的Web应用程序,投入的工程资源比设计资源多得多[/b]。换句话说,如今,做出网页的视觉设计比技术实现要更快。这并不是说和20年前相比,可视化设计没那么重要,或投入的资源更少,而是说如今的网页需求要求更多的工程师供应。
[img]http://pic3.zhimg.com/bdecfc0700c767bdc1d65e830cca6742_b.jpg[/img]
因为一个Web应用程序的技术实现包含了多种领域,在90年代「网站工程师」是多面手:他们有的来自数据库管理员和系统管理员,有的来自后台工程师,软件工程师,UX工程师和前端工程师。最新的可能人们最恐惧:用Javascript,HTML和CSS修修补补一个视图,让它和所有的浏览器都适配。要享受前端工程师,你必须对视觉设计有兴趣(或者乐于做一个受虐狂▼)。
[img]http://pic3.zhimg.com/042571cfeebc5e7a8fa3e50e6d3ad6ae_b.jpg[/img]
很显然,要处理大量的Web应用程序需求,技术任务就要进行分类,以便于多人同时处理网站请求。我不知道哪个任务需要最多的时间,或者哪个是最难的,但是事实上现在已经不可能一个人快速地解决所有的技术细节了——这也是多家网络机构和企业关心的问题。因此,所有之前我提到的工作描述(后台工程师、DBA等等)都被归入了web行业。请注意:[b]这些岗位的大多数已经存在了多年,但是在web行业对它们做出合理规范的要求却是最近10年才开始做的。[/b]
[img]http://pic1.zhimg.com/4882de34025531d6291828212691fb1c_b.jpg[/img]
现在还有一类人是独自处理一个Web应用程序的所有问题,即「全栈工程师」,但是优秀的全栈工程师同样数量稀少。

现在,创业公司已经很清楚,要想成功可能需要覆盖一个Web应用程序的诸多技术方面:前端、后台、DBA、运营等等。PaaS(Platform as a Service)的诞生帮助创业公司剥离了运营,同时多种BaaS(Backend as a Service)服务,比如Parse.com,甚至可以为你的应用提供数据库模型和终端(当然你仍然需要某人帮你设计模型)。前端还没有被提供这种服务,但是已经有一些服务可以让你购买登陆页面的前端模块和组件;如果你想要创造一些真正的Web应用程序,除了求助前端工程师,你别无他法,就像你要创立一个品牌你也绕不开请一位设计师一样。

[b]二、普遍存在的误解[/b]

寻找前端工程师难的另外一个很重要的原因,就是它是被广泛误解的领域。正如前面提到的,大多人都认为前端开发是一个「相对于来说更简单的领域」。不妨用一个已经过时的模式描述这个误解:
[b]大多数人心中的前端工程师是:[/b]
1、把Photoshop文件、图片或者线框做成一个页面;
2、偶尔设计Photoshop文件、图片或者线框;
3、用JS实现动画、过渡效果;
4、用HTML和CSS编程,实现网页的内容和形式。

[b]事实上,前端工程师在做的是:[/b]
1、在设计师和工程师之间创建可视化的语言;
2、根据设计稿定义一组代表内容、品牌和功能的组件;
3、为Web应用程序的框架、需求、可视化的语言和规格设定基准;
4、根据设备、浏览器、屏幕、动画来划分web应用的工作划分;
5、用QA基准来保证指南来确保品牌忠诚度、代码质量、产品标准;
6、调节Web应用程序的样式,包括间距、字体、标题、图标、布局等等;
7、根据不同分辨率、横屏竖屏等,调节Web应用程序的样式;
8、标记 Web 应用程序,使之语义化,SEO 友好;
9、通过API获取内容要考虑友好性、电池消耗性、设备和客户端的特性;
10、开发客户端要考虑动画的流畅、延迟加载、交互、应用工作流程,大多数时间用来考虑渐进增强和向后兼容的标准;
11、保证后台连接安全,采取跨地资源共享( CORS )的程序考虑,防止跨站点脚本( XSS)和跨站点请求伪造( CSRF ) ;
12、最重要的是,尽管要符合以上标准,但是无论现在还是将来永远是「用户第一」。

为了实现上述目标,前端工程师采用了多种工具,从可视化工具(Photoshop/Adobe/Macaw/Sketch),到编程工具 (IDE’s,命令行,源代码版本控制, Bash脚本,建设任务) 。有时,我们甚至要照顾市场(Newsletters,Campaigns,分析,SEO,社会媒体) 、 UX (动画、过渡、反馈、接口、可视化语言),到内容改进(断点、避免孤立词汇、可读性、颜色) 。

[b]三、存在糟糕的前端工程师[/b]
或许难以招到优秀的前端工程师最明显的原因就是:大量糟糕的前端工程师的存在。正如大家知道的,前端工程师的入门门槛非常低。JS、CSS、HTML并不是很难掌握的语言。只要花一点时间,谁都可以通过网上教程(CodeAcademy/CodeSchool)学会。但是学习Erlang(作者自己最爱的变成语言之一)、Go,甚至ANSI C,都需要你掌握很多计算机的知识。调整网页中的颜色和图片是非常容易的,但是了解网络的软肋却是完全不同的事情。
最终,前端工程师市场上被做这些事的家伙搞坏:

[b]糟糕的前端工程师是这样做事:[/b]
1、滥用JS库,因为他们实际上并不了JS的内部(e.g. 一切都用jQuery);
2、滥用JS插件,抄别人的代码哪怕自己根本读不懂(e.g.jQuery.doParallaxPls.js);
3、给Web应用程序添加CSS框架,却只用到CSS/JS的5%,没有看到任何的需求、设计或者比较和评价;
4、认为只要添加了CSS框架,网站就可以「有求必应」;
5、一边在说着「响应式web设计」,却对服务器端技术一无所知;
6、用CSS编程时不管预处理器、命名规范等,却用不合适的selector/ids/magic numbers等;
7、忽视表现、内存泄露(并不理解内存泄露的真正含义),不会检测代码;
8、不会用指标衡量一个产品,或者这种指标旨在自己的电脑、浏览器、设备有效;
9、忽视软件技术。

虽然CS背景并不是成为一个优秀前端工程师的必备条件,但是[b]计算机和软件的基础对你用JS或浏览器编程都非常重要[/b]。优秀的前端工程师知道,web可能是最有影响力的平台和环境之一,所以在那里执行的程序[b]必须[/b]被小心对待,甚至比在任何一台可视化机器上的任何一种语言更小心。
一位优秀的前端工程师不仅要考虑web技术和语言,并且还要了解所有不同的组件、系统和概念。

[b]以下是优秀的前端工程师在即时面对普通的任务也会做的事情:(这才是市场急需的前端)[/b]
1、DNS解析、使用CDN和关于multiple Hostnames as part of resources request.
2、HTTP Headers (Expires, Cache-Control, If-Modified-Since)
3、Steve Souders的所有规则(High Performance Websites)
4、如何解决PageSpeed, YSlow, Chrome Dev Tools Audit, Chrome Dev Tools Timeline显示的所有问题;
5、何时把任务传到服务器和客户端;
6、缓存,预取和负荷技术的使用;
7、Native JS,知道何时从头开始做,何时查找别人的代码,同时可以评估这样做的优缺点;
8、modern MVC Javascript libraries (e.g. AngularJS, EmberJS, ReactJS), graphic libraries (e.g. D3, SnapSVG), DOM manipulation libraries (e.g. jQuery, Zepto), lazy loading or package management libraries (e.g. RequireJS, CommonJS), task managers (e.g. Grunt, Gulp), package managers (e.g. Bower, Componentjs) and testing (e.g. Protractor, Selenium)的相关知识和用法;
9、CSS标准、modern conventions、 strategies (e.g. BEM, SMACSS, OOCSS)的知识和用法;
10、JS的电脑知识(内存管理,单线程的性质,垃圾收集算法,超时,范围,提升,模式)

[b]结论:[/b]
现在,[b]前端工程师终于前所未有的在web中有了一席之地[/b]。可能是由于多设备、浏览器和Web标准的演变的革命,所以寻找能够专注于Web应用程序用户端的人变得很迫切。全世界的前端工程师和开发者正在参与到那些我们曾想象web可以给我带来的一切的变化的产品。现在存储着我们所写、听、email、看的所有实体都和云相连。
虽然现在招前端工程师很难,但是我知道越来越多的人将会加入前端的大军。不仅是因为大多数前端工作提供的优渥薪水和办公环境,也是因为web中的前端编程变得越来越让人兴奋:通过网络提供服务,你有机会接触千万用户的生活,所有的一切都汇聚于一个叫浏览器的东西——它消泯了局限,使得人们可以分析,描绘和渲染任何一种疯狂的想法。

加油吧,前端!

From http://www.zhihu.com/question/29875948/answer/45937246
### 回答1: 要成为优秀前端工程师,有以下几点建议: 1. 学习 HTML、CSS 和 JavaScript 这三门基础技术,掌握常用的语法和 API。 2. 熟悉常见的前端框架,如 React、Vue、Angular 等,并学会如何使用这些框架来构建 Web 应用。 3. 关注前端领域的最新发展,不断提升自己的技术水平。 4. 注重用户体验,学会使用工具来分析和优化网站的性能。 5. 注重代码质量,学会使用版本控制工具,并养成良好的编码习惯。 6. 善于沟通和协作,能够与后端工程师和产品经理等团队成员配合,共同完成项目。 ### 回答2: 要成为优秀前端工程师,首先需要全面掌握前端技术。 首先,对HTML、CSS和JavaScript的基础语法要熟悉。掌握HTML的结构和标签,了解CSS的样式属性和选择器,学习JavaScript的基本语法和常用方法。此外,要了解Web标准和浏览器兼容性,以便编写优雅且兼容不同浏览器的代码。 其次,要学习掌握各种流行的前端框架和库,如React、Vue和Angular。这些框架能够提供更高效、可维护和具有良好用户体验的前端应用程序。 另外,要深入了解前端性能优化和调试技术。通过减HTTP请求、压缩代码、使用合适的缓存策略等手段来提高网页加载速度和性能。同时,要熟悉主流浏览器的开发者工具,并能够利用这些工具进行代码调试和性能分析。 而且,要有良好的代码管理和团队合作能力。了解版本控制系统如Git,并掌握常用的代码管理工作流程,例如分支管理、合并和冲突解决。此外,学会与团队成员协作,合理分工、高效沟通,共同完成项目。 最后,要不断学习与研究前端技术的最新动态。前端技术发展迅速,时刻关注最新的前沿技术和趋势,参加行业研讨会和培训课程,积极参与开源社区,不断提升自己的技术能力。 总的来说,成为优秀前端工程师需要不断学习和实践,掌握基础技术、深入了解前端框架、掌握性能优化和调试技术、具备良好的代码管理和团队合作能力,并保持对前端技术的持续学习和追求。 ### 回答3: 要成为优秀前端工程师,需要具备以下几个方面的能力和品质。 首先,需要扎实的技术基础。前端工程师需要熟悉HTML、CSS和JavaScript等技术,并掌握各种前端框架和工具。通过学习相关教程和参与项目实践,不断提升自己的技术水平。 其次,要有优秀的问题解决能力。前端工程师常常面临各种问题和挑战,需要有快速分析和解决问题的能力。学会利用互联网资源,查询和学习相关知识,通过不断实践和调试,找出最佳解决方案。 第三,要有良好的团队合作意识。作为前端工程师,往往需要和UI设计师、后端工程师以及产品经理等其他团队成员紧密合作。要学会倾听他人的意见和建议,善于沟通和协作,共同完成项目任务。 此外,持续学习也是成为优秀前端工程师的必备品质。由于前端技术更新迅速,需要不断学习新的技术和工具,跟随行业的发展趋势。参加相关的培训课程、技术讲座和行业活动,加强自身的专业素养。 最后,为自己设定目标和规划发展路线。前端工程师职业发展广阔,可以从事移动端开发、前端架构设计、性能优化等不同领域。制定明确的职业规划,有针对性地学习和发展,提升自身的竞争力和专业能力。 总之,成为优秀前端工程师需要不断学习和实践,具备扎实的技术基础、出色的问题解决能力和团队协作能力,同时保持持续学习和规划自我发展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值