物联网浪潮之下,前端工程师如何迎刃而上?

经历了过去几年的发展,Node.js、Angular.js、Vue.js 等前端主流技术框架填补了原有技术的空白与不足,日渐趋于成熟。然而信息时代的来临,任何的技术不会趋于稳定而止于脚下,现如今物联网、人工智能虚拟现实等新领域的出现,意味着前端下一风口的来临,新的技术革新与发展机遇悄然而至。在火热的物联网浪潮之下,作为一名前端开发工程师,如何迎接这一风口?JavaScriptPython 等脚本语言又会与物联网碰撞出怎样的火花?真正的转型需要学习什么样的新技能?未来发展前景如何?基于此,我们采访了 ThoughtWorks 软件开发工程师黄峰达,请他分享自身的前端开发经验以及物联网的探索之路。

现如今随着企业业务需求的不断增大,对前端工程师的要求也逐渐提高。您认为前端工程师应该在哪些方面进行积累?包括语言、工具、框架等方面。

前端应用的代码规模,是在最近几年里膨胀起来了。在这个过程中,我们可以看到两个比较明显的问题:JavaScript 语言的缺陷与前端工程化实践的不足。

值得注意的是,IE 的兼容性在过去是一个主要的问题。但是由于最近几个项目中,逐渐不支持早期的 IE 版本(禁止早期版本的 IE 用户使用),我觉得这一点在未来就不需要考虑了。

从 CoffeeScript 到 ES6、TypeScript 的受追捧,表明了 JavaScript 有诸多需要改进的语言缺点。这些缺点会影响前端代码的质量,导致出现一些意料之处的 Bug。对大型应用来说,使用一个强类型的语言,如 TypeScript 会帮助前端项目构建出更稳定的应用。因此,我推荐喜欢 ES6 的用户,可以尝试使用 TypeScript。

同时,建议工作一年左右的前端程序员,应该掌握从头构建一个完整的前端项目。即,能设计好一个前端项目的工作流——掌握好 gulp、grunt、npm 等构建工具、风格检测、测试框架等等。

按国内的趋势来说,Vue、React、Angular 是现有主流的三个前端 SPA 框架。一个好的前端工程师,不应该只会使用这些框架,而是能理解他们背后的原理的相似之处与不同之处。也不应该满足于可以使用 Vue 来完成工作,应该尝试使用 React、Angular 这种复杂的框架。如 React 框架,从思想上来说,我们只需要学会 React,就可以轻松地构建其他 UI 应用。

从业过程中,您如何提升自己的职业技能,是否有比较好的学习方法或技巧?

对于前端来说,要提升技能最好的方式还是靠刻意的练习——大量的编码。工作的时候,大家都忙于实现业务功能,没有时间能让我们提升技能。因此,要提升主要还是要靠刻意的练习。至于练习,我一般是采用这样的步骤:

  1. 买本相关的书籍,或者寻找份教程、官方指南。
  2. 再找个合适的 Demo,熟悉基础概念,并掌握好相关基础。
  3. 在 Demo 的基础上,实现一些业务功能,了解各种功能、特性。
  4. 查看官方文档,查有有没有漏掉了什么重要的东西。
  5. 撰写博客、日志来记录这个过程。

作为一名前端工程师,是什么吸引着您关注物联网领域的呢?

大学的时候,我主要学的是电子信息工程。在学校会和朋友一起做一些网站来赚买书钱。平时,便通过 Web 技术来结合硬件做一些内容。在现在,看来它们便是一些物联网应用。

在庞大的物联网体系下,前端工程师从何入手物联网开发呢?可否结合您的个人经验具体谈谈?

今天的物联网应用,本质上还和 Web 应用的区别不是特别大——使用数据库存储数据、使用传输协议来传输数据、使用客户端作为 UI 界面等等,主要做的工作也是数据传输。

在一些资源丰富的设备设计上,我们仍然可以使用 HTTP API,仍然可以使用脚本语言编程,如 Python、JavaScript。因此,建议前端工程师可以将 Web 视为物联网的基础,先在资源丰富的设备上,如 Raspberry Pi、Tessel、Ruff 学习物联网开发。

在这之上,再去考虑资源受限的设备,如 Arduino 便是一个很好的入口。这个时候,就需要学习更多的硬件知识,如底层编程、不同协议的数据传输等等。而事实上,有相当多的物联网应用并不需要在底层硬件上进行编程。

如今天流行的共享单车,便是最典型的物联网应用。除在单车本身,大部分的模型还是和 Web 相差无几,除了使用 HTTP 作为数据传输协议,还有可能使用 MQTT 来传输数据。而在单车上,它使用了 GPS、蓝牙低功耗来进行数据传输。

由于各种物联网云服务已经成熟了,因此在学习的过程中,推荐前端工程师可以直接采用各种云服务,如 AWS IoT、Azure IoT、IBM Watson IoT;又或者采用一些开源的物联网云软件。最后,再去编写相应的客户端软件。

物联网开发涉及面庞杂,开发周期长,所以我们必须寻找一种覆盖面广的编程语言和方法。JavaScript 支持 HTTP 和 JSON 、支持函数式编程、可提供交互式环境等特点堪称适用于物联网全栈开发;Python 作为一种胶水语言,可在物联网及嵌入式系统中承担大量任务,并部分替代以上语言。由此就 Javascript 和 Python 两种脚本语言来看,您认为哪一种在物联网全栈开发中更为适合?具体理由是什么?

我偏向于使用 JavaScript, 更适合全栈物联网。但是如果是在真实场景下,我偏向于结合两个语言。JavaScript 可以用于开发各种原型软件、及大部分的客户端软件:

  • Node.js 可以实现高并发的物联网应用
  • 使用 Electron 开发桌面客户端,来帮助传统
  • 使用 React Native、Ionic 开发手机 APP
  • 使用 Ruff、Tessel 开发硬件端的应用
  • 编写微信小程序直接访问蓝牙设备,进行交互与数据传输
  • 在嵌入式系统 Linux 上,又可以制作 UI 界面来加速开发

而我们知道 Python 在科学、大数据人工智能领域有更广泛的应用,而在这些领域 JavaScript 只是能做,但是做不了最好。因此,我们可以将 Python 作为物联网智能的核心,剩下的内容都交给 JavaScript。

从开发者的角度来看,物联网开发主要面临什么样的技术挑战?开发者在面临这些挑战是会有什么样的误区?

个人认为,物联网开发的主要挑战是:如何快速开发出稳定、安全的系统。这里的『快速』指的是,比以往更快的速度。硬件开发,有一个开发周期长的问题,从设计制造出开发板、硬件原型,到最近的产品,是一个漫长的过程。它不能像 Web 应用一样,快速推出一个 MVP 产品,从市场中接受反馈。因此不仅仅对流程的要求高,还依赖于大量的经验丰富的程序员。

对于走迭代流程的 Web 应用来说,当线上出线 Bug 的时候,我们可以快速发布一个新的版本,或者回滚到上一个版本。可对于硬件应用来说,如果没有在一开始设计好更新策略,那么就只能召回这个产品。如果只是软件上有问题,那么还能通过软件更新来解决这个问题。如果是像三星 Galaxy Note 7一样的硬件问题,那么不仅仅会影响公司的发展,还会危险用户的生命安全。

又如,去年出现的 Mirai 蠕虫事件,今年出现对对抗Mirai 的白色蠕虫 Hajime,表明了如果一个用户众多的物联网产品受到威胁时,它将影响到全球互联网。

要成为一名优秀的物联网全栈开发工程师,需要什么样的条件?

我理解的全栈是,一个人可以完整的开发物联网系统,并不是指什么知识都会。而要成为物联网全栈开发工程师是蛮难的一件事,更何况是优秀的物联网全栈开发工程师。我离物联网全栈开发还有点远,按我的理解:物联网开发是一个知识面广、特定领域要求深度的领域。它需要结合前端、后台、硬件层的硬件设计、硬件层的软件(C语言)等等的知识。在这个其中,最难的地方是设计出可靠的硬件,它依赖于多年的丰富经验。

在软件开发方面,先掌握好主流的 Web 开发技术,再去理解物联网领域的技术,并深入理解硬件运行的机制,那么就差不多可以做到软件层上的全栈。

依您经验来看,前端工程师进入物联网领域有什么样的职业机会,您有什么建议想要对开发者分享?

前端工程师在物联网领域的主要开发内容还是一样的:客户端开发,与用户进行交互。除了 Web 前端,还会有一些移动端开发的内容,除此还有大量的数据可视化工作。

除此,我们还可以看到诸如 Chrome 浏览器、微信小程序,都可以让开发者使用 JavaScript 连接蓝牙设备,实现数据传输。相信在未来,手机便是最好的物联网载体,它可以让我们更好也与周围的设备进行沟通。

在过去的一年里,我看到一些国外的创客们,使用 Slack、Telegram 制作一些聊天机器人来简化物联网开发。每次都能有一些启发,进行物联网开发设计的时候:考虑使用成熟的工具来制作 MVP。

物联网时代下,前端开发前景

关于这个观点,我觉得这里有一个误区:写 JavaScript 的程序员就是前端工程师。前端工程师一定是 JavaScript 程序员,但是 JavaScript 程序员不一定是前端工程师。

所以,我觉得物联网开发不仅是前端工程师的新蓝海,还是硬件工程师、后台工程师的新蓝海,只是前端开发者因为使用 JavaScript,才有机会去接触更大的领域。

对于物联网软件、硬件的开发工具、标准、协议等方面,您最期待哪些方面的完善?

物联网领域,我并不期待有一个统一的标准出来,这是一件相当难的事。不同的协议适用于不同的场景,而受限于不同的硬件设备,有时候我们只能使用某一特定的协议。在协议方面,我比较看好 CoAP,但是无疑 MQTT 是最近采用的热门标准,当然传统的 HTTP 协议也是。

同时,我比较期待的是一些新的开发流程,如上所述,传统的硬件开发流程太慢了。去年在和 NodeMCU 创始人聊天时,听他谈起一个观点:云端构建『固件』。如同 package.json 一样,我只需要引入这个库,那么集成电路图、引入相关代码等等,剩下的事就水道渠成了。如 Ruff 已经可以做到部分的功能,可是这条路还是很慢长。

时间: 2024-10-10 20:58:39

物联网浪潮之下,前端工程师如何迎刃而上?的相关文章

浅谈如何做一名优秀的WEB前端工程师

浅谈如何做一名优秀的WEB前端工程师 随着近两三年来RIA(Rich Internet Applications的缩写,中文含义为:丰富的因特网应用程序)的流行和普及,前端开发这个行业也开始备受关注. 前端开发的入门门槛其实很低,与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢.Web前端开发核心技术主要包括HTML.CSS.JavaScript等.HTML仅仅是简单的标记语言!CSS 只是无类型的样式修饰语言.当然可以勉强算作弱类型语言.Javascript 的基础部分相对来

5月17日云栖精选夜读:大数据浪潮下,前端工程师眼中的完整数据链图

今天几乎所有的互联网公司背后都有一支规模庞大的数据团队和一整套数据解决方案作决策,这个时代已经不是只有硅谷巨头才玩数据的时代,是人人都在依赖着数据生存,可以说如今社会数据价值已经被推到前所未有的高度. 热点热议 大数据浪潮下,前端工程师眼中的完整数据链图 作者:王二辉   发表在:大数据文摘 如何打造一个小而精的电商网站架构? 作者:稀奇古怪 WannaCry只是个开始?信息时代你急需的安全书单 作者:博文视点 知识整理 MySQL使用初步-mysql数据库的基本命令 作者:小小兔 Java集合

大数据浪潮下的前端工程师

流形 链接来源 马云曾经说过『人类正从IT时代走向DT时代』. 正如他说言,今天几乎所有的互联网公司背后都有一支规模庞大的数据团队和一整套数据解决方案作决策, 这个时代已经不是只有硅谷巨头才玩数据的时代,是人人都在依赖着数据生存,可以说如今社会数据价值已经被推到前所未有的高度. 我作为一名前端工程师在阿里巴巴数据团队工作多年,深入了解数据生产加工链路与产品化.我们这群前端是与界面最近的工程师们, 似乎与数据离得很远,对于我们来说与数据有些怎样连接呢. 完整数据链路 首先,我用直观的一张图绘制出数

淘宝前端工程师:国内WEB前端开发十日谈

转自:http://www.jianshu.com/p/8cf2df3fdbf2 一直想写这篇“十日谈”,聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是“初级”前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的“弄潮者”,这在很大程度上影响我们对“技术本质”

我的职业是前端工程师

作为 GitHub 知名的 md 程序员,我很高兴宣布,已经在 GitHub 上 Release 第七本电子书. 在我来深圳之前的项目里,我们是一个全功能团队,我从实习生开始了职业生涯.在这一个团队里,每个人都是一个全栈工程师,即要编写前端的 JavaScript 代码,又要会后台使用 Java 或者 Scala 来对 API 进行编程. 而最近在深圳的一年工作里,我是一个前端+ 移动应用开发(混合应用方向)工程师 .2017 年年初的时候,看完村上的<我的职业是小说家>,便有了这个系列的文章

如何定义一个牛逼的前端工程师

有软件工程方面的研究说,对于开发者个体而言,最优秀的开发者的生产效率约为平均值的2倍,而优秀的开发者会吸引其它优秀的人,或者激励与帮助团队中的其它成员,最终使团队之间的生产效率差异达到10倍之多. 所谓牛逼的工程师,就是那些个体效率是其它人2倍,形成团队之后达到10倍差异的一群人. 前端领域这几年发展速度非常快,人才分布呈两级分化趋势,大家都在说缺前端,其实缺的是牛逼前端,对于低端的前端,培训机构一直在量产,但是无法满足要求.很多情况下,一个牛逼前端对于团队的价值是再多低端前端都无法提供的. 牛

转为前端工程师(一)

实际工作年龄只有两年, 第一年是写lua的游戏客户端工程师,获得了很大的自信心,一个完整的MMRPG的所有客户端脚本逻辑都很熟悉,也能自己编写新的模块,但最终因为私人原因,离开了广州,离开了这个行业. 回到家乡,第二年.投身于嵌入式开发工作,实际工作中没有一点的技术长进,全年没有写多少代码.更多地像一个网络方面的技术支持.压力之下,焦虑之下,各种情绪逐渐积累之下,我放弃了这个工作,事实上,这个工作很稳定,也很舒适. 各种考量(有时候也是各种无奈),选择了web前端工程师.带着自学的html.JS

电商前端工程师:国内WEB前端开发经验之路

一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是"初级"前端开发工程师,一方面我入道尚浅,只有短短几年,另一方面我自知对技术的钻研并不深入,可能是由于环境的原因,当然最重要的是,我幸运的参与到互联网崛起的浪潮之巅.时势造就了一批技能薄弱但备受追捧的"弄潮者",这在很大程度上影响我们对"技术本质"的洞察力,多

移动互联的“大熊猫”——优秀前端工程师

相信互联网行业的人一定不陌生"资本寒冬"这个名词,在经历了资本繁荣到资本寒冬阶段,部分实力不强的公司走向崩溃,比如去年曾经火热的O2O接连倒闭,很多盈利模式不清晰,或者烧钱太快又没有及时融到钱的公司也被迫解散.互联网行业的人才市场理所当然的也受到了此风向变化的影响,在供给增加,需求放缓之下,求职者身上的压力越来越重,造成了今年互联网的就业形势没有去年同期好. 前端.后端就业形势不错,移动端工程师压力略大 以下在就业方面分别列出了Java.前端.Android.iOS候选人数与面邀数间的