Darel Rex Finley in PhotoBooth

Code Is Our Friend

2007.07.10   prev     next

Rich Skrenta’s “Code Is Our Enemy” made some excellent points. But now, my take from the flip side! (This isn’t a tit-for-tat of his article; it’s just my general thoughts on the subject.)

What New Code Is

New code isn’t any more “brittle” than old code. All code is inherently brittle, in that one tiny change can break it. And more code isn’t more brittle than less code — unless the memory of your computer is subject to random, mutational attack or something crazy like that. (Still using vacuum tube memory? Time for an upgrade.)

New code doesn’t increase compile times — once it’s compiled, any decent compiler will leave it alone until (and unless) you change it. And besides, just how achingly long are compile times these days? Computer power has been increasing much faster than the human ability to write code, and will only continue to do so in the years to come.

No matter how well-commented and well-organized, no one but you (the author of your new code) will understand it quite as well as you did when you created it. That’s because you typed every line and had to think carefully about what every line does as you wrote it. No one else has done that. But that’s not a flaw of new code; that’s a property of all code. Which is better — code you intimately understand, or code you don’t (and probably can’t even examine)? The apparent simplicity of using someone else’s compiled code is an illusion created by the fact that you never see their sourcecode — just a few little calls to it in your code.

New code doesn’t have to be “maintained.” Once it’s working correctly, it just keeps working correctly. It doesn’t need an oil change every 3,000 miles or anything like that. New code does, of course, increase the percentage of your project’s sourcecode that is under your control — but so what? If you don’t want the burden of safely changing that new code someday in the future, then just don’t change it! If it was a precompiled module written by some other party, you wouldn’t be able to change it either. Is it somehow better not to have the option? Remember, the alternative to your code is not mystic, code-free, gremlin-driven solutions from hyperspace. It’s just someone else’s code.

Make It Happen

New code lets you do things that other people haven’t imagined yet. There are definite limits to what you can accomplish by wiring together pieces of code other people have already written. Really magical things happen when you write new code that does something really new, or does something in a new way that’s a better solution to the problem at hand.

Don’t think that your new code is supposed to be some kind of general-purpose library. It probably isn’t. It’s supposed to make something happen on people’s computers that hasn’t happened before. Something sweet. Many educators would have you believe that the most important thing your code can do is to enable other coders by providing them with a library of functionality. But enable them to do what — write more libraries? That help still other coders write libraries? Enough already — write some code that does something cool. Doom wasn’t a code library; it was just a kick-ass hunk of new code! Educators want you to think that coding is about enabling other coders because that’s what they do. Doom wasn’t written by educators.

Practice Makes Perfect

Writing new code makes you better at writing code. The more code you write (particularly on the same project and/or in the same development environment), the better you become at writing it. The fewer mistakes you make. The more easily you detect and correct mistakes when you do make them. Avoiding writing code, for avoidance’s sake, is like trying to improve your tennis game by hiring someone else to play in your place. If you can do that indefinitely, great — and congrats on your new career in management.

- - - - -

 

Hear, hear

prev     next

Favorite links

Starbucks

Apple

Daring Fireball

RoughlyDrafted

Joel on Software

Macalope

Red Meat

Despair, Inc.

Zombie Survival Guide plus Dawn of the Dead (also check out HVZ)

Charlie Superfly Check “The First Time” to hear what she actually sang in the competition. HowardTV ripped it out and spliced in utter crap they had her sing later.

Real Solution #9 (Mambo Mania Mix) over stock nuke tests.

Ernie & Bert In Casino

Great Explanation of Star Wars

TV: Work Out; Confessions of A Matchmaker; Cavemen; Damages; The Shield

My vote for best commercial ever: Royal Bank of Scotland Group — wedding where groom says “Who among us will ever know?” I can’t find it on YouTube — anyone know where it might be?

Previous articles

Behavior and Free Will, Unconfused

“Reduced To” Absurdum

Suzie and Bubba Redneck — the Carriers of Intelligence

Everything You Need To Know About Haldane’s Dilemma

Darwin + Hitler = Baloney

Meta-ware

Designed For Combat

Speed Racer R Us

Bold — Uh-huh

Conscious of Consciousness

Future Perfect

Where Real and Yahoo Went Wrong

The Purpose of Surface

Eradicating Religion Won’t Eradicate War

Documentation Overkill

A Tale of Two Movies

The Changing Face of Sam Adams

Dinesh D’Souza On ID

Why Quintic (and Higher) Polynomials Have No Algebraic Solution

Translation of Paul Graham’s Footnote To Plain English

What Happened To Moore’s Law?

Goldston On ID

The End of Martial Law

The Two Faces of Evolution

A Fine Recommendation

Free Will and Population Statistics

Dennett/D’Souza Debate — D’Souza

Dennett/D’Souza Debate — Dennett

The Non-Euclidean Geometry That Wasn’t There

Defective Attitude Towards Suburbia

The Twin Deficit Phantoms

Sleep Sync and Vertical Hold

More FUD In Your Eye

The Myth of Rubbernecking

Keeping Intelligent Design Honest

Failure of the Amiga — Not Just Mismanagement

Maxwell’s Honey Do?

End Unsecured Debt

The Digits of Pi Cannot Be Sequentially Generated By A Computer Program

Faster Is Better

Goals Can’t Be Avoided

Propped-Up Products

Ignoring ID Won’t Work

The Crabs and the Bucket

Communism As A Side Effect of the Transition To Capitalism

Google and Wikipedia, Revisited

National Geographic’s Obesity BS

Cavemen

Theodicy Is For Losers

Seattle Redux

Quitting

Living Well

A Memory of Gateway

Is Apple’s Font Rendering Really Non-Pixel-Aware?

Humans Are Complexity, Not Choice

A Subtle Shift

Moralism — The Emperor’s New Success

Code Is Our Friend

The Edge of Religion

The Dark Side of Pixel-Aware Font Rendering

The Futility of DVD Encryption

ID Isn’t About Size or Speed

Blood-Curdling Screams

ID Venn Diagram

Rich and Good-Looking? Why Libertarianism Goes Nowhere

FUV — Fear, Uncertainty, and Vista

Malware Isn’t About Total Control

Howard = Second Coming?

Doomsday? Or Just Another Sunday

The Real Function of Wikipedia In A Google World

Objective-C Philosophy

Clarity From Cisco

2007 Macworld Keynote Prediction

FUZ — Fear, Uncertainty, and Zune

No Fear — The Most Important Thing About Intelligent Design

How About A Rational Theodicy

Napster and the Subscription Model

Intelligent Design — Introduction

The One Feature I Want To See In Apple’s Safari