In 2017 I delivered design research for an improved developer experience in the Watson IoT Platform.
User Research – IoT Developers
In our developer experience research, we gained insights from multiple sources
- Roles – Device and Application Developers, Architects, Product Leads, and Operators
- Organizations – IBM IoT developer teams, Individual developers, Startups, System integrators, Global enterprises
We found that a majority is developing or researching IoT products and solutions for their companies. We also found that a majority of the companies are developing IoT products and solutions today.
In our research we focused on two developer roles; the IoT Device Developer and the IoT Application Developers. Both depend on the Watson IoT Platform as a service for connecting their devices or integrating with their applications.
We found that developers use the following tools and technologies
- HTTP and MQTT (>50%)
- Eclipse or Device manufacturer IDEs (>50%)
- Device development: C / C++ (>50%)
- Gateway development: Java (40%), C / C++ / Python (30%)
- Devices integrate sensors (>85%) or actuators (>50%)
- Devices act as network gateways (>50%)
- Applications perform analytics (>50%) and are mobile (50%)
Devon the IoT Device Developer
Devon the device developer, develops and tests code for a device that integrates sensors and actuators with the OS and CPU board capabilities. He integrates MQTT and device management protocols on the device. He uses SDKs provided by chip manufacturers and applies security by design principles.
He uses a team development space and connects the device to an IoT Platform to test connections, data transfers, device management, and security use- and test-cases.
- Develops code for devices and gateways
- Downloads his code to a testbed with devices that connect to an IoT Platform
- Makes sure that the device passes tests on connection, data transfer, device management, and security use/test-cases
- Connect devices to the cloud to transmit data and perform tests
- Code, test, debug and maintain firmware for devices and gateways
- Optimize device performance by edge capabilities
- Monitor and report on the performance and health of devices
- Simulate and analyze device data to verify features
Chris the IoT Application Developer
Chris the application developer, is developing applications and services in a connected product IoT solution based on a cloud service architecture in IBM Cloud that integrates with the IoT Platform.
He develops and tests his components locally and deploys to a team development space in the cloud configured with an IoT Platform using live or simulated device data.
- Develops cloud applications and services that depend on data and events from the Watson IoT platform
- Uses IoT platform and database APIs to access device data
- Delivers new code and fixes in his IBM Cloud space that is staged into production
- Minimum set up for the new environment
- Implement data models
- Connect simulated devices and play with the data
- Create and test applications, microservices and expose APIs
- Use client libraries to code productively
Developer Experience Scenarios
The introduction of an IoT development environment involves multiple stages, teams, and team roles.
- The buying LOB organization forms a POC team
- The LOB and IT teams then harden the development environment and start developing, testing, deploying, and maintaining the IoT solutions.
We can generalize these into two major scenarios
My Personal IoT Developer Experience – Delivering an IoT POC
For Devon and Chris, teaming up to deliver an IoT POC, the developer experience can be described as:
“We are a small group of device and application developers, with various skills on Bluemix, Cloud development and IoT, delivering a connected product POC”
“We need self-served material that gets us started with an IoT development environment to build our skills on IoT devices, IoT applications and an IoT solution that shapes a successful POC outcome in a week”
My IoT Solution Developer Experience – Hardening the IoT Development Environment
For the LOB development team, the developer experience can be described as:
“We are a product team transitioning from a POC into a hardened IoT solution cloud development environment, delivering at speed and scale.”
“We need to grow and mature by applying production scale IBM Cloud services and toolchains and leverage our POC IoT starter code and architecture.”
Our research guides us on a design vision for a successful developer experience:
- Guides and supports the developer throughout their journey
- Provides interactive and viable features over comprehensive documentation
- Supports mainstream IDE/languages for developers to work in the best-supported manner
We defined the following hill for the IoT developer:
Several designs deliver on these hills