前端工程师

不是缺少前端,而是缺少优秀的前端工程师

什么是前端工程师

对前端,普遍存在巨大的误解,其实前端一点也不简单 大多人都认为前端开发是一个「相对于其他模块来说更简单的领域」,在他们心中的前端工程师是这样工作的:

  • 把Photoshop文件、图片或者线框做成一个页面;
  • 偶尔设计Photoshop文件、图片或者线框;
  • 用JS实现动画、过渡效果;
  • 用HTML和CSS编程,实现网页的内容和形式。

事实上,前端工程师在做的是:

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

为了实现上述目标,前端工程师采用了从可视化到编程的多种工具 ,甚至有时要照顾市场、 UX 到内容tweakes等等。

什么是优秀的前端工程师

由于前端工程师的入门门槛非常低,JS、CSS、HTML并不是很难入门掌握的语言,似乎只要花一点时间,谁都可以通过网上教程和书本学会它。

糟糕的前端工程师是这样做事的:

  1. 滥用 JavaScript 库,因为他们实际上并不了 JavaScript 的核心(e.g. 一切都用 jQuery);
  2. 滥用 JavaScript 插件,无节制的复用别人的代码,哪怕自己根本读不懂;
  3. 不看需求、设计,也不做比较或评价,就给 Web 应用程序添加 CSS 框架,却只用到框架的一小部分;
  4. 认为只要用了 CSS 框架,网站就是响应式的,或是对响应式设计的意义理解不到位;
  5. 一边在说着「响应式 Web 设计」,却对服务器端解决方案技术一无所知;
  6. 用 CSS 编程时不做预处理器、命名规范等;
  7. 忽视性能、内存泄露(并不理解内存泄露的真正含义),不会检测代码;
  8. 不会用指标衡量一个产品,或者这种指标旨在自己的电脑、浏览器、设备有效;
  9. 忽视 30 年来的软件工程技术,闭门造车。

要知道,入门容易精通难,计算机和软件的基础对你用JS或浏览器编程都非常重要。 web可能是最有影响力的平台和环境之一,在那里执行的程序必须被小心对待。 一位优秀的前端工程师不仅要考虑web技术和语言,并且还要了解所有不同的组件、系统和概念。

以下是优秀的前端工程师在即时面对普通的任务也会做的事情:

  1. DNS 解析,使用 CDN,把资源请求分散到多个域名上去;
  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. 原生 JavaScript,知道何时从头开始做,何时参考别人的代码,同时可以评估这样做的优缺点;
  8. 最新的 MVC Javascript 库知识以及用法;
  9. CSS 标准的知识与用法;
  10. JavaScript的计算机科学部分的知识(内存管理,垃圾收集算法等等)

换句话说,如果说精通HTML+CSS+JS,了解后端知识,只是60分的合格前端;那么要想成为受追捧、拿高薪的80分优秀前端,要对业务需求和、架构设计有真正的运用;而100分的顶级前端,则必须要能够兼顾技术和设计,更接近「以前端开发为主的全栈工程师」了。

如何成为前端工程师

  1. 打好基础。扎实地学习一些计算机基础课程,比如算法、数据结构、编译
  2. 学会翻墙,学会用Google,学会用GitHub、StackOverflow、知乎等社区。
  3. 积极参与技术活动。
  4. 最重要的是,坚持不懈地学习。学好英语才能获取全世界范围内最一手的资源和信息。

如果你做到了以上几点,只能算作合格的前端工程师。优秀前端工程师应具备的素质包括以下:

  1. 对技术不发怵。比如,前端虽然入门比较简单,但是同其他领域一样,一旦深入下去,就会遇到算法,千万不能给自己设限,要攻克算法。
  2. 有用户体验的Sense。前端尤其看重细节,较真儿才能看出人的素质,优秀的程序员做的东西绝对不会是粗糙的。这些细节的养成,不能单靠热情,而要形成良好的习惯。
  3. 具备「好奇心」和「懒惰」的美德。比如,你如果对探究某个兼容性问题有兴趣,但当探索完毕后,又厌烦每次都要为这个问题写额外的兼容性处理代码,那么激励自己去寻找工程方法来避免重复的事情,这就是程序员 应该 具备 的 美德。