Factorio Review (helios.vmg)
Factorio in itself is great, which is why I'm giving it a positive rating, but to be honest I can't simply recommend it, at least not without some caveats. I work as a software developer, and I find that when I play Factorio I engage the same parts of my brain I use during work. So if I've been working all day and then when I get off work I play Factorio I get increasingly exhausted as the days go by and I continue that routine. If you're a software engineer or a programmer or what have you, for god's sake don't play Factorio! Work on some side project and it'll feel basically the same, trust me. Bonus points: when you're done you'll have something that does something at least slightly useful. It's fun to look at the machines in Factorio chug along, but I find it hard to shake that feeling of "wow, while I was building this I could have been working on X project and moved it so far along", and that's something that's never happened to me with any other video game.
Some added context in case anyone else has a question I've been asked:
TL;DR: No, Factorio won't teach you programming or make you a better programmer.
The problem solving you do in Factorio is in broad strokes the same kind of problem solving you do in engineering. First, "how I make this faster?", and second, "this is no longer working, what's the ultimate cause of the malfunction?" Once the factory is running, I would say something like 50% of my time is spent figuring out why there's a clog in the production pipeline (most of the other half is routing conveyor belts), which involves going back up the pipeline to find that it's because one particular mine or processor several layers back ran dry or something. This is pretty much what you do when debugging software: you start at the immediate symptom and then go back and back until you find the ultimate source of the bug.
*However*, I don't believe this helps you get better at engineering, because this is what anyone does during problem solving (because there's no other way). Something that would help you get better would teach you actually applicable techniques for your specialty (e.g. what to look for in a memory dump, how to quickly locate a fault). I don't think it could be possible to turn that into a game.