任何复杂系统都是由简单构建起来的——Factorio 和软件工程
我很喜欢沙盘游戏,尤其是模拟建设类,不管是最近的 Rim World, Factorio 还是古老的《宙斯:众神之王》、《模拟城市 3000》,都能让我沉迷很长时间。
我的职业是程序员,很多同事喜欢自己的产品被很多人使用的感觉,但我却更喜欢“由自己从零开始创造东西”的体验。在办公室里敲出来的东西往往是多人合作的结果,是多方 trade off 的产出。所以相比于在大公司敲代码,作为个人开发者做出来的东西更能让我感到愉悦,尽管用户量级无法相提并论。
玩沙盘游戏本质上就是在从零创造。只是比起在现实世界写代码,游戏里的规则更加明确,反馈更及时,也少了大量干扰元素,使得玩家可以全力集中在“创造”这件事情上。2012 年在 Steam 上架的 Factorio 是我目前玩过的游戏里最接近“写代码”这件事情的,在游戏里你要解决的问题和在软件工程中要解决的非常相似,在逻辑上两者的思路是一致的。
零、都是工程
Factorio 中文译名为“异星工厂”,游戏的背景是在外太空的某个荒凉的星球上,玩家可以操控一个唯一的人物,用他来挖矿,采集资源,建造工厂,通过流水线把原始的简单手工劳作变成极度复杂的自动化作业。玩家在游戏过程中不断面临各种复杂工程带来的问题,如何设计合理的区域规划,如何搭建纵横交错的物流系统,如何应对污染带来的虫族袭击等等等等,这些问题是环环相扣,相互联动的。
在实际写代码的过程中,程序员也会面临项目变大以后带来的种种问题。以我熟悉的 iOS 客户端开发为例,