If it ain’t broke, it must need improving

A Facebook acquaintance of mine posted a link to this article over at Software Engineering Tips – “Signs That You’re a Good Programmer.” Two of my favorite qualities were:

  • Eager to fix what isn’t broken
  • A destructive pursuit of perfection

The others are really good, too – as a former programmer now forever behind the technology curve, I can bear glowing witness that when you’re in the groove, this article describes to a “T” what it’s like to be a programmer. And it has ever been so. I first discovered this little gem back in 1980 while working at the State of Washington’s OFM, but it’s still every bit as valid today (except, perhaps, the part about the 80-column cards!)

Ode to a Programmer

“No program is perfect,”
they said with a shrug.
“The client is happy –
what’s one little bug?”

But he was determined;
The others went home.
He dug out the flowcharts,
Deserted, alone.

Night passed into morning,
The room became cluttered
With core-dumps and punch-cards.
“I’m close,” he muttered.

Chain-smoking, cold coffee,
Logic, deduction,
“I’ve got it!” her cried,
“Just change one instruction!”

Then change two, then three more,
As year followed year,
And strangers would comment,
“Is that guy still here?”

He died at the console
Of hunger and thirst.
Next day he was buried
Face down, 9-edge first.

And his wife, through her tears,
Accepting his fate,
Said, “He’s not really gone,

Programmers are engineers – they work with code and numbers and concepts instead of wrenches and solder and lathes, but they belong to the same breed. Suggest to an engineer that something needs to be repaired, and they won’t rest until it’s done. Dare to suggest that it might be improved, and you have won their heart forever:

Repaired Improved

Girl Genius by Phil and Kaja Foglio

And many of these people are sheer geniuses. I know a guy down in Australia who can take a paper clip, six gum wrappers and a hank of jute and create a street racer or an oil-cooled computer (yes, I’m looking at you, Steam Wolf). MacGyver was an engineer.

To all the programming widows and widowers languishing at home, you have my sympathies – but that’s just who these people are.

The Old Wolf has spoken.

How Software Companies Die

Almost 20 years on from when this was originally written by Orson Scott Card – one of my favorite writers, for what it’s worth – the hackneyed stereotype of programmers and hackers as brilliant but maladjusted Asperger-types persists… largely because there remains an element of truth in it, witness the smashing success of “Big Bang Theory.”

However, what remains true without question is how management and marketing continues to operate in the 21st century. Here then, for your gratuitous enjoyment, is a reprint from the March, 1995 issue of “Windows Sources.”

How Software Companies Die

By: Orson Scott Card

The 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. They’ve never jousted with Windows or gone hand to hand with DOS. 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.

OldWolf(Spoken) = 1;