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.
This article is really just making an analogy of software using Factorio concepts and reverses any suggestion to using it as an interview in its conclusion
It's not only much weirder, but much less irrelevant.
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.
I only read the first few paragraphs, but I guess they assume that someone has not played the game before? I'm continually surprised at how often we consider something to be domain-general common sense when it is in fact something domain specific that must be learned through experience.
Not only that, I don't go on the docs to find the most optimized design on factorio like I have to do on code. 90% of the fun to me is to arise at those designs by myself.
Jank is fun on your factory, not so much on a company product :)
I love factorio, but it would be a lot harder if it didn't have magic backpressure for everything. Can you imagine all the piles of green chips everywhere if the assembler just kept dumping them until it clogged?
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.
> Can you imagine all the piles of green chips everywhere if the assembler just kept dumping them until it clogged?
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)
> The queue gets full and stops accepting input, and the prior machines stop sending input as a result
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.
Software often has built in back pressure. Most IO syscalls block, TCP surely does, so everything built on TCP does. Belt is memory. The full belt equivalent of software is OOM. If memory allocation can't be done everything comes to a halt. We could write software that instead of crashing just sits there until memory becomes available... It's the human scale circuit breakers (request timeouts) that cause issues. I guess one has to differentiate between batch processing software and interactive request/response style software. Factorio approximates the former, not the latter, but some of the underlying concepts are still the same.
That “magic backpressure” is solved in the real world with simple sensors, shutting down part of the manufacturing line is a relatively common occurrence (maintenance, safety stop, etc) and doesn’t cause the entire system to collapse.
Only if you prefer to program with someone breathing down your neck, with a 15min deadline, and often not being able to research stuff.
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...".
I have no stake in either side of this but I would love to hear you elaborate on this. What makes you more interested in a person that markets themselves behind something that isn't your real face?
Factorio is the game that taught me I am indeed susceptible to addiction. It has a near perfect infinite feedback loop where you're presented with a problem and can solve it quickly, only to immediately find that solution created another problem to solve. Solving problems feels really good.
I love factorio but it’s also an important lesson on the traps of premature optimization and automation.
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.
I mean there is no best, only best for application but imo a really strong senior engineer can identify the problem and build the most efficient minimal framework that gets you to that goal. Understand that getting bogged down in over optimization for a future potential but undefined scenario is not Usally worth the upfront investment.
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
This still brings up one of my bugbears for factorio - the inability to write comments/documentation.
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.
Going all the way through a play of factorio would be kind of a long interview, and there seems to me to be some pretty game-specific knowledge there. But I guess you also learn if the person is a good social fit as well.
Some adults happen to have a life outside of their computer, and thus have little time to video game. Having a life outside of a computer is correlated with things like families and serious & involved hobbies - things people develop well later in life...
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.
what a fucked up assumption that every should understand the game. what if i don't like games. never played one but also never had any issues with calculus. well i can say it's a f** up thing dum people needs gaming to learn maths.
I don't like this.
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.
This method is obviously biased towards people who have already played Factorio, and in a lesser way towards folks who play games.
Maybe that’s similar to the bias toward knowing FizzBuzz, but it’s much weirder?
This article is really just making an analogy of software using Factorio concepts and reverses any suggestion to using it as an interview in its conclusion
It's not only much weirder, but much less irrelevant.
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.
as much as I love the very weird, outside the box approach this is an unfortunate case of what leading epidemiologists term "video game brain"
"You can either submit your Github profile, or your Zachtronics leaderboard."
I bounced hard from Factorio because it feels like work so... sure, it makes sense.
Same here. It's the kind of game that I would love... but I've got tests to write and database calls to optimize.
It feels worse than work, because at least at work I can automate all the manual, tedious stuff away.
I only read the first few paragraphs, but I guess they assume that someone has not played the game before? I'm continually surprised at how often we consider something to be domain-general common sense when it is in fact something domain specific that must be learned through experience.
Not only that, I don't go on the docs to find the most optimized design on factorio like I have to do on code. 90% of the fun to me is to arise at those designs by myself.
Jank is fun on your factory, not so much on a company product :)
I love factorio, but it would be a lot harder if it didn't have magic backpressure for everything. Can you imagine all the piles of green chips everywhere if the assembler just kept dumping them until it clogged?
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.
> Can you imagine all the piles of green chips everywhere if the assembler just kept dumping them until it clogged?
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)
> The queue gets full and stops accepting input, and the prior machines stop sending input as a result
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.
Software often has built in back pressure. Most IO syscalls block, TCP surely does, so everything built on TCP does. Belt is memory. The full belt equivalent of software is OOM. If memory allocation can't be done everything comes to a halt. We could write software that instead of crashing just sits there until memory becomes available... It's the human scale circuit breakers (request timeouts) that cause issues. I guess one has to differentiate between batch processing software and interactive request/response style software. Factorio approximates the former, not the latter, but some of the underlying concepts are still the same.
That “magic backpressure” is solved in the real world with simple sensors, shutting down part of the manufacturing line is a relatively common occurrence (maintenance, safety stop, etc) and doesn’t cause the entire system to collapse.
Well, there is always the Belt Overflow mod [0], but is is truly masochistic.
[0] https://mods.factorio.com/mod/belt-overflow
"magic"? You mean a human shutting down a line when there is a backup on the output?
this interview process is biased against people who hate video games
Programming interviews are biased against people who hate programming
Only if you prefer to program with someone breathing down your neck, with a 15min deadline, and often not being able to research stuff.
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...".
I hate video games and hate factorio but still play a lot of it
get well soon
you first!
I have an even better litmus test. If the candidate has a picture of an anime/furry character as their avatar you can pass.
Ha. I have the opposite reaction.
I have no stake in either side of this but I would love to hear you elaborate on this. What makes you more interested in a person that markets themselves behind something that isn't your real face?
Why would you need to see the candidate's face? To make sure they look like you?
Factorio is the game that taught me I am indeed susceptible to addiction. It has a near perfect infinite feedback loop where you're presented with a problem and can solve it quickly, only to immediately find that solution created another problem to solve. Solving problems feels really good.
As an extension of my non-addictive mindset, I have never touched Factorio in the same way that I have no interest in trying crack.
I love factorio but it’s also an important lesson on the traps of premature optimization and automation.
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.
If Craigslist is the pinnacle, is the best software engineer one who can create the most “impact” per hour of development?
Think Craigslist has several engineers, but it’s really a skeleton crew for the scale of their “impact”
I mean there is no best, only best for application but imo a really strong senior engineer can identify the problem and build the most efficient minimal framework that gets you to that goal. Understand that getting bogged down in over optimization for a future potential but undefined scenario is not Usally worth the upfront investment.
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
This still brings up one of my bugbears for factorio - the inability to write comments/documentation.
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.
It's common to use constant combinators to tell the user what item goes on what input belt/pipe. Blueprints also allow you to provide some text.
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.
It could really do with a simple trick from minecraft: signboards.
Going all the way through a play of factorio would be kind of a long interview, and there seems to me to be some pretty game-specific knowledge there. But I guess you also learn if the person is a good social fit as well.
An interview process designed to exclude anyone who does not video game? Tell me you're ageist without saying those words, I guess?
Atari came out in the late 70s. Lots of us are good, though may need a bit of refresher.
Some adults happen to have a life outside of their computer, and thus have little time to video game. Having a life outside of a computer is correlated with things like families and serious & involved hobbies - things people develop well later in life...
I mean... Yes?
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.
what a fucked up assumption that every should understand the game. what if i don't like games. never played one but also never had any issues with calculus. well i can say it's a f** up thing dum people needs gaming to learn maths.
And how is that different than solving esoteric algorithmic problems?
What a very silly article. But kudos for trying something different. Even if its kind of insane.