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


ThoughtWorks 软件开发工程师 黄峰达

前端开发之路

CSDN:请您做个自我介绍,包括个人经历以及正在做的事情?此外您目前主要关注哪些技术?

黄峰达:从小学参加 LOGO 语言比赛起就开始了我的编程生涯。毕业于西安文理学院电子信息工程专业,现就职于 ThoughtWorks 深圳。长期以 Phodal 这个 ID 活跃于软件社区,如开源软件社区 GitHub、CSDN、知乎,目前专注于物联网和前端领域。著有《自己动手设计物联网》、《全栈应用开发:精益实践》,并译有《物联网实战指南》。曾作为技术专家审阅,英国 Packt 出版社的《Learning IoT》、《Smart IoT》等物联网书籍。

在工作上,我主要做的是一些移动开发的工作。并尝试迁移一些混合应用到 React Native,如编写的开源应用 Growth。业余时间,我会关注物联网相关的内容。开发物联网相关的开源软件、维护一些相关的物联网文档(如 awesome-iot)。

对于物联网而言,目前我主要关注于 Amazon Alexa 语音技术、物联网中的区块链技术。

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

黄峰达:前端应用的代码规模,是在最近几年里膨胀起来了。在这个过程中,我们可以看到两个比较明显的问题: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 应用。

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

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

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

物联网的前端开发经验分享

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CSDN:您如何看待“物联网开发是前端工程师的新蓝海”这个观点?

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

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

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

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

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

CSDN:未来您会从哪些方面提升自己?

黄峰达:主要是一些软技能,诸如如何有理的分析问题、解决问题方面。

2017年7月1日(星期六),线上物联网全栈开发峰会将在 CSDN 学院召开,黄峰达将与其他六位专家将一起从整体架构、技术栈、应用开发平台到实战经验与安全方案,希望通过一天的时间,帮助开发者快速掌握物联网全栈开发之道,目前,峰会正在5折优惠阶段,点击报名:http://edu.csdn.net/huiyiCourse/series_detail/42。

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

  1. 物联网浪潮之下如何从 0 到 1开启智能化硬件开发?

    在物联网浪潮之下,智能硬件的火爆程度不断升温.未来十年,全球接入互联网的硬件设备将达到1万亿台.如今的智能硬件产品正成为下一个"台风口",同时这对于终端市场也是一个机遇.然而从创新 ...

  2. 遇到困难,应该迎刃而上

    2019独角兽企业重金招聘Python工程师标准>>> 遇到困难,应该迎刃而上,而不是退缩, 我们退缩,困难还在 所以,即使头波血流,也应该迎刃而上! 转载于:https://my. ...

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

    浅谈如何做一名优秀的WEB前端工程师 随着近两三年来RIA(Rich Internet Applications的缩写,中文含义为:丰富的因特网应用程序)的流行和普及,前端开发这个行业也开始备受关注. ...

  4. 做一件有利于所有前端工程师的事儿

    任何一款开源软件都不会是完美的. 使用过程中遇到问题,有的人会说,这是语言本身的限制:有的人会寻求临时性的解决方案:还有的索性换个技术栈. 他不一样,打从2013年开始,只要是他遇到的库,使用过程中遇 ...

  5. 内卷之下,前端工程师如何自救

    近两年的职场内卷现象越来越严重,996 工作制在各大公司已经很常见,甚至有更甚者,告诉你我们公司的前端是如何内卷的? 为了数字化转型,公司要为产品平台化打造一个办公协同的在线管理系统,来规范化项目流程 ...

  6. 前端工程师的出路在哪里? 未来前端的发展方向和岗位

    阿里妹导读:很多童鞋在上次的问卷调查里表示,希望多推出一些前端方向的内容.今天为大家分享一篇关于前端工程师职业发展的文章,抛砖引玉,期待与大家一起交流探讨. 我是成曰,目前在蚂蚁金服数据平台部任职前端 ...

  7. 前端工程师的未来在哪里?

    阿里妹导读:很多童鞋在上次的问卷调查里表示,希望多推出一些前端方向的内容.今天为大家分享一篇关于前端工程师职业发展的文章,抛砖引玉,期待与大家一起交流探讨. 文章作者,目前在蚂蚁金服数据平台部任职前端 ...

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

    一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...

  9. 前端工程师的成长之路

    一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...

最新文章

  1. 传说中的WCF(5):数据协定(a)
  2. 【CV夏季划】告别入门,提升眼界,从掌握最有价值的那些CV方向开始
  3. RSA加密的填充模式
  4. 对Angular使用了HttpClient的服务进行单元测试
  5. Educational Codeforces Round 95 (Rated for Div. 2)
  6. [NOIP2010提高组]关押罪犯
  7. VMware vSphere Management Assistant Guide
  8. 使用DragonBones开发FLASH骨骼动画入门教程
  9. 微信小程序怎么登录?如何正确登录微信小程序后台?
  10. JXT查询数据库导入到Execl
  11. Hive开启WebUI
  12. Oracle--优化
  13. 首批小程序出炉,小游戏?
  14. 如何用计算机蓝牙放音乐,Win7系统如何设置使用蓝牙听歌
  15. 【笔记本维修】【基础知识】【二极管 三极管】
  16. 基于CUDA的GPU计算PI值
  17. FE内容付费系统响应式(带手机版) v5.46
  18. 12C DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
  19. freekan源码v3.8.4完美版 全自动采集+自动尝鲜+会员全局+后台模板
  20. 全网最完整推荐系统,包含音乐推荐、博客推荐、新闻推荐,不管是学习、毕设、甚至是工作中使用,这一套就够了!

热门文章

  1. Android 定制自己的launcher
  2. 《老男孩》上映 “娱乐宝”投资电影进入回收期
  3. SQL Server数据库mdf文件中了勒索病毒***.mdf.Horse4444。扩展名变为Horse4444
  4. Windows Phone 7芒果更新
  5. 4种整流5种滤波电路总结
  6. 国际知名营养品牌排行榜前十位
  7. HAUT OJ 1231: ykc买零食
  8. 浙江大学教授郑强的经典语录
  9. 三极管---初识(图文并茂)
  10. 【机器人栅格地图】基于蚁群优化遗传算法求解机器人栅格地图最短路径规划问题附Matlab源码