As someone who doesn't code all day any longer, factorio really tickles that part of my brain.
Every problem that needs to be overcome, every obstacle in the path, every idiotic decision I curse is something I did previously just to get things working. Then I run out of space. Or I need to pipe water in. Or a factory is outputting to the left when outputting to the right would be a better decision .... hmm ... do I move 200 componenets or just ... slap a train station in? Or 1,000 belts? ARGH! I've done it again!