前端开发者也应该是工程师

原文 https://medium.com/@tosho.trajanov/front-end-developers-are-software-engineers-too-3641375ffe50#.dre250ty9

在网上,我经常能够看到有人提问,为什么前端开发者做的工作比后端简单许多,而需求量却越来越大?我只能说,这完全不是像他们想象的那么简单。前端开发者如此受欢迎是因为他们与后端开发者一样,同样是工程师,他们做的工作同样很复杂。下面从很多不同的方面说明了这一点。

技能树

合格的前端开发者应该能够同时使用多门语言来协同工作。而了解 HTML、CSS 和 JavaScript 这些语言只能算是基础。为了能够跟上前端开发的前沿趋势,前端开发者需要熟悉很多不同的框架,比如说 ReactJS、AngularJS、Backbone、BootStrap 等等。除此之外,如今 JavaScript 也变得越来越强大。一些依赖包管理工具(如 NPM、Bower 等),自动化工作流(如 Gulp 和 Grunt等)以及其它的 JavaScript 工具,前端开发者也必须 都要掌握,只有这样才能够从众人群中脱颖而出。

环境支持

与后端开发者不同,前端开发者除了搭建基本的开发环境外,还要去考虑很多浏览器的兼容性问题。很多浏览器的一些版本都存在着某些特定的 Bug,而且不支持一些新的特性,很多的功能如果要兼容起来就非常的麻烦。特别是现在仍然有很多用户在使用 IE9 及以下版本的浏览器,所以开发者必须要能够去兼容多种浏览器环境。

后端开发者只需要使用像 Vagrant 或者 Docker 那样的虚拟环境或者虚拟机就可以保证在所有外部环境下的兼容性,这样他们开发起来就会容易很多。

软件架构

JavaScript 与其它的后端语言一样,是门很强大的语言。如今,任何一个好用的 Web 应用在前端架构方面,也应该与它们的后端一样有着良好的架构。在最近流行的前端框架的帮助下,前端经常与后端开发者使用类似的 MVC 模式的架构来开发。

除此之外,一个复杂的 Web 应用必须要经过各类的前端测试,比如 Karma、Protractor、Jasmine、QUnit 和其它一些 JavaScript 测试工具的测试,这样才能保证各类浏览器以及跨平台的兼容性。而优秀的前端开发者则更应该熟悉像 Selenium 和 PhantomJS 这样的浏览器自动化工具。

可访问性、易用性以及 SEO

用户体验并不是说仅仅只设计一个清爽、漂亮、易于导航的界面,同时也需要将可访问性也考虑进来。优秀的应用应该尽力为一些残疾人士提供访问内容以及控制导航的途径。

另外,保证网站内容能让搜索引擎爬虫正确的抓取也很重要。也就是说,你需要提供一个已经由服务端预渲染的 HTML 文档,只有这样才能被搜索引擎的爬虫正确抓取,随后由搜索引擎收录。

Web 性能优化

即使后端性能至关重要,但是有 80%-90% 的时间花费在网站前端资源的加载上。这就意味着,前端性能优化是前端开发者需要注意的又一个重点。

总结

仍然有很多人认为在 Web 前端开发过程中不存在「工程」这个概念,但是已经有很多优秀的开发者已经认识到了这样的趋势,所以选择了从后端开发到前端开发的转变。类似 Progressive Web Applications 和 Serverless Applications 这些新的 Web 开发标准已经认为是 Web 的未来发展方向。随着 Web 的进一步发展,前端工程师将会变得越来越受欢迎。