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.
IoT Application Development Lifecycle

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.”

IoT Developer Experience stages for Delivering an IoT POC and Hardening the IoT Development Environment.

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:

 

“As a Developer with no prior IoT platform experience, I can within 15 minutes set up a new IoT platform organization and start developing and testing my IoT devices and applications”

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.

 

ChrisDevon

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.