To Think Like a Programmer
Yesterday I spent the afternoon with Alex Warren, developer of Interactive Fiction platform Quest, talking through game design and learning code my first feature game. It was a fascinating mixture of discussion, demonstration and questioning and as a result I am even more convinced than ever that ‘Computer Science’ or programming / coding, or Interactive Fiction deserves a place in our National Curriculum.
As a starting point, Alex and I were discussing where IF (designing and coding) might contribute to the curriculum, after all, IF is neither solely Computing nor English. IF is in fact a rather curious hybrid of both, with the contribution of these two subjects swaying rather unpredictably depending on where you are in the construction process, your ability to code your design and the subsequent experience and feedback of the player. Defining the literacy contribution of IF to the curriculum was fairly straight forward. Defining the coding contribution to the contribution was anything but, and this is where the debate began.
From a non-coders point of view, I rather naively positioned that coding required logic, math and analytical skills, and that students that sought creative and artistic fulfilment would seek out other opportunities. Alex articulately disagreed. In his view, coding is so much more than logistic, mathematical problem solving. It is ‘how’ you solve the problem, which solution you select (of which there may be numerous) and how that solution impacts on the remaining aims / problems of the project. Code itself can artistic, a single solution can be artistic, but combining many solutions effectively is an art form.
Alex then went onto demonstrated and apply this theory to the rest of our meeting as we worked on ‘Little Red Riding Hood’ – our first game. Almost every game task, Alex could offer at least two or three solutions. For example, combining the ‘coca-cola and Mentos’ to make the Big Bad Wolf explode, (I know, it’s a fantastic sanitised solution to getting rid of the Wolf) and creating a virtual ‘piggy bank’ were simple but Alex would highlight the benefits and drawbacks of code variation, frequently referencing how the code might impact on any previous and future solutions were had planned.
Once ‘we’ had selected our preferred design, the coding process itself was more logical and even with Quests structured interface, creating recognised game mechanics such as ‘life’ was still quite challenging and thought provoking. I will certainly be borrowing Alex’s mantra of ‘What are the steps we need to follow’ and I must remember to ‘destroy’ objects once the value of that object has been assimilated. As we took on more challenging tasks and moved further into coding our game design, the importance of forward planning began to pay dividend and this is a relatively small and simple game. I am certainly not a natural coder, nor am I a gifted writer but I am thoroughly enjoying the combining these skills and its certainly demanding.
Alex was a fantastic tutor and I do hope he gets to share his expertise with a wider group of interested teachers. I might even try to hold an IF workshop in the New Year, if I can rustle up enough interest. Meanwhile, back at the kitchen table, Alex jotted down a handful of quick fixes to the 5.1 BETA we were using and one of two possible feature requests. One area I hope to contribute to and see develop is the QUEST code library, short, code recipes to help game writers code more accurately and efficiently, starting with the ‘virtual piggy bank.’