随着物联网继续快速发展,对开发人员的需求也随之增长。 VisionMobile 最近的一份报告预测 ,到 2020 年将需要 450 万物联网开发人员,这表明未来几年的机会有多大。
传统上,开发人员要么是软件工程师,要么是硬件工程师,但物联网要求开发人员拥有超出其专业领域的知识。现在,没有人会成为这两个领域的专家,但对隔壁房间的团队成员所做的事情有一些了解是有好处的。让我们看看开发人员可以学习的一些软件/硬件技能,以帮助他们进行物联网开发。
软件开发人员的硬件技能
物联网是一个如此广阔的领域,软件开发人员很可能不得不使用多种语言进行编程。嵌入式系统需要低级汇编或 C/C++ 编程。同时,拥有更多可用资源的设备将需要更高级的语言,如 Node.js 或 Java。此外,通信协议技能也至关重要——毕竟,如果物联网设备不能共享其数据,它就一文不值。
但是哪些硬件技能对软件开发人员有用呢?最有可能的是,它是基础知识——您肯定不会设计产品 PCB 的下一个版本。另一方面,能够在面包板上构建电路以进行原型制作会很有用。了解基本的电子学是必须的。您应该了解电阻器、电容器、LED 等基本元件在电路中的行为。例如,如果您想对原型设备中的按钮进行去抖动(请参阅 Golgi 之前的文章以获取有关该示例的更多信息),则可以使用此类知识。
软件开发人员的其他重要技能包括阅读数据表、理解时序图和时钟、上拉和下拉电阻、Hi-Z、低电平有效和高电平有效以及逻辑门和晶体管等电子概念。
硬件开发人员的软件技能
作为硬件开发人员,您将设计产品 PCB 的下一个版本。您将选择和集成微处理器、传感器和无线电接口。和您的软件队友一样,您的工作将涵盖从低功耗嵌入式设备到高(呃)功率、高(呃)资源设备的所有内容。
那么什么样的软件技能对硬件开发人员有用。同样,这将是基础知识。请记住,这里的目标不是构建一个 500,000 行的源代码库以及一个完整的底层构建系统。相反,我们的目标是了解开发团队另一半的需求,获得一些原型制作技能并在此过程中获得一些乐趣。
Node.js 或 Java 等高级语言是编程新手的绝佳起点。它们很容易进入并受益于一些不错的功能,例如自动内存管理。不过,如果您真的想感受一下您的软件伙伴的困难,您可以深入研究 C/C++ 并手动管理您的进程内存。
同样重要的是阅读 SoC 参考手册和了解如何通过 DAC 以及 I2C 总线(即 I2C 通信和驱动程序)在软件中读取传感器。
这种知识可以帮助硬件开发人员认识到在构建组件时考虑到软件灵活性的重要性。例如,提供灵活的 I/O 选项,以便软件团队在构建软件以置于硬件团队工作之上时有更多可用选项。最终,理解并提供这种灵活性将有助于两个团队构建出卓越的产品。
学习在哪里发生?
下一个问题(也是一个重要的问题)是开发人员可以在哪里学习这些多学科技能?尤其是因为这种学习在一开始看起来是相当艰巨的。当然,主要来源之一是互联网。
我们生活在一个前所未有的时代,访问(几乎)任何信息都只需敲击几下键盘。但要小心! Internet 上充斥着非常好的和非常差的信息来源,因此您需要确保从正确的信息来源中学习。我们喜欢以下网站和博客,其中包含一般和深入的物联网开发资源:
嵌入式。 有关使用有线和无线网络进行设计以及使用嵌入式设计和正确协议的良好信息。
ARM 互联社区。 物联网和嵌入式设备开发新闻的精彩综述。
EE 时代 。提供丰富的资源,从新闻和评论文章到视频和论坛。
Adafruit 物联网标签 。提供有关最新软件和硬件趋势的有用链接和信息。
物联网 。由开发人员、研究人员和设计师组成的社区汇集的可靠资源。
哈卡迪 。一个有趣且信息丰富的网站,包括一个经常更新的博客。
当您探索其中一些资源并思考成功所需的技能时,您还应该记住不要被迄今为止所接受的培训所限制。适应性和多功能性是现代商业世界所需的两个关键特征。
从未停止学习。尽可能地学习。向您的同事学习——他们所有人。您不仅可以向积累了多年经验的高级职员学习,还可以向经验不足的团队成员学习他们获得的知识和技能。我鼓励你全神贯注。