American vs Soviet coding: Max Levchin brings back memories of my own youth
...Or at least the youth of my business career.
Yesterday at Pando Monthly, Max Levchin detailed how he learned to program in the Soviet Union -- and while the story might sound absurd to American ears I can vouch for the fact that that was the way that much worked there at the time.
It would be years before Levchin would have access to a computer again. “The vast majority of programming I did, I was… working on [paper] notepads. I would write programs that would span [multiple] notepads. I wrote a clone of Tetris, a clone of snake,” Levchin said.
“I have no idea if they were good because I was not able to actually run them.”
All of his early programming efforts used machine code, not BASIC or anything similar. Mark Ames and Yasha Levine are usually thought of as the Former Soviet Union experts around here at Pando but I spent most of the 90s working out in Moscow too. And more specifically, I was working on software programming for much of that time.
To be clear, I myself know absolutely nothing at all about code and was entirely and solely a capitalist exploiter out to pay as little as possible and get paid as much as I could wrangle. But it was obvious that there were great coders available at what were for the time piffling amounts of money in the West. Someone, somewhere, should be trying to arbitrage that opportunity and it turned out that I was one of those who did so.
An example of the more trivial end of our work was taking Amiga games and cutting them down for the C64 market. That Commodore market was in something of a transition, the C64 was no longer being sold in any great numbers but there was a decent enough installed base still out there. New games were being written for the Amiga and, given the freedom to innovate that better graphics, faster speeds, more memory offered, no one was really interested in developing for that old installed base. And more importantly, no one really had the skills (or the skills were too expensive) to rewrite the code so that it would run in less than glacial epochs on the older machines.
We had quite a little conveyor belt running at one time, picking up the source code of an imminent Amiga release and coming back with a cut down runtime for the C64 market. It's not the sort of thing that was ever going to make anyone rich but it did provide good livings for a number of us. Including, of course, a number of programmers stuck in the collapsed economy of the FSU.
The work played to all of the local skills: accuracy, conciseness, an almost obsessive concentration on the efficiency of code and, of course, the price that could be paid for these skills. Given the inflation and exchange rates the average Russian wage at the time was well down under $100 a month. We were of course paying multiples of that.
As with any business matters moved on and before the business collapsed (mainly under the weight of my own inadequacies as a manager a quarter century ago) we had done the Windows port of another World, something that most insisted could not actually be done. That remains my only actual credit as a games producer. We also did animations for things like Clayfighter and in other branches of software we once delivered the source code of the KGB's fingerprint matching system to the guys trying to design the one for the FBI. And example, of that code conciseness there as well: the KGB system ran faster on Intel 286s than the FBI one did on MIPS workstations.
All of what we were able to achieve over those years was based on exactly the point that Levchin is making, that the whole Russian approach to coding was to use machine code as much as possible in order to get the greatest grunt out of the hardware available. Which, given what little hardware there was and how incredibly underpowered it was compared to western machines of the same vintage, was the obviously economic decision to make.
I will admit though that the Russian, or Soviet if you prefer, insistence upon rational engineering standards did not always go well. The powers that be realised that they simply weren't able to keep up with American processor development, so a plan was hatched to buy a job lot of 80286 processors and then install them into home grown motherboards so as to kick start computing. At the time chip pins were 1/10th of an inch spaced. But the Soviet Union was rigorously metric and this translates into 0.254 of a cm. Clearly, a ridiculous spacing so the motherboards were manufactured to a rational size, 0.25 cm. This didn't, as you might imagine, work when the chips turned up from Intel.
Last I heard that stash of chips was picked up at $5 a pop for the gold refining possibilities.
[Image credit: Kaiiv (Creative Commons)]