My Multi-Hour Gaming Sessions Are Productive. I Swear.
For those who aren’t familiar, Factory building games are a genre of video game where the goal is to build factories that produce items, which are then used to produce more items, and so on.
Input and Output
Jumping into the genre as a software developer, You’ll notice that underneath the pretty wrapping, the entire game world of a factory building game revolves around input and output.
Input ore into a furnace output iron, input iron into an assembling machine to output firearm magazines for your weapon. This input and output process provides a visual representation of how functions in programming work.
Like writing code, you can create a spaghetti mess of factories or build clean and understandable factories with clear input and output perfectly balanced to produce your desired items.
Often part of the fun of a factory builder game is creating an optimized design and appreciating the aesthetics of what you’ve built. Arguably, for some people, this is also one fun part of programming. Writing code that is elegant, readable, and bug-free.
After building more factories, you learn patterns that can be applied to different situations. This is similar to design patterns in programming.
Reusability and Abstraction.
Often good designs in factory building games are reusable. Factorio has the concept of building tileable factories, These are blueprints for factories that you can repeat to achieve the same goal multiple times.
This perfectly represents creating a method in a program that wraps complex behavior into some abstraction. You don’t need to worry about the specific details or implementation anymore. You have a blueprint that handles that internal complexity for you.
Deadlines and YAGNI (You ain’t gonna need it)
In most factory building games, there is some pressure to build the factories in a reasonable amount of time. This pressure teaches you to keep moving forward and building factories that are good enough instead of perfect. Much like in programming, where you don’t have the time to create an ideal solution or don’t need a perfect solution for your use case, you need to decide what is good enough to move forward and progress at a reasonable rate.
Factory builder games can be complex, and in order to understand them, you often have to thoroughly read the in-game text to understand how the game works. You’ll have to research your desired goal item, then research the sub-items necessary to produce it. This leverages the same skills needed to decipher documentation and understand how a programming language or library works.
As you build factories, it’s inevitable that you’re going to make mistakes, or you’re going to get upgrades that force you to improve your previous designs. Much like when refactoring your codebase, you go back to your original design and work to improve it. This process occurs in 2 dimensional or 3-dimensional space depending on the game so it helps you intuitively understand if your design is clean or not.
So go out and play!
Programming is not limited to the confines of your keyboard. You can pick up skills for programming everywhere you are.
I’m not going to tell you playing factory builder games is the most productive use of your time, nor is it the best path to becoming a software engineer. However, it’s a fantastic way to pick up applicable skills and enjoy some time with friends.
If you are considering getting into programming and find you have an aptitude for these types of games you might consider that a sign you’ll also have an aptitude for programming.
So go out and have fun!