Code Companion

In my graduation thesis, I characterized the step of abstractions and translation when designers want to translate their idea into code. I created a toolkit to facilitate the design and prototyping process. This toolkit is called the Code Companion and contains two tools: the Blueprint, and the Pattern Dictionary. 

Client

TUDelft

Year

2012

Duration

10 months

Role

Design Researcher

A photo of a person doing a paper programming exercise. The paper is full of notes and sketches.
Programming is hard, especially if you have little to no prior knowledge. Interaction designers often run into the problem of translating ideas into functioning code. The Code Companion helps designers break down this process in separate, digestable steps.
Picture of the pattern dictionary on an app, with a physical copy in the background

The Code Companion: a tool to help interaction designs with programming their ideas

To investigate the gap between idea and code, I organized multiple workshops where 40+ design students had to program and prototype a similar design (an interactive dice). All their code was printed and analyzed for patterns; which indicated that none of the students had any overarching knowledge of programming concepts.

Research results of design students that programmed for the first time, hanged on a wall

Code analysis of designers that were programming for the first time

Next, I organized a paper programming workshop, in which design students had to perform a paper programming exercise for two very limited design briefs. Together with the code analysis; I identified two strategies designers employ when breaking down ideas: pathfinding & trial-and-error. 

Research results of paper programming, hanged on a wall
Results of the paper programming workshop

Besides observations, experiments, and exercises with designers, I also researched the history of programming. Understanding which programming paradigm influenced which language proved to be vital in determining possible solutions and design directions.

A timeline of different programming languages and paradigms

A short history of programming languages (click to enlarge)

The research indicated that most problems occur at a level above individual statement but below completed programs. How to combine individual statements into working functions. Below you can find the Blueprint, which is a tool that helps designers breaking down their ideas into smaller, programmable chunks.
Blueprint in use: A paper drawing of a software program

The Blueprint allows designers to breakdown their ideas into logic

A designer using the Blueprint and Pattern Dictionary

A designer using the Blueprint to breakdown their idea

To support the Blueprint and help designers find the right (programming) pattern, I designed the Pattern Dictionary. The dictionary includes common programming patterns and behaviors for Arduino, explains the flow and explains different concepts.

Pattern dictionary: example of how programming patterns work

The Pattern Dictionary, a tool that explains common programming patterns for designers

Additionally, a prototyping tool was made that had an array of pre-programmed inputs and outputs designers could use to test their concept. This eliminated learning hardware and electronics from the process, letting them focus on programming concepts.

Arduino hardware prototyping board, to make programming easier
Code Companion prototyping tool

In short, the Code Companion is an initial exploration in demystifying how programming works, and helps interaction designers breakdown their ideas into more manageable, programmable parts.

Picture of the pattern dictionary on an app, with a physical copy in the background

The Code Companion