Successful IoT projects are engineering-heavy. Developing a successful IoT product isn’t a walk in the park. To make it easier to plan for IoT projects, this article lists the IoT technical skills needed on the team:
- Hardware designers
- Embedded firmware developers
- Wireless communications experts
- Backend developers
- Frontend 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.
Often, individual developers possess several of the skills. We’ve worked with exceptional startup founders that combine all these skills in a single person. But, very few people are like that.
Sometimes each skill on the list will require its own team. The amount of people needed depends both on the complexity of the project and on the required level of success. More success usually means more work but also more revenue that can be used to hire more people.
In addition to these skills, everyone involved in IoT projects needs to share a set of thought patterns to permeate the entire project and affect tech decisions throughout the stack:
- Business and customer focus
For example, if the proof-of-concept deployment reveals that the users ask for a much more fine-grained update rate from the hardware, this may affect everything from the hardware, to the wireless network, to the backend, frontend and data analytics. Likewise, security concerns will affect everything from the hardware and up.
Most IoT projects include some form of custom hardware design. The complexity of the hardware varies considerably between projects. In some cases, it’s 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 and signal routing experience
- Low-power design and power consumption optimization
- Chip selection: microcontrollers, sensors and interface chips
- Interfacing: SPI, I2C, JTAG, USB and GPIO
- Production and component sourcing
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 and C++
- Real-Time Operating System (RTOS) experience: FreeRTOS, Contiki and Zephyr
- Embedded Linux
- Source code version control
- Physical and information security
- Platforms: Texas Instruments, ARM Cortex, AVR, Microchip, Arduino and 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, Thread, LoRA, MQTT and CoAP
In IoT systems, the backend is where databases and application logic resides. The backend is typically deployed in a cloud host and takes care of storing data from the IoT devices, authenticating users and providing APIs for the frontend and for integration with other systems.
- Database: MySQL, MongoDB and Redis
- DevOps experience
- Cloud platforms: Amazon AWS, Heroku and Microsoft Azure
- UI/UX design
- Experience with user interviews and HCI
- Web development frameworks: Vue.js, React and Bootstrap
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 go. Most app developers are well-versed in the benefits and challenges of native or hybrid frameworks.
- Android and iOS development
- Native / hybrid frameworks: Phonegap / Cordova, Ionic, Angular, React and Vue
Systems Integration and Automation and Engineers
Many IoT projects will 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 and 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 and data mining
- Programming languages: Matlab, R and Python
- Tools: Excel, Google BigQuery, Hadoop, TensorFlow and Spark
IoT Technical Skills
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 won’t require all the skills in the lists above. But, once you’ve established the business case and the project can begin for real, these skills become increasingly important.