IoT projects are engineering-heavy, and IoT development is hard. One of the reasons is that it requires so many different technical skills on your engineering team. Here is a list:
- Hardware designers
- Embedded firmware developers
- Wireless communications experts
- Backend developers
- Frontend developers
- App developers
- Automation and systems integration engineers
- Data scientists
Before hiring your engineering team, you should define your business goals. And maybe build a quick prototype to prove your concept. Let’s assume you have already done this; you now need to get your talent on board.
You will need to have persons that have the skills listed above.
Often, individual developers posses several of the skills. We have worked with exceptional startup founders that combine all these skills in a single person. But very few people are like that.
Sometimes each item on the list will require not just a single developer, but an entire team. The number of people needed depends both on the complexity of the project and on the scope of the 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 an IoT projects need to share a set of non-functional requirements that need to permeate the entire project and that affect tech decisions throughout the stack:
- The business and customer focus
- Cyber security
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, through the wireless network, to the backend, frontend, and data analytics. Likewise, security concerns will affect everything from the hardware and up.
Most IoT projects includes some form of custom hardware. Hardware is by itself difficult. And the complexity varies a lot. Sometimes, it is possible to use ready-made designs. Other times, you need a full re-design to the lowest levels.
The more hardware design needed, the deeper the skillset. This means more costly teams.
Typical skills for an IoT hardware development team:
- 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
Embedded Firmware Developers
To turn the hardware into magic, you need embedded software. This software is usually called firmware. (Because firm is something between soft and hard.)
This software is developed by developers that work at an extremely low level, close to the bare-metal hardware. This requires a particular set of skills.
The typical background is a combination of electrical engineering, computer architecture, and software development.
One way to distinguish between software developers and firmware developers is to look at their desks. Firmware developers will have lots of hardware on their desks.
Typical skills in this category include:
- 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
In IoT, everything is wireless.
And wireless is particularly tricky.
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.
Typical skills in this category:
- 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, CoAP
Every IoT system needs a backend, but not everyone knows it exists.
The backend is software that runs in the cloud. It connects your IoT devices and your users. This is where the database and business logic goes.
The backend is something that very few people will actually know is there. But it does the heavy lifting. If the backend goes down, your system becomes unusable.
Backend developers typically have a background in database development and software. DevOps skills is extremely useful too, because you want your backend to run as smoothly as possible.
- Database: MySQL, MongoDB, Redis
- DevOps experience
- Cloud platforms: Amazon AWS, Heroku, Microsoft Azure
Front End Developers
The front end is what your users will see.
Any IoT project with users need a front end. The front end needs to be user friendly, secure, work in the most common web browsers, and be kept up to date. Users really don’t like bad, or old-looking, front ends.
- UI/UX design
- Experience with user interviews and HCI
- Web development frameworks: Vue.js, React, Bootstrap
Most, if not all, IoT projects need a smartphone app. But didn’t we just talk about apps? Yes, the app is part of the frontend – the stuff that the user sees. There is a significant overlap between the frontend developer skills and app developer skills. But they are not always exactly the same.
Frontend developers focus on the user experience. App developers need to focus on the technology to make that happen. You will need two versions of the app: iOS and Android. So you will need developers who are skilled with both systems. Sometimes a hybrid app, developed in HTML, is the way to do it. Most IoT 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 Engineers
Many IoT development projects will need integration with existing software. The integration software first needs to be developed. Then maintained. And, as time goes on, more integrations will be needed. And you want it to continue to work, so it needs to be continuously tested.
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. 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.
- Statistics, AI, machine learning, data mining
- Programming languages: Matlab, R, Python
- Tools: Excel, Google BigQuery, Hadoop, TensorFlow, Spark
IoT development requires a wide range of developer skills. From hardware and software, to user experience design and data science. Fortunately, there are platforms to help you. They will not get you all the way to your result, but they will significantly de-risk your project.