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%)
- Cloud development: Java (50%) but also Javascript, Node.js, Python (25%), and NodeRed
- 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.
Role
- 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
Goals
- 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.
Role
- 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
Goals
- 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.”
Design Vision
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
Hills
We defined the following hill for the IoT developer:
Related Designs
Several designs deliver on these hills
Simulated Devices Design
The Device Simulator design in Watson IoT Platform enables developers to build and test the IoT applications without deploying physical devices beforehand. Developers can simulate the existing registered devices or whole new devices. The Device Simulator allows developers to customize the schedules and payloads.
Help Hub Design
The Help Hub design provides a simple onboarding experience for new users of the IoT platform. The design creates a seamless learning experience, guiding users and allowing them to form a mental model of the IoT platform and its resources.
Meet Chris is the Application Developer and Devon is the Edge Device Developer.
Chris and Devon are the most frequently used personas in the developer experience design across the platform capabilities.
Simulated Devices Design
The Device Simulator design in Watson IoT Platform enables developers to build and test the IoT applications without deploying physical devices beforehand. Developers can simulate the existing registered devices or whole new devices. The Device Simulator allows developers to customize the schedules and payloads.
Help Hub Design
The Help Hub design provides a simple on-boarding experience for new users of the IoT platform. The design creates a seamless learning experience, guiding users and allowing them to form a mental model of the IoT platform and its resources.