ADM Blog

Steve Wozniak wrote BASIC for the Apple computer in binary

“If you wanted to write a computer program like the programs of the Apple II, you would write your program with another computer that would compile the code and turn it into 1s and 0s that my microprocessor could understand. Well, I couldn’t afford this little program called a compiler. You could rent terminals and time-shared computer systems, and pay a certain amount of money per month, and you could actually write your programs. But since I couldn’t afford that, either, I wrote my programs on one side of a piece of paper by hand. Then I wrote the 1s and 0s that they would translate into on the other side, figuring it out from little cards I had about how the microprocessors work. No other project that large has probably ever been done that way. I still have the whole handwritten manual. But that made me very intimate with the code. Every little line mattered a lot, and it was a representation of myself, too. It had to be so perfect that nobody else could have thought of a better way. If I ever thought of any little section of code that had a slightly better way, I would change it and go that way. The lack of money actually helped lead to that because the lack of money forced me to be very intimate with the code I was writing. Then I would have to type the 1s and 0s into my computer. For BASIC, it took me 40 minutes. I’d turn on the power, type it in for 40 minutes, test that there weren’t any errors, and then go on debugging the next section. So it was like, no tools, no money—I did it all myself without tools, and that led to a very noticeable type of skill excellence.”



Life as a programmer

"You know, when you have a program that does something really cool, and you wrote it from scratch, and it took a significant part of your life, you grow fond of it. When it's finished, it feels like some kind of amorphous sculpture that you've created. It has an abstract shape in your head that's completely independent of its actual purpose. Elegant, simple, beautiful. Then, only a year later, after making dozens of pragmatic alterations to suit the people who use it, not only has your Venus-de-Milo lost both arms, she also has a giraffe's head sticking out of her chest and a cherubic penis that squirts colored water into a plastic bucket. The romance has become so painful that each day you struggle with an overwhelming urge to smash the fucking thing to pieces with a hammer." - Nick Foster ("Life as a programmer")


How Software Companies Die

orson-scott-card_03The environment that nurtures creative programmers kills management and marketing types - and vice versa. Programming is the Great Game. It consumes you, body and soul. When you're caught up in it, nothing else matters. When you emerge into daylight, you might well discover that you're a hundred pounds overweight, your underwear is older than the average first grader, and judging from the number of pizza boxes lying around, it must be spring already. But you don't care, because your program runs, and the code is fast and clever and tight. You won.

You're aware that some people think you're a nerd. So what? They're not players. To them C++ is a decent grade, almost a B - not a language. They barely exist. Like soldiers or artists, you don't care about the opinions of civilians. You're building something intricate and fine. They'll never understand it.


Here's the secret that every successful software company is based on: You can domesticate programmers the way beekeepers tame bees. You can't exactly communicate with them, but you can get them to swarm in one place and when they're not looking, you can carry off the honey.

You keep these bees from stinging by paying them money. More money than they know what to do with. But that's less than you might think. You see, all these programmers keep hearing their fathers' voices in their heads saying "When are you going to join the real world?" All you have to pay them is enough money that they can answer (also in their heads) "Geez, Dad, I'm making more than you." On average, this is cheap.

And you get them to stay in the hive by giving them other coders to swarm with. The only person whose praise matters is another programmer. Less-talented programmers will idolize them; evenly matched ones will challenge and goad one another; and if you want to get a good swarm, you make sure that you have at least one certified genius coder that they can all look up to, even if he glances at other people's code only long enough to sneer at it.

He's a Player, thinks the junior programmer. He looked at my code. That is enough. If a software company provides such a hive, the coders will give up sleep, love, health, and clean laundry, while the company keeps the bulk of the money.


Here's the problem that ends up killing company after company. All successful software companies had, as their dominant personality, a leader who nurtured programmers. But no company can keep such a leader forever. Either he cashes out, or he brings in management types who end up driving him out, or he changes and becomes a management type himself. One way or another, marketers get control.

But...control of what? Instead of finding assembly lines of productive workers, they quickly discover that their product is produced by utterly unpredictable, uncooperative, disobedient, and worst of all, unattractive people who resist all attempts at management. Put them on a time clock, dress them in suits, and they become sullen and start sabotaging the product. Worst of all, you can sense that they are making fun of you with every word they say.


The shock is greater for the coder, though. He suddenly finds that alien creatures control his life. Meetings, Schedules, Reports. And now someone demands that he PLAN all his programming and then stick to the plan, never improving, never tweaking, and never, never touching some other team's code. The lousy young programmer who once worshipped him is now his tyrannical boss, a position he got because he played golf with some sphincter in a suit.

The hive has been ruined. The best coders leave. And the marketers, comfortable now because they're surrounded by power neckties and they have things under control, are baffled that each new iteration of their software loses market share as the code bloats and the bugs proliferate. Got to get some better packaging. Yeah, that's it.

Orson Scott Card {Windows Sources, March 1995, p. 208}