At not-quite-thirty I decided to get my mid-life crisis started good and early. What am I doing? What direction am I taking? Oh sweet Marduk why do I own so many toy soldiers? After uncurling from my foetal position in the shower, I decided that what was lacking was some good old mental stimulation – it was time to learn a new skill. Preferably one that could get me a job in a G7 economy after Brexit destroys the United Kingdom. Time to learn to code.
But where to start? To the uninitiated, coding is like visiting a foreign city. Signs written in languages you can’t read point at destinations you don’t recognise. You might vaguely recall a landmark you’ve encountered before – HTML is for making websites, C# is used in game development – but what on earth is a .net framework? Object-orientation sounds like a fancy name for a “this way up!” sticker on a parcel. Isn’t Django a Tarantino movie? Why is everyone eating rotted herring?
Despite there being a significant skills gap for programmers in the UK, there’s no easy to find department for education resource for would-be adult learners. So I turned to what I knew best: games. Most people who make games are coders. It stands to reason that sooner or later, they’re going to write what they know. I hit the “programming” keyword on Steam.
Human Resource Machine
Made by Tomorrow Corporation, whose excellent World of Goo was one of the early breakout iOS and indie hits, Human Resource Machine has a simple premise: management needs you to sort incoming mail boxes and send out responses according to their latest, arbitrary dictate. You assemble a series of instructions using kitchen-magnet style snippets which your cutesy avatar will obey. If you don’t give the results that management expects, they get pissy.
“While it bears no relation to any in-use coding language, it was useful for revealing abstract principles that will be cross-applicable.”
And that’s it – over thirty levels of increasing complexity adding new verbs to your instruction set, this is a fun and challenging puzzle game that along the way led me to solve some elementary computer science problems: write a programme that produces the fibonacci sequence, write another that can read a zero-terminated string, then use zero-terminated-strings and registers to decode a message.
The pull-and-drop interface is a holdover from the game’s origins on iOS, and while it’s quick and intuitive, for larger programmes it’s a frustrating limitation. The limited volume controls are also a quality-of-life annoyance.
Bonus stars are available for finding solutions to the problems that contain very few lines of code, or which complete in very few steps. It turns out that a sprawling code-base could sometimes solve problems in far fewer steps than a tiny codebase that relied on recursion to resolve its tasks. That’s illustrative of the kind of insights this game gave me – while it bears no relation to any in-use coding language, it was useful for revealing abstract principles that will be cross-applicable, as well as practical maxims like solving problems on paper before determining the code needed to create them. It gave me the confidence to delve a little further into code city.
Your late uncle has left you one of the old micro-computers he picked up in a swap-meet in the ‘80s, and you’re trying to recover the contents of the hard-drive to find the notes he left on it. There’s an intriguing tale to be found in there and the game is an excellent recreation of an era of computer history that most modern gamers will have no reason whatsoever to revisit.
The picture is fully indicative of what you’re dealing with in TIS-100; you’re writing code on a very alien looking architecture. The titular Tessellated Intelligence System has multiple processing nodes, each of which can run code simultaneously but can only hold one current and one banked variable at a time. Your code will manipulate numbers and pass them orthogonally between adjacent nodes, and this time you’re trying to complete tasks set by the system’s debugging and calibration processes.
“You quickly discover that you’re fighting against the limitations of the architecture.”
You quickly discover that you’re fighting against the limitations of the architecture – each node can only contain a dozen lines of code, so you’re forced to learn to use parallelisation to break up tasks and resolve them in pieces. Nevertheless the TIS language is incredibly expressive. The problems you’re solving have names like “signal edge detector” and “signal multiplexer”, and there’s a sense that the TIS might have been used as some sort of intelligence gathering machine; that the incredibly limited language nevertheless had great utility.
TIS feels like a challenge for puzzle fans or existing coders with an interest in computer history. It’s a more satisfying and challenging game than Human Resource Machine, but also a more intimidating one. Being so closely tied to the manipulation of raw numbers at a very low level of abstraction, it also feels very distant from any coding I might do in the real world. So I turned to another resource.
A friend who is a programmer
Tom is a lovely man who I know through a baby group, and he worked in coding for eight years. I won’t comment on his graphics or gameplay, but he has an excellent story mode: the story of his journey into software development, complete with lucky breaks, mistakes and missteps, and lots of self-teaching. He leant me some books – the most relevant being Head First C# and The Java Programming Language – and told me I needed to work on a personal programming project if I was going to get anywhere. He had a lot of good advice to share, and a heartening message: “the field changes so fast that everyone’s still learning.”
Human Resource Machine and TIS-100 will teach you to programme – in their own invented languages. They have very real limits, and won’t help you programme your own applications or games, at least not ones that run outside their own invented computers, so you’ll probably want to find your own Tom. Appealing as the idea of learning to code entirely through games is, they’re just not they’re yet. But they might give you the confidence that you can take the next step. They certainly helped me.