So, apropos the earlier muse that was fairly muddled about the hardest problem in the geek trades today…
I can’t think of a better way to describe what I do as a geek than to speak as if we were playing one of those wild modern world-building games. Lately, i’ve been playing Oxygen Not Included, but there are lots of them. The most famous are probably the Civilization and Age Of franchises.
In these games, whether smooth and real-time or turn-based, one is confronted with an undeveloped world and asked to create within it some sort of ongoing/sustainable enterprise within it. If you are a gamer, u know what i’m talking about. If not, well, poke around a little, and you can find out easily what i’m talking about.
The gist of these games is that one makes multi-threaded/tasked gestures to alter and respond to an environment of some kind. "go build a woodshop". "run like hell to that dam and plug that hole". Even "take a break". It’s not done using text, but those texts are illustrative. (there’s also "kill that fucker", "dig a hole to poop in", and so on and so forth.
The environment ("anything not mine") these games are played out against isn’t just a passive recipient of your activity. On the contrary, as you affect it, so does it affect you. Some of those effects are broad & generalized: in Oxygen Not Included (ONI), you gotta have food, water, and of course oxygen, and they all decay over time as you use them. Others are more "event-like": enemies arrive, most typically, of one sort or another, and you must defend your little colony against them.
When I play these games, they greatly resemble the software development game in several respects.
- Time passes as you develop, with dreadful or benign, obvious or unpredictable, consequences.
- At any given time, there are literally dozens or hundreds of orders you might give, and many of them have complex & interrelated parameters associated with them.
- Ongoing sustainability trumps virtually every other concern. The game is long, and you have to develop your ability to claim the prize at the end very slowly compared to how fast you can execute moves.
- A nasty little meta-complexity is present in the best of these: the issuable orders change over time, in response to some subset of the orders you’ve already given. (Can’t make a hydrogen generator until you’ve learned how, for instance.)
- There is no one answer, no fixed repetitive algorithmic mechanical newtonian recipe for success.
- The only way to get good at it is to do it. You could study the math and code of ONI all day long, and you still wouldn’t know how to win.
- There are patterns. They’re not precise or identical in application, but the more games you play the more familiar you become with certain problem/solution variations.
- In order to get where you win more often than you lose, you have to lose one helluva lotta times.
- It all comes down to me choosing from a bewildering variety of actions, applying them in multi-threaded value-producing sequences and trees, and keeping my eyes generally on everything all the time.
- It produces a delightful buzz.
So. Here’s the thing. I could easily map every one of these ten numbered items directly on to making software for a living. I mean, really, almost word for word.
Shipping software for money is a temporal enterprise. At any given time there are myriad moves. There are multiple threads of activity. There are active and passive environmental effects. There is sequencing, anticipation, and stochastic/heuristic prediction. And it can be fun.
To restate the problem that initiated all of this: how do we build an effective culture of transmission, where we be more effective in expressing the possible moves, their interactions, their necessary and optional sequencing, and their consequences short-term and long?