The Internet of Things (IoT) is a global system of interconnected physical devices that deliver data via the Internet, and the IoT is transforming the way we live and work. IoT devices have been widely adopted across a range of industries, including healthcare, manufacturing, automotive, retail, and building automation, just to name a few. Businesses are leveraging data from connected devices to increase operational efficiency and to provide improved value and experiences to their clients. With the pace of IoT adoption rapidly increasing, and with the number of connected devices already in the billions, the demand for skilled developers who are able to deliver IoT solutions continues to rise.
Developers that want to make the most of the opportunities of IoT should foster skills across a range of key topic areas including:
- Application design
- Application development
- Business intelligence and data analytics
- Machine learning and artificial intelligence (AI)
At the heart of IoT are the billions of interconnected “things,” or devices with attached sensors and actuators that sense and control the physical world. The development of the hardware for these devices calls for electrical engineering skills, while the physical design draws on industrial design and CAD skills.
In addition to network connectivity to transmit the data they collect, these devices typically require some basic processing and storage capabilities, provided by a micro-controller or by a System-on-a-Chip (SoC) integrated circuit. IoT devices are embedded devices, and as such, the circuit design of each device must take into consideration operating constraints, such as:
- Environmental conditions
- The type and number of sensors and actuators attached to the device
- The volume of data to be collected and transmitted
- The size, power, and range for the device
- The cost per unit
- …amongst others
Connectivity is another key aspect of IoT, which enables devices to communicate with other devices as well as communicate with applications and services that are running in the cloud. Network design and management are essential skills within IoT, due to the sheer volume of connected devices and due to the impact that network design decisions can have at scale. For example, mesh networks are a highly scalable and robust network topology design, and are frequently adopted within IoT; however, the distributed nature of mesh networks makes the system more complex and also increases latency and power requirements for each of the devices in the network.
In addition to network design, developers should have a working knowledge of network standards, protocols, and technologies. These include wifi, Low Energy Bluetooth, Zigbee, cellular, and RFID technologies used in consumer applications, as well as Low Power Wide-Area Network (LPWAN) technologies like LoRa. LPWAN also includes SigFox and NB-IoT (narrow band IoT) that offer lower cost, low-power long-range wireless connectivity, which are better suited to large-scale and industrial IoT applications.
3. Application design and development
Web and mobile applications provide user interfaces for interacting with and consuming data from IoT devices. IoT devices, however, may have their own user interfaces (UIs). Voice-based and gesture-based interfaces are gaining traction within IoT, particularly for home automation, while augmented reality interfaces provide exciting possibilities for overlaying IoT data over the physical world. As a result, UI and UX design skills are some of the hottest skills in IoT right now.
Web and mobile applications are developed using high-level languages, with Java, Swift, and Node.js among the top languages for IoT app development. GPS programming skills are in particular demand, as many IoT applications, including wearables and smart vehicles, are location-aware. Developers should keep track of emerging frameworks and developer kits that they can leverage for rapid prototyping, as well as IoT platforms that provide infrastructure and tools to help automate building, deploying, managing, and operating IoT applications.
Security is one of the biggest concerns in IoT. Security must be built-in at every step of the design of the system, not added as an afterthought. Critical issues that are closely related to security include data ethics, privacy and liability.
The biggest challenges in IoT security are the need to secure:
- The physical and network access to devices and their data
- The applications and services with which the devices communicate
- The networks themselves
As millions of new devices connect each day, the number of potential points of attack grows daily. Compromised IoT devices have been used to launch Distributed Denial of Service (DDoS) attacks. However, once devices are in the wild, it can be challenging to roll out firmware updates to patch security issues without established security and device management practices or a security infrastructure.
With so much at stake, security engineering skills are highly regarded within IoT. These include threat assessment, ethical hacking, encryption to ensure data integrity, securing network architectures and applications, as well as event monitoring, activity logging, and threat intelligence.
5. Business intelligence and data analytics
As the number of IoT devices transmitting data increases, big data turns into really big data. Developers will need big time data management skills to securely and reliably ingest, store, and query the vast quantities of heterogeneous data originating from these devices.
Many IoT devices generate latency or time-sensitive data, so it is necessary to filter or discard irrelevant data. Key technologies and platforms for data analytics that IoT developers should develop skills in include Hadoop, Spark, and NoSQL databases like MongoDB.
6. Machine Learning and AI
To deliver value and make sense of the huge volumes of data that is generated by IoT devices, machine learning and AI skills are the final must-have skill for IoT developers. Intelligent big data analytics involves applying cognitive computing techniques drawn from data mining, modeling, statistics, machine learning, and AI. These techniques can be applied in real-time to sensor data streams for predictive analysis or to autonomously make decisions in response to incoming data and can also be applied to historical data to identify patterns or anomalies in the data.
Are you ready to get started developing IoT solutions?
The technologies involved in developing IoT applications are rapidly evolving. Developers should be prepared to cultivate a diverse set of skills, and be agile and willing to adapt to new processes, platforms and tools.
To help you develop these skills, I am working with developerWorks to create a learning path – a guided path through articles and tutorials – to help you get started with developing for the Internet of Things. In the coming weeks, we will be publishing an IoT hardware guide (published May 5), exploring the challenges of IoT networking technologies (published May 23), discussing why IoT developers integrate an IoT platform in their IoT solutions (published June 5), and providing a step-by-step tutorial for building a home automation system (published June 30) in the final step in the learning path.