In many ways. In Factorio, your factory can have concurrency, parallelism, race conditions, bottlenecks, deadlocks, resource starvation, etc, etc. Looking for those types of problems and solving them is a very fun feedback loop. You can spend a few hours just walking around a large factory, making small incremental improvements as you go, and your entire factory will be visibly better off. The only thing preventing you from doing this to your application is the lack of visibility into the problems. There’s a bottleneck in your code right now, but can you find it? They’re almost never detectable by simple inspection of the source code, so it takes specialized tools. I would say then that building a large factory is like an optimal form of programming where nothing is opaque or hidden from you.