Successful IoT projects are engineering-heavy. This article discusses the developer skills needed for a complete IoT project:
- Hardware designers
- Embedded firmware developers
- Wireless communications experts
- Back-end developers
- Front-end developers
- App developers
- Automation and systems integration engineers
- Data scientists
The first step of any successful IoT project is to define the business goals and build a proof-of-concept system to estimate if those goals are reachable. At this stage, you need only a subset of the skills listed in this article. But once a project is so successful that it moves beyond the proof-of-concept level, the required breadth and depth of the team increases.
You may also like: How to Start an Enterprise IoT Project
Often, individual developers possess several of the skills. Sometimes, each skill on the list will require their own team. The amount of people needed depends both on the complexity of the project and on success. More success usually means more work but also more revenue that can be used to hire more people.
Most IoT projects include some form of custom hardware design. The complexity of the hardware varies considerably between projects. In some cases, it is possible to use hardware modules and reference designs, for which a basic electrical engineering education is enough. More complex projects need considerably more experience and expertise. To build Apple-level hardware, you need an Apple-level hardware team and an Apple-level budget.
- Printed Circuit Board (PCB) design
- RF and antenna design
- Clocks, signal routing experience
- Low-power design and power consumption optimization
- Chip selection: microcontrollers, sensors, interface chips
- Interfacing: SPI, I2C, JTAG, USB, GPIO
- Production and component sourcing
To build Apple-level hardware, you need an Apple-level hardware team and an Apple-level budget
Embedded Firmware Developers
To turn the hardware into magic, you need embedded developers. These are software people that do software at an extremely low level, close to the bare metal hardware. This software is called firmware (where firm is something between soft and hard). The typical background is a combination of electrical engineering, computer architecture, and software development. Embedded developers work with prototype versions of the final hardware, and their desks, therefore, tend to look messy.
- Programming languages: C, assembly language, C++
- Real-Time Operating System (RTOS) experience: FreeRTOS, Contiki, Zephyr
- Embedded Linux
- Source code version control
- Physical and information security
- Platforms: Texas Instruments, ARM Cortex, AVR, Microchip, Arduino, Raspberry Pi
Wireless Communications Experts
Most IoT projects are wireless, and wireless is hard because it combines all the difficulties of the physical world with the complexities of software. A typical background for a wireless communication expert is with wireless communication, network protocols, and software development. For large-scale IoT systems, wireless communication expertise is necessary to dimension the network and communication patters appropriately. For consumer-grade IoT systems, wireless communication expertise is needed to make the devices smoothly connect via Bluetooth to users’ smartphones.
- Network simulation
- Wireless mesh networking
- Good understanding of wireless propagation
- Good understanding of power consumption
- Protocols: TCP/IP, IPv4, IPv6, RPL, TLS, WiFi, Bluetooth, 6lowpan, ZigBee, LoRA, MQTT, CoAP
In IoT systems, the back-end is where databases and application logic resides. The back-end is typically deployed in a cloud host and takes care of storing data from the IoT devices, authenticating users, and providing APIs for the front-end and for integration with other systems.
- Database: MySQL, MongoDB, Redis
- DevOps experience
- Cloud platforms: Amazon AWS, Heroku, Microsoft Azure
- UI/UX design
- Experience with user interviews and HCI
- Web development frameworks: Vue.js, React, Bootstrap
Front-end developers create visual experiences, often by writing lots of text on a screen
Many IoT projects that are user-facing use a mobile app as the user interface. As the project progresses, the mobile app experience becomes more and more important. This usually means that two versions of the app need to be developed and maintained: iOS and Android. Sometimes, a hybrid native app, which typically would be developed in HTML, is the way to do. Most app developers are well-versed in the benefits and challenges of native or hybrid frameworks.
- Android, iOS development
- Native/ hybrid frameworks: Phonegap/Cordova, Ionic, Angular, React, Vue
Systems Integration and Automation and Engineers
Many IoT projects need integration with existing software. Software integration is an often underrated task that can take significant effort and a specific set of skills to be successful with. And once the software integration is underway, you will want to ensure that the integration keeps working. This is where automated testing comes into play. A systems integration and automation engineer will have significant practical experience and a lot of grit, because this is tough work.
- Automated testing frameworks: Jenkins, Mocha, Travis
- REST APIs
IoT projects revolve around data and you need to make sense of that data. In the early stages of the project, this may be as simple as putting key performance indicators into an Excel sheet to compare them, but as the project progresses, you may need more in-depth analysis of the data. This is where a data scientist comes in. Data scientists make sense of complex data to find patterns and actionable information, which ultimately drives the value of the data.
- Statistics, AI, machine learning, data mining
- Programming languages: Matlab, R, Python
- Tools: Excel, Google BigQuery, Hadoop, TensorFlow, Spark
A fully-fledged IoT project requires a wide range of skills to be successful. In the early stages of the project, validating the business case is the most important task, and for this, you will not require all the skills in the list above. But once you have established the business case and the project can begin for real, these skills become increasingly important.