As a visiting lecturer at the Royal College of Art I have been providing tutorials for the Global Innovation Design (GID) and Innovation Design Engineering (IDE) Masters courses.

Working with students at the RCA

Global Innovation Design

I worked with the second year GID students on their graduation projects, helping to narrow the focus of their projects, defining technical requirements, and helping with implementation.

What to prototype?

Students would often start with grand plans, both in terms of scope and technical ambition. Knowing from experience (as a GID student) how short the few months they had actually was, my goal was to help them separate what they had to build from what they could communicate in other ways. I learnt that the most important question to ask was:

Which part of your project has no-one else tested before?

This question has two effects: it gets the student to pick out what makes their project unique, and it highlights the only parts of the project they actually have to prototype. Very often students have a sense of having to build and test a complete system, but this is often time misspent.

Take an example of a service that automatically translates letters from a doctor into clear instructions for patients (these letters are often written with the primary purpose of creating a medical record, rather than providing information to the patient), it may be worth spending some time on a functioning prototype that generates instructions from a limited set of keywords; it is definitely not worth trying to build your own general purpose keyword detector (this problem is already solved) or trying to cover a huge range of diagnoses (generalising is time consuming, all that is needed is a proof of concept). The real thing that needs prototyping is the letter itself, testing different approaches to find a form that makes patients more confident and compliant. This is the key unknown, and can be perfectly prototyped by hand-writing the letters, which will also be much faster. While it is true that the computer translation will have an impact on the quality of the letters, by focusing on the type of letter to be generated you are also generating the target outputs that would guide the programming of the project when it does need to be fully implemented.

The wrong way to do this project would be to focus entirely on the implementation, and not leave enough time to design the experience and service elements. As long as you have enough of a working prototype to justify your assertions and assumptions, it is OK to fudge the implementation. A great paper on the various approaches to prototyping is What do Prototypes Prototype? by Stephanie Houde and Charles Hill.

Programming

As projects developed, I spent more of my time providing programming support. This could be a tricky balancing act between the student’s current ability, the amount of time left and the familiarity, learning curve and limitations of various technologies.

A common difficulty was a student finding a useful piece of prototyping software (e.g. a visual editor for mobile apps) that could do 95% of the work, but the limitations prevented the important last 5%; often this is difficult to determine at the beginning of the project. For me this meant showing them some really hacky stuff to just make it work.

A personal challenge for me was judging when not to help a student. It can be easy to help create a program that goes just a bit too far beyond the student’s full comprehension. Then if something needs to be changed, goes wrong, or they want to make a change, it is very difficult for them to do it on their own. This was more common closer to the deadline, where we didn’t have enough time to pore over every line of code: is it better to leave a student definitely stranded or just potentially stranded?

Working with students at the RCA

Innovation Design Engineering

I worked with the first year IDE students on their Solo Major projects, which was a somewhat less stressful point in the course than with the final year students. This was the first time the students were given total freedom in their concept development. I think this results in it being more of an exercise in developing the meta skills needed to do self-directed work than in necessarily producing world-changing projects. This may also help tutors identify which students may be weak in these meta areas –despite their strengths in others– before they enter their final year, which is entirely self directed.

With only a couple of weeks to complete their projects, it was really critical for them to prototype effectively. My work was mostly a mix of programming help and helping figure out which technologies would help them approximate their concepts in such a short amount of time (which was sometimes no technology).

One student really nailed the process by quickly prototyping a reasonably complex physical installation using only Apple’s slideshow software Keynote. The installation was a window (of the house variety) that would act as a portal into another world. It was going to have a screen behind it showing a landscape, when the window was opened it would change the scene, transitioning from a calm day scene to a stormy night. In the final version, the video footage would morph, a fan and water pump turned on, and environmental sounds would play. The student prototyped the whole thing with in Keynote by having one video embedded per slide. The first slide had a looping video of the day scene and a button labelled “click to open the window”. When pressed, it would move to the next slide, which was a video of a hand reaching in and opening/closing the window, after which it automatically went onto a slide with a looping video of the night scene (with another button to close the window). Keynote is actually a commonly used prototyping tool internally at Apple, see this WWDC talk for an example: Prototyping: Fake it till you make it (WWDC 2014).

Machine Learning is the new hotness

There were a lot of projects that needed Machine Learning (and more that just to use a buzzword There is definitely a gap in the market for some tooling here. I’ve heard some hype around lobe.ai but it’s still in private beta. However, some of the barriers are not solved with a “make GUIs” approach. One student had a great idea for a project that would make use of a GAN for image generation; he found a pre-trained model from Adobe that would do the job if he supplied the right dataset. The challenge was trying to pick up all of the assumed knowledge of the programming community: the terminal, bash, git, package managers, ssh; it was hard for him to even know what he didn’t know so he could search for it. A great example is seeing sudo apt-get install and knowing that on a mac you would want to use brew and brew install.

What would a product look like to fill this gap? It’s not an entirely technical problem: some form of container might be the technical solution, but the wrapping process would need minimal effort on the part of the creators e.g. submit a git repo URL and have the container automatically created.

Unity

Unity is really well situated for design students; they are already familiar with 3D environments like Maya, Rhino, Fusion and SolidWorks and can continue to use those tools. Unity’s usage is growing, but a lack of programming skills held students back.

Students are taught physical prototyping skills, they need the same for behaviour prototyping (i.e. programming)

I also saw a students saving large chunks of time by buying plugins from the built-in store, an advancement on community examples –albeit in a “just get me something working” sense, and not an educational one. Of of Unity’s huge strengths is that it can be used for desktop, mobile, AR/VR and physical projects. With more online tutorials and community for non-game projects I think Unity could quickly replace Processing as the design student’s default programming platform. One challenge is that Unity’s flexibility means there are many ways to accomplish the same task, the best approach is rarely clear, and the community is less art and design oriented.

Web Technologies

Many projects that might have required Processing or openFrameworks can now be realised with web technologies. I think students would benefit from having basic skills in HTML, CSS and JavaScript. The biggest barrier I noticed was knowing how to set up a project: ask a student to create a .js file and they might look at you blankly; the idea of generic file creation is alien to people who have grown up with application specific documents. The most successful platforms for designers (Processing, Arduino) have followed the Application + Document model, which designers are familiar with from applications like Photoshop, InDesign, After Effects etc.

A solution to this could be a double-clickable authoring application that can output:

  1. An Electron app
  2. A mobile app that wraps a web view
  3. A folder that can be dropped onto a web server.

Text Editors

It’s really great that Atom and Visual Studio Code exist. Having free, good quality text editors means it is easy to get students set up with autocomplete, linters, automatic formatting and other tools that prevent the most common issues for beginners.

How did I do?

Although I have done a – bunchofteaching – before, this was my first time teaching graduate students, so asked the (GID) students to fill out an anonymous feedback form. Overall they gave the tutorials 4.9 stars   and had these things to say:

Arthur’s tutorials could help you land a rocket on Mars using code. Arthur will add clarity and certainty to your wildest coding dreams.

Arthur went over and beyond what was expected to help me achieve what I envisioned for my Final Project. He was very creative in finding solutions to complex issues and was always happy to help. He is very good at breaking down concepts and explaining them in laymen terms in order to help me understand and apply new programming knowledge.

Arthur Carabott has been an extremely valuable mentor to our startup. From teaching best coding practises, to supporting the development of the front-end in JavaScript and compiling the software stack, Arthur helped us pushing our project from concept to implementation. Keep up the fantastic work!

For a coding & electronics beginner like me, Arthur was patient and helpful to lay down the basics as well as being enthusiastic to aid in problem solving in my project.