I was surprised to discover my co-founderRobin Wardliked TIS-100 so much that he not only played the game (presumably to completion) but wrotea TIS-100 emulator in C. This is apparently the kind of thing he does for fun, in his free time, when hes not already working full time with us programmingDiscourse. Programmers gotta program.
Ill take a COBOL code listing overthatmonstrosity any day of the week. Perhaps Robot Odyssey was so hard because, in the end, it was a bare metal CPU programming simulation, like TIS-100.
This is aseriouslynext level hiring strategy, far beyond anything else Ive seen out there. Its so next level that to be honest, I got really jealous reading about it, becauseIve felt for a long time that Stack Overflow should be doing yearly programming game events exactly like this, with special one-time badges obtainable only by completing certain levels on that particular year. Stack Overflow isalready a sort of game, but people would gonutsfor a yearly programming game event. Absolutelybonkers.
If you want to know how competent a programmer is, give them a real-ish simulation of a real-ish system to hack against and experiment with and see how far they get. In security parlance, this is knownas a CTF, as popularized by Defcon. But its rarely extended to programming, until now. Their first simulation isStockFighter.
You know whats universally regarded as un-fun by most programmers? Writingassembly language code.
Pull off an elaborate HFT trading heist.
[advertisement] At Stack Overflow, we put developers first. We already help you find answers to your tough coding questions; now let us help youfind your next job.
Of course theres a long history of programming games. What makes TIS-100 unique is the way it fetishizes assembly programming, while most programming games take it a bit easier on you by easing you in with general concepts and simpler abstractions. But even simple programming games can be quite difficult. Consider one of my favorites on the Apple II,Rockys Boots, and its sequel, Robot Odyssey.I loved this game, but in true programming fashion it was so difficult thatfinishing it in any meaningful sense was basically impossible:
Well now, by God, its time to learn us some assembly and get to the bottom of this mystery, isnt it? As itscreatornotes,this is the assembly language programming game you never asked for!
An interactive trading blotter interface
Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what Im talking about. Find me here:
Im thinking about this because I believe theres a strong connection between programming games and being a talented software engineer. Its that essential sense ofplay, the idea that youre experimenting with this stuff because you enjoy it, and you bend it to your will out of the sheer joy of creation more than anything else. As Ionce said:
And what if I also told you the only way to figure out what that TIS-100 computer was used for and what good old Uncle Randy was up to was to read a (blessedly short 14 page) photocopied reference manual and fix its corrupted boot sequence using assembly language?
Thats why I was so excited when Patrick, Thomas, and Erin foundedStarfighter.
Implement programmatic trading against a real exchange in a thickly traded market.
A more gentle example of a modern programming game is Tomorrow Corporations excellentHuman Resource Machine.
Logo image © 1993 Steven C. McConnell
As Steve McConnellsaid back in 1994:
A real, functioning set of limit-order-book venues
Id rather sit a potential hire in front of Human Resource Machine and time how long it takes them to work through a few levels thanhave them solve FizzBuzz for meon a whiteboard. Is this interview about demonstrating competency in a certain technical skill thats worth a certain amount of money, or showing me how you canimprovise and have fun?
Thanks For Ruining Another Game Forever, Computers
Let me say: Any kid who completes this game while still a kid (I know only one, who also is one of the smartest programmers Ive ever met) is guaranteed a career as a software engineer. Hell, any adult who can complete this game should go into engineering.Robot Odyssey is the hardest damn educational game ever made.It is also a stunning technical achievement, and one of the most innovative games of the Apple IIe era.
Visionary, absurdly difficult games such as this gain cult followings. It is the game I remember most from my childhood. It is the game I love (and despise) the most, because it was the hardest, the most complex, the most challenging. The world it presented was like being exposed to Platos forms, a secret, nonphysical realm of pure ideas and logic. The challenge of the gameand it was one serious challengewas to understand that other world. Programmer Thomas Foote had just started college when he picked up the game: I swore to myself, he told me, that as God is my witness, I would finish this game before I finished college. I managed to do it, but just barely.
Execute block-shopping trading strategies.
I know weve talked aboutgiving lip service to the idea of hiring the best, but if thatsreallywhat you want to do, the best programmers Ive ever known have excelled at exactly the situation that Starfighter simulates live troubleshooting and reverse engineering of an existing system, even to the point offinding rare exploits.
It has exactly the irreverent sense of humor youd expect from the studio that built World of Goo and Little Inferno, both excellent and highly recommendable games in their own right. If youve ever wanted to find out if someone is truly interested in programming, recommend this game to them and see. It starts with only 2 instructions and slowly widens to include 11. Corporate drudgery has never been so er, fun?
Assembly is a language where, for performance reasons, every individual command is communicated in excruciating low level detail directly to the CPU. As weve gone from fast CPUs, to faster CPUs, to multiple absurdly fast CPU cores on the same die, to gee, we kinda stopped caring about CPU performance altogether five years ago, there hasnt been much need for the kind of hand-tuned performance you get from assembly. Sure, there arethe occasional heroics, and they are amazing, but in terms of Getting Stuff Done, assembly has been well off the radar of mainstream programming for probably twenty years now, and for good reason.
An arbitrary programming game, particularly one that goes to great lengths to simulate a fictional system, is a wonderful expression of the inherent joy inplayingandexperimentingwith code. If I could find them, Id gladly hire a dozen people just like that any day, and set them loose on our very real programming project.
Consider the dedication of this participant who builta complete wireless trading devicefor StockFighter. Was it necessary? Was it practical? No.Its the programming game we never asked for.But here we are, regardless.
So who in their right mind would take up tedious assembly programming today? Yeah, nobody. But wait! What if I told you your Uncle Randy had just died and left behind this mysterious old computer,the TIS-100?
A carefully documented JSON HTTP API, with an API explorer
I was happy dinking around with a few robots that did a few things, got stuck, and moved on to other games. I got a little turned off by the way it treated programming as electrical engineering; messing around with a ton of AND OR and NOT gates was just not my jam. I was alreadycutting my teeth on BASIC by that pointand I sensed a level of mastery was necessary here that I probably didnt have and I wasnt sure I evenwanted.
Coding Horror has been continuously published since 2004
Programmers working with high-level languages achieve better productivity and quality than those working with lower-level languages. Languages such as C++, Java, Smalltalk, and Visual Basic have been credited with improving productivity, reliability, simplicity, and comprehensibility by factors of 5 to 15 over low-level languages such as assembly and C.You save time when you dont need to have an awards ceremony every time a C statement does what its supposed to.
Joel implied that good programmers love programming so much theyd do it forno pay at all. I wont go quite that far, but I will note that the best programmers Ive known have all had alifelong passion for what they do. Theres no way a minor economic blip would ever convince them they should do anything else. No way. No how.
Implement electronic market makers.