Parallels between Factorio and software design



I have been working as a software designer for a long time and I can say with confidence that this is interesting. It's a great job, and I wouldn't trade it for anything else. It's so exciting that some people want to convey the most interesting aspects of our work and express them in games.



I played two of these games. The first is Shenzhen.io . It is similar to what an embedded engineer would do. An engineer solves puzzles by writing assembly code for low-power devices. What's great about this game is that the developers have removed the annoying aspects of coding and commissioning from it.



  • The requirements are clear and surprisingly well suited to the task.
  • , . , .
  • , ( ) . , .


Should a software designer play Shenzhen.io? The gameplay of this game is not for everyone. To some, it "looks too much like work." After all, when you play, you want to relax and not work on tasks that you already do eight hours a day. Regardless, I think it's worth playing around just to see how exciting the task becomes when the requirements are clear and the development tools are fast. Everyone knows that investing in development and tools pays off, but the fun of the game reinforces that feeling.



The second game is Factoriowhich was released last Friday, although it has been playable in Early Access for almost four years. Those who have played it are probably perplexed now - after all, this game is about building a factory, not about coding. The player works with conveyors, metal, oil products and creates the resources necessary for the manufacture of a spaceship.





And yet, this game reminds me more of software design than any other game. Let me explain why.



  • . Β« Β» ? β€” . , . ( !) , , . , / .
  • Β« Β» (Don’t Repeat Yourself, DRY). β€” . , , , ? β€” Β« Β». , , . β€” , - , , . Factorio β€” ( ) 4-5 . .
  • . , , , 3-5 . , . , . β€” , - . , .
  • . . , , , , . , , . !
  • . , - . β€” , . β€” , , . , .
  • . . , . , . , , (), , . , , , - . β€” . API , .
  • . , . - . , - . , . , 100 . β€” , , , . β€” , , . , , . β€” .
  • . , . - , . , . , , . , , . AWS CloudFormation β€” , . , , β€” , . , , , .
  • . , β€” . , . .


But first and foremost, this is a game about how to deal with complexity. How to design a specification and implement systems that conform to that specification. About the support and gradual expansion of this system.



It seems to me that playing Factorio will not make you a more skillful software designer. But if you design software, then the game may seem fun to you. Conversely, if you are good at the game, then you should definitely try your hand at software design.



You can buy Factorio on the official website or on Steam . If you want to try the game before buying, then it has a free demo . (Just one tip - don't expect a sale. This game has never had a sale, and it probably won't.)






Thanks to MineΕ‘ Patel for proofreading the draft and suggestions for improving the article.



Comments can be read on Hacker News and on reddit .



All Articles