1. The conceptual organization of the code (≈ layout) 2. The interfaces between components (≈ routing)
Static types and functional programming naturally lean into this: types provide a first-class way to sketch out layout and interfaces in code without needing to implement the code in full detail. I'm drawn to static types less because of correctness or preventing bugs—although I can't complain about that!—and more because they give me a quick, high-level sub-language to sketch out and iterate on the design of my code. Those same types then act as guideposts for how the codebase fits together, making it easier for me to understand projects written by others or revisit code I wrote but don't remember well myself.
In factorio you create bigger functions from smaller ones as explained in the article in great detail. The routing and layout part is about organization, but the more abstract notions of combinations and ratios are "functional" in the sense of the article.
Factorio is the ultimate proof these tools are not any easier than just writing the code yourself.
I think games like these have the advantage that they immediately become a tool to be toyed with, although many still complain that getting into Factorio isn't too easy. Until math or a programming language becomes a tool, you have to invest a bit more into it.