前端工程师的匮乏已经蔓延到几乎整个互联网行业,从初创公司到上市公司甚至巨头,这个问题都存在。没错,优秀的前端工程师比大熊猫还稀有。每天在100offerHR群里都有人抱怨招不到靠谱的前端工程师。说实话,100offer对这些需求无能为力:在供不应求的前端招聘市场,优秀的前端工程师才是最有话语权的。在国外,前端工程师也是供不应求。例如,根据http://indeed.com爬取的上千个网站的职位:当前前端热门职位——“HTML5”是需求增长最快的开发职位,在所有开发职位中排名第一,其次由MongoDB和iOS分列第二和第三。HTML5可以说是最热门的前端工作,在2010年和2014年底两次爆发式增长,现在美国的工作需求甚至超过了iOS。市场上优秀的前端工程师相对短缺,这是一个世界性的问题。理由一:前端是一个比较新的领域。今天的网络需求需要更多的工程师供应。很多人可能认为前端开发类似于web开发,web开发已经有20多年的历史了,前端并不是一个新的领域。.但是,前端工程师的概念中“界面技术实现和用户体验作为一个专业工作领域”的概念无疑是非常新的。大约在几年前,前端开发的技术发展迅速,如下图:GoogleTrends近几年前端工程师的可视化增长趋势至少在15年前,web所需的资源视觉设计和技术实现是均匀分布的。随着网站的发展,对工程资源的需求变得越来越明显——网站变得不仅仅是一个登陆页面。人们开始专注于网站特定的JS、后端技术、UX、数据库,甚至系统设计。如今,像AirBnB/Facebook/Quora这样的Web应用程序投入的工程资源远远多于设计资源。换句话说,今天网页的视觉设计比技术实现更快,所以今天的网络需求需要更多的工程师供应。现在,一个合格的前端工程师一定是对视觉设计感兴趣(或者甘愿做一个受虐狂▼)。显然,要处理大量的Web应用程序需求,需要对技术任务进行分类,以便多人可以同时处理网站请求。事实上,现在一个人不可能快速解决所有的技术细节。现在还有一类人,一个人处理一个web应用的所有问题,那就是“全栈工程师”,但是优秀的全栈工程师也是凤毛麟角。现在,一个创业公司要想成功,几乎需要涵盖一个Web应用的很多技术方面:前端、后端、DBA、运营等。虽然已经有一些服务可以让企业购买前端-登陆页面的最终模块和组件;但是如果你想做一些真正的web应用,没有别的办法,只能求助于前端工程师,就像你想创建一个品牌一样。这不像雇用设计师。原因二:对前端存在巨大的误解。其实前端一点也不简单。在学习前端的时候,感觉自己没有学习的方向,而且越学越迷茫。在这种情况下,通常一开始的学习方法是错误的。没有对前端技术进行专业系统的学习。从就业和节省时间的角度来说,大家如果遇到这方面的问题,可以随时问我,因为我长期从事前端工作,对这些问题比较了解。大多数人认为前端开发是一种“与其他技术相比更简单的技术”。在他们心目中,前端工程师是这样工作的:将Photoshop文件、图片或线框图放入网页;偶尔设计Photoshop文件、图片或线框;使用JS编程为网页制作动画和过渡效果;使用HTML和CSS编程来确定网页的内容和形式。其实前端工程师在做的是:在设计师和工程师之间创造一种视觉语言;使用视觉设计来定义一组代表内容、品牌和功能的组件;视觉语言和规范设定了底线;为设备、浏览器、屏幕、动画定义网络应用程序的范围;制定质量保证指南,以确保品牌忠诚度、代码质量和产品标准;设置适当的行距、字体、标题、图标、边距、填充等;为Web应用程序、以设备为中心的模型设置多种分辨率的图像,同时保持设计指南;使用帐户语义、可访问性、SEO、模式、微格式标记Web应用程序;以友好、低成本、设备和客户端感知的方式连接API并获取内容;开发客户端代码以显示流畅的动画、过渡、延迟加载、交互、应用程序工作流,大部分时间花在考虑渐进增强和向后兼容标准上;保证后台连接安全,考虑跨站资源共享(CORS)程序,防止跨站脚本(XSS)和跨站请求伪造(CSRF);最重要的是,尽管有严格的截止日期、利益相关者的要求和设备限制,但它始终是“客户至上”。为了实现上述目标,前端工程师使用了从可视化到编程的多种工具,有时甚至会负责营销、用户体验到内容等。原因三:大量不良前端工程师的存在扰乱了市场。这也许是很难招到优秀的前端工程师的最明显的原因。由于前端工程师的入门门槛很低,JS、CSS、HTML都不是很难掌握的语言。似乎只要花一点时间,不管是谁,都可以通过网上的教程或书籍上手。是的,前端工程师市场就是被这些小家伙给毁了。可怜的前端工程师:乱用JavaScript库,不懂JavaScript本身,到处用jQuery;例如,滥用JavaScript插件,连看都不看就拿别人的代码;不看需求,不做任何对比和测试,将CSS框架添加到项目中,但只使用其5%的功能;认为加入一个CSSFramework,网站就可以变得“响应式”,或者响应式就像一些小的一样,可以随便加到一个web应用中;叫做“响应式网页设计”,但是服务器端的技术完全不懂;写的CSS没有任何标准,没有使用任何预处理器,也没有BestPractices。CSS代码充满了过度使用的选择器、ID、幻数和!important;不关心代码性能和内存泄漏(不清楚什么是真正的内存泄漏),不对代码进行性能测试;没有指标,或者“在我的电脑/浏览器/移动设备上工作”作为指标;无视30年软件工程实践,开发软件无方法。要知道,入门容易精通难,计算机基础和软件基础对你用JS或者浏览器编程是非常重要的。Web可能是最具影响力的平台和环境之一,必须谨慎对待在其中执行的程序。一个优秀的前端工程师不仅会思考网络技术和语言,还会理解所有不同的组件、系统和概念。前端工程师需要具备的经验和优秀实践(这才是市场急需的前端):了解DNS解析,充分利用CDN,使用多个域名完成资源请求缩短加载时间;设置HTTP标头(过期、缓存控制、If-Modified-Since);遵循SteveSouders(高性能网站)给出的所有规则知道如何解决PageSpeed、YSlow、ChromeDevToolsAudit、ChromeDevToolsTimeline显示的所有问题;知道哪些任务应该放在服务器端,哪些任务应该放在客户端;知道如何使用缓存、DNS预取和资源预加载技能;精通JavaScript,知道什么时候自己写,什么时候借用别人的框架或代码,分清优劣;熟练使用现代MVCJavaScript框架(如AngularJSEmberJSReact等)、图形库(D3、SnapSVG等)、DOM操作库(jQuery、Zepto等)、延迟加载或模块管理库(如RequireJS、CommonJS等)、任务调用工具(如GruntGulp等)、包管理工具(BowerComponentjs)和测试工具(Protractor、Selenium等);掌握图片格式,每种格式的优势,适用场景;了解图像优化技术和加载策略(Sprite、延迟加载、缓存刷新和PNG交错);熟悉CSS标准,最新改造工具Aggressivepolicy规范(如BEM、SMACSS、OOCSS等);JavaScript计算机科学(内存管理、单进程特性、垃圾收集算法、计时器、范围、提升和设计模式)。也就是说,如果你精通HTML+CSS+JS,了解后端知识,60分你只是一个合格的前端;100分顶级前端的应用,必须能够兼顾技术和设计,更接近于“专注于前端开发的全栈工程师”。市场不缺前端,缺的是优秀的前端工程师现在,前端工程师终于在web上有了一席之地。随着多种设备、浏览器和Web标准的演进,前端正在成为一个兼顾逻辑、性能、交互和体验的综合性工作。虽然互联网行业普遍缺乏前端工程师,但相信会有越来越多的人加入前端大军。不仅因为大多数前端工作提供的良好薪水和办公环境,还因为Web中的前端编程变得越来越具有挑战性和回报。最后分享一组2015年3-4月跳槽高峰期的100offer拍卖数据,鼓励前端工程师:前端工程师人均获得8.2次面试机会,前端工程师平均薪资加入工作的人增加了39%。其中,前端offer之王一共拿到了47份offer,最高offer薪资38k*16,是土豪电商开的。加油,前端!
