I think this is one of the things that got me into programming (in particular – game development): programming is essentially creating your own little universe. You define the rules, and how things interact within that universe.
I think when I was first getting into programming, I couldn’t really see the connection – books and tutorials would teach about variables and functions, or even classes and inheritance, but I still failed to see the connection to how those were basically creating rules. It slowly started to make sense, though. “When you click on this thing, this action happens”. “If the previous action happens three times in a row, make this other thing happen”. By gathering data from the user or from other sources – level files, random number generators, incoming network calls, etc., and processing that data using a set of rules, you can make more interesting and complex things happen.
I’m always entertained by hearing stories from other games where players have managed to do things in a way that the developers never intended. For example, I don’t think the developers of the original Deus Ex planned on players playing through the entire game without killing a single thing – yet someone figured out that, within the constraints of the Deus Ex universe, it was possible. Or more oddly, players figured out that by placing mines on walls, you could slowly scale your way up walls that you shouldn’t be able to. I’ve heard this referred to the “unorthodox usage of objects” in a games, and have thought that its presence is generally a good indicator of a great game design.
I don’t do game development as a full time job. Instead, I’m currently writing software for the agriculture industry. It’s still similar in a sense – I’ve got my data, my set of rules, and there’s a small universe in which you have total control.
That is, at least until a product owner requests something you’ve never intended…