Successful IoT projects are engineering-heavy. Developing a successful IoT product is not a walk in the park. To make it easier to plan for IoT projects, this article lists the developer 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 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 skill on the list will require their own team. The amount of people needed depends both on the complexity of the project and on 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 thought patterns 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.
Hardware Designers
Most IoT projects includes 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.
Typical skills:
- 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.
Typical skills:
- 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
Embedded developers work with prototype versions of the final hardware and their desks therefore tend to look messy
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.
Typical skills:
- 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
Backend Developers
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.
Typical skills:
- Programming languages: Javascript, Go, Python, Ruby
- Database: MySQL, MongoDB, Redis
- DevOps experience
- Cloud platforms: Amazon AWS, Heroku, Microsoft Azure
Frontend Developers
Most IoT projects have a frontend in the form of a web page. This is where users of the system interact with it. This needs to be user friendly, secure, work in the most common web browsers, and be kept up to date. Frontends are developed in HTML and almost always uses some existing frontend framework, written in Javascript. Frontend developers create visual experiences, often by writing lots of text on a screen.
Typical skills:
- UI/UX design
- Experience with user interviews and HCI
- HTML, CSS, Javascript
- Web development frameworks: Vue.js, React, Bootstrap
Frontend developers create visual experiences, often by writing lots of text on a screen
App Developers
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 needs 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.
Typical skills:
- Android, iOS development
- Native / hybrid frameworks: Phonegap / Cordova, Ionic, Angular, React, Vue
- Programming languages: Java, Swift, Objective C, Javascript
Systems Integration and Automation and Engineers
Many IoT project 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 a significant practical experience and a lot of grit, because this is tough work.
Typical skills:
- Automated testing frameworks: Jenkins, Mocha, Travis
- REST APIs
- Programming languages: Javascript, Java, Python, Bash
Data Scientists
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.
Typical skills:
- Statistics, AI, machine learning, data mining
- Programming languages: Matlab, R, Python
- Tools: Excel, Google BigQuery, Hadoop, TensorFlow, Spark
Conclusion
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.
Using an IoT software platform will provide a head start in terms of building on the skills that have already been invested into the platform. This is how we at Thingsquare help our customers get their IoT projects to success faster.