Factorio Is the Best Technical Interview We Have (2021)
erikmcclure.com
erikmcclure.com
The first problem is Factorio is not coding. Some kid can come in, not know anything about programming, but ace the interview on the level of a "Senior" developer because they knew how Factorio worked.
The other problem, and arguably the bigger one, is that this really only works for Interns, Juniors and Mid level engineers. Once you get to senior you start specializing and that's what truly makes you "senior" in a space.
If I came in to an interview for a senior position and they had me play factorio? I'm honestly not sure if I would keep taking this place seriously. Like don't you guys want to know about the stuff I have worked on? The stuff I have previously built? Are you really going to take all that experience, throw it out the window, and hinge your hiring decision on how well I do in a video game?
Personally, if a place interviewed me like this I would be a bit insulted and probably not call them back.
Maybe that’s similar to the bias toward knowing FizzBuzz, but it’s much weirder?
There aren't many people spending their time specializing in programming fizzbuzz solutions, so the "bias" is typically towards programming in general -- which isn't a bias at all because that's what the interview is about.
Jank is fun on your factory, not so much on a company product :)
I'm not even saying that it'd be better for interviews if you could turn off that backpressure. You gotta limit these things. I'm just saying, if someone asked me how factorio was different from systems in the real world, that'd be my first example.
Isn't that effectively the same thing as when the belt stops? You've just added a bit more buffer before everything seizes up, and some extra cleanup.
I'm not even sure you can say factorio has backpressure; the factory getting overloaded doesn't trigger slower production rates in prior parts of the system. The queue gets full and stops accepting input, and the prior machines stop sending input as a result (they could alternatively send input and it be dropped & deleted ala software systems, but that's just making it harder to debug because you don't see the whole thing freeze; the problem/solution is still the same)
That is backpressure...
Interestingly I think if Factorio didn't have backpressure, and unconsumed items disappeared when they reached the end of the conveyor, the game would be easier because you could just put every kind of items on a single belt. Un-balanced consumption wouldn't stop down the next production stage because the conveyor would keep running, whereas now if you're not consuming one type of item from a mixed stream you will block it preventing you from getting the other types of items.
Otherwise I'd say programming interviews are more biased against people who like programming but hated closed-book tests in school where there is a single correct answer and never some "it depends...".
This is my favorite factorio video and it shows a lot about how you can prevent a lot of unnecessary optimization in the early game. https://m.youtube.com/watch?v=LSyrbPsnNGo
And you can indeed never bother with circuits on refining for example. In fact you don’t need to touch a lot of the features in the late game if you stay focused. If you can find someone that plays like this then you have a real winner.
Very much how Craig’s list found success in their business.
Think Craigslist has several engineers, but it’s really a skeleton crew for the scale of their “impact”
Additional he understands that it’s ok to over build cheap things like assemblers and steam power plants, and accept 80% utilization from solar instead of trying to bank the last 20% into accumulators. That kind of thinking not only results in a better, cheaper,faster (pick 2) product but also teaches junior engineers how to be more efficient by example
I want to be able to make blueprints with complex, but well-defined and documented, input / output structures that I can look at in six months' time and still know how to connect up.
Being able to plop down a block that allows you to enter some text would be nice, though. I'm sure there's mods that do that.
But honestly, if you can't pick up the basics of factorio in a few minutes you're less qualified than the nine-year-olds and sixty-year-olds I've taught programming to. No background in programming or software development at all. That's a very low standard.
And yes, I've used factorio in those lessons as a tool. It's great for teaching refactoring in a visual way with no code at all. I usually set a class homework project involving the factorio demo. It works well.
It's really not that hard to play factorio.
Ok. With all that said and even with all those happy experiences I still wouldn't use factorio for interviews because I think leetcode and similar are also bad approaches. Same with algorithm questions. They're out as well.