Factorio has genuinely taught me lessons about software design.
- learn where in your stack it's worth optimizing vs just let it chug along inefficiently.
- Unintuitively, often a simple, inefficient, unmaintainable automation slapped together is better than something well-written, especially in the domain of ML/data munging
- feedback is essential. When I started, I didn't spend much time in the plots windows. This is your QA dash. Pushed me heavily into using integrated CI pipelines
- don't be afraid of rewrites. But do have ample tests.
- CSP rocks
It's even pushed me from a "pythonic" dynamic style to writing much more golang and python that feels a bit like go.
- learn where in your stack it's worth optimizing vs just let it chug along inefficiently.
- Unintuitively, often a simple, inefficient, unmaintainable automation slapped together is better than something well-written, especially in the domain of ML/data munging
- feedback is essential. When I started, I didn't spend much time in the plots windows. This is your QA dash. Pushed me heavily into using integrated CI pipelines
- don't be afraid of rewrites. But do have ample tests.
Communicating Sequential Processing. It's a multithreading/processing model which as the name suggests, leans more on communication, less on sharing memory.
It's not as efficient for some types of computing, like doing tons of operations on the same buffer, but it scales horizontally very nicely.