Sam Gentle.com

Scale

This weekend I've been playing Factorio, a kind of base building game where you start off gathering resources and making structures, but slowly automate more and more until eventually you're like a kind of logistics gardener, just walking around and tending your production pipelines.

The great thing about the game is that the level of abstraction scales up as your abilities grow. You start off learning the game at a very low level, but as you learn how the basics work it quickly becomes unnecessary to use them. Instead, you can move on to more advanced skills that abstract away the things you already know. It gives a wonderful sense of satisfaction later on looking at the immense amount of work you could have done from scratch, but didn't.

I think this is an important quality in other fields too, not least of which is software development. Good software is designed by building large abstractions on top of smaller ones. And yet we often do a woeful job of passing on those abstractions to others in a meaningful way. Despite how great it is to learn from the bottom up, we usually teach from the top down. Or, often, just teach the top and hope they figure the rest out.

It's no coincidence that games are surprisingly far ahead in how they educate and motivate people. Unlike in the real world where you are often compelled to stick around, entertainment has to earn your attention every moment, or you'll simply do something else. It's amazing that in an environment that unfavourable, many games can still approach deep concepts and complex skills. More than anything else, I think it's a testament to how much we enjoy learning and exploring when it's done on our terms.