Programming is a powerful tool for interaction designers, which provides significant opportunities in creating and testing new concepts. Designers and more specifically interaction designers go beyond the basic button & led interaction, but generally stay below production level coding and complex professional systems. However, programming for interaction designers is often a complicated activity. With little to no skills or experience in programming, interaction designers often run into the problem of translating ideas into functioning code, rather than problems related to language. This graduation thesis is the result of investigating the gap between idea and code, and how this abstraction and translating step can be influenced, to make programming for interaction designers more accessible as a design tool. Interaction designers who operate both in the physical and the virtual domain often need to write programs to try out interaction ideas through interactive physical prototypes. To be able to validate these interactive ideas and behaviors successfully, knowledge related to programming is essential. Programming knowledge is fundamental for understanding the technical possibilities and limitations of interaction. Understanding programming is like understanding a new material; a designer needs to know both the limits and possibilities to be able to design successfully. Many of the contemporary tools for interaction designers, such as Arduino or Phidgets, emphasize the ability to sketch in the physical domain of interaction design (sketching in hardware). However, there is little support for the interaction designer to sketch in the virtual domain (sketching in software). While there is a large body of work about bringing programming for nonprofessional programmers, there are many reasons to believe that the hardest problem interaction designers face is the abstraction and translation step that goes from concepts and behaviors to functioning code. The abstraction and translation step is much more problematic for interaction designers than, for instance, syntax or other linguistic aspects of programming. Based upon observation of interaction design students, as well as several studies with paper programing, it is believed that most students are able to grasp individual statements of the language. Instead, most problems occur at a level above individual statement but below completed programs. This graduation thesis attempts to characterize this step of abstraction and translation in the process of interaction designers and proposes a first rough design for a toolkit that bridges the gap between idea and code. This toolkit is called the Code Companion and contains two tools: the Blueprint, and the Pattern Dictionary. The Blueprint is a paper tool that is inspired by programming plans and guides the interaction designer to think how a computer represents behavior or interaction. The Blueprint has four steps: program description, defining inputs and outputs, defining tools, and finally sketching the path from input to output using these tools. The Blueprint was exposed to students in two interaction design workshops, one at the University College of Antwerp and one at the Glasgow School of Art. In the workshops, the students were asked to use the Blueprint after defining their idea of interaction, but before writing their code in Arduino. Students in both of the workshops seemed to have a better overview and had a better understanding what they had to program, because of the Blueprint. Students frequently drew ‘tools’ in the Blueprint they were unable to reproduce in their code. However, they were able to come up with patterns in the Blueprint, but were unable to translate them into working code. To solve the issue of knowing what to program, but not how to program it, the Pattern Dictionary was designed. This is the second tool of the Code Companion, and is a dictionary of common programming patterns. Throughout the workshops, many of these patterns emerged, such as compare, timer, repeat, or sensor input. The combination of these two tools reduce the gap between idea and code, and allow interaction designers to be able to better sketch in software. Finally, an experiment was set up to measure the effect of the Code Companion on the abstraction and translation process. This experiment was set up to have three different groups, in which participants were asked to do two design and programming assignments. Group 1 was asked to do assignment 1 first, followed by assignment 2 using the Code Companion. Group 2 was asked to do assignment 2 first, followed by assignment 1 using the Code Companion. Finally, group 3 did both assignments without using the Code Companion at all.