Human Resource Machine is an educational game released in 2015 and developed by the Tomorrow Corporation. It's a puzzle game that requires players to utilize visual scripting techniques to program office workers to accomplish various tasks as efficiently as possible.
Human Resource Machine’s progression comfortably eases players into more and more difficult content, without relying on much prior knowledge past fundamental pointer arithmetic and logic. Although it shows minimal support for players struggling with its more complex ideas, it can provide a solid programming foundation for beginners and can even present a challenge to more experienced programmers. The game focuses its educational design on three main learning objectives: Computational Thinking, Building Blocks of Programs, and Code Optimization.
From its first level, Human Resource Machine pushes players into a mode of logical thinking necessary for programming. The structure of each level closely parallels that of a function.
Human Resource Machine’s progression comfortably eases players into more and more difficult content, without relying on much prior knowledge past fundamental pointer arithmetic and logic.
Each level contains an input area (parameters), a place to store data (variables / memory), an output (return value), an area to provide instructions (method body), as well as your character (processor), who carries out the instructions. This fixed structure forces players to utilize computational thinking to break down every problem into the format of computational models.
Building Blocks of Programs
Human Resource Machine provides the player with commands that parallel and encompass nearly all the basic building blocks of programming. If you don’t believe me, check this page to see extensive documentation on the Human Resource Machine coding language and examples of programs that it can build alone.
The game's commands include everything from variables and arithmetic operators to loops, if statements, and even comments. Although the syntax of these commands differs from what would be used by programmers in practice, utilizing them within Human Resource Machine’s levels creates a strong foundation of ideas and logical approaches that will undoubtedly transfer to practice.
The game’s third learning goal is to teach the player how to optimize code. On top of the simple completion of a task, levels are further evaluated by how many instructions the player utilized (size), as well as how many steps the processor had to take using those instructions to complete the task (speed).
Achieving the size and speed goals is often the most challenging part of a level, especially in later ones. The process of simplifying instructions and minimizing steps closely parallels code simplification and runtime optimization, especially as these aspects can often be more difficult than writing code to simply complete the task. In-game and in practice, size and speed are generally considered when writing an initial function but are truly refined after that function completes the task.
Despite size and speed being the most challenging aspects, the game provides little support for them. There are some — although limited — options to receive assistance for commands and the task at hand through examples or short explanations, but the game provides no guidance at all as to how to reduce size or increase speed. Players who feel stuck will have to look for external help to overcome these challenges.
One of the most satisfying parts of Human Resource Machine’s gameplay is that players can see themselves growing as they progress through the levels. As each level introduces new commands and size and speed challenges become harder to achieve, players are continuously drawn in by increasing challenge rather than frustration.
Within Human Resource Machine’s gameplay system lies an outer loop of gameplay that gets players to return to the game over multiple sittings, and an inner loop of gamplay that pushes players to finish any level that they have started.
In the outer loop of gameplay, players grow as programmers by learning a new tool, mastering its use through several levels, and then go back to learning another new tool. This process targets the broader, computational learning goals of the game, forcing players to integrate new concepts and apply them in tandem with prior knowledge in novel situations.
In the inner loop of gameplay within each level, players learn the standard workflow for writing a program.
This inner loop is where Human Resource Machine shows the most success in generating far transfer; it is nearly identical to the loop of writing code, testing if it works, then debugging it line by line if necessary. Players are drawn in by visible progress as the output of their function edges closer and closer to the desired result or as the size and speed of their function gradually approaches the goals.
The design of Human Resource Machine utilizes the learning mechanism of induction / refinement to drive player growth. As players progress through more and more challenging levels, they gain new skills, refine them, and then use them to build upon prior learnings. To support this mechanism, Human Resource Machine also leverages several key learning principles.
After introducing new commands (programming building blocks) to the player at the beginning of a level, the player will immediately have to apply that knowledge to solving a task using that command. Generally, the tasks presented after the learning of a new command are simple and allow players to wrap their heads around the idea.
After players learn new commands by applying them individually in simple tasks, the following tasks require players to use those commands in tandem with those utilized in earlier levels. Players are pushed to consolidate acquired knowledge with prior knowledge by solving levels that leverage the use of all building blocks they have encountered so far.
Although these consolidated levels help players make deep connections between certain ideas and work towards a broader understanding of the computational problem-solving process, the game’s application of this learning principle falls short when, at times, the jump in complexity from a simple applied task to a consolidated task is too large.
For example, if a player is asked to create a sorting algorithm using commands that they have only used to do simple arithmetic before, they may run into roadblocks. In these situations, the game provides limited support, which can often lead players to give up or look up the answer online.
A more successful technique the game uses is the variability of the situations it puts players through. For each programming concept the game introduces, players are forced to utilize their understanding of that idea in a variety of contexts to solve a variety of problems, in the same way coding concepts are adapted to different situations in practice.
The problem, however, is that less experienced players may struggle to adapt to these new contexts. There are few opportunities for players to master a concept before having to utilize it alongside many others in a new context.
Human Resource Machine effectively blends learning and puzzle-based gameplay into an engaging experience. Its structure serves as a strong metaphor for programming in practice, while its learning goals account for most of the core skills necessary to build a program.
Where Human Resource Machine falls short is in how it guides players towards achieving these goals. Jumps in difficulty as well as limited support for inexperienced programmers lead to new players often running into roadblocks they cannot overcome.
However, for more experienced programmers, the game can serve as a refresher on fundamentals while its size and speed requirements can pose a real challenge. But these players will often still find early levels to be too easy or repetitive, indicating that these benefits do not align with the game’s goals.
Although, Human Resource Machine is an engaging game with a strong fundamental structure for teaching programming concepts, it is only able to utilize this structure to partially achieve its learning goals due to a lack of support for beginners.
Sign in or become a SUPERJUMP member to join the conversation.