Hacker News new | ask | show | jobs
by michael_nielsen 4194 days ago
Chaim Gingold has a great essay that expands on related ideas, at http://www.levitylab.com/blog/2011/01/catastrophic-prototypi...

In particular, the following remarks from Gingold's essay complement the OP well: "My hard drive was full of failures. Twelve years after learning to program, I looked back on all my software: none of it was finished, and what was, wasn’t ambitious enough. The projects that started out ambitiously always seemed to fall back to earth, like failed rockets lacking the power to propel their own weight into orbit. Sure, there were interesting ideas in there, lots of wacky toys, and I had even attempted a few large projects, but none of them ever came together like the cool games and software I had always admired.

Sure, I had become a pretty good programmer, and learned to make cool stuff, but clearly none of it would ever amount to anything. I just didn’t have what it took.

I went to graduate school at Georgia Tech, and read some Chris Crawford. I learned that he had the same problem. But he didn’t think of it as failure. For him, this was an organic part of the development process. The failures filling his hard drive were actually “prototypes” that helped him decide which ideas were worth pursuing. For each good idea, there were a large number of stupid ones that didn’t work out. Failing, for this successful designer, was a way to find the good ideas. The revelation hit me like a ton of bricks. Maybe I had a chance after all... Master artists like Escher or Van Gogh don’t just sit down and crank out a finished piece. Artists create numerous sketches and studies before they undertake finished paintings, let alone masterpieces... All of my software failures, which I was now thinking about as prototypes, sketches, and studies, had taught me a thing or two about design and programming. If you want to learn to draw, you have to make a ton of bad drawings first. The difference between practice and failure is simply a matter of attitude."

These ideas are, of course, not new, but Gingold has thought about them deeply and distilled them sharply. The essay as a whole goes much further than the above excerpt, and is well worth reading.

2 comments

Oh yeah. "The difference between practice and failure is simply a matter of attitude." Nothing is more true.

I recently pulled out some code from over 20 years ago, an experiment in mixing fuzzy logic and Conway's Life that... didn't exactly work out. But it had some intriguing results. Was it a "failure"? Not in the least: it produced results that were intriguing enough for me to remember two decades later, even though it never "came to anything" in the meantime.

That said, I do like the word "failure", and I'm happy to say, "My hard drive is full of failures!" It just sounds better than "practice" and it challenges anyone I say it to. What can they say in reply?

The world is full of little people desperately attempting to tear you down. When you say, "My hard drive is full of failures" they have nothing to come back with. They know you've actually done something, which is more than they have. So go forth and embrace your failures. They prove you're alive, and doing something interesting with your life.

My attitude is in part informed by this quote: "One word characterized the most strenuous of the efforts for the advancement of science that I have made perseveringly during fifty-five years; that word is FAILURE" -- Sir William Thomson. If Lord Kelvin can fail, so can I, damnit!

One of my favorite quotes: "Success is the process of going from failure to failure without loss of enthusiasm." I like it because it highlights that failure is a point event, while success is a process, a trajectory. So comparing the two is fallacious. It is possible for both to coexist.
I found the OP to be disquieting, and your link even more so. I haven't written that many distinct programs in my life, and I never did well in programming contests with tight time limits. I tend to agonize when I program, hitting a conceptual wall after every few hours that I'm unwilling to just hack my way through. Usually I go away for a day or month before coming back to continue for a few more hours, until I hit my next wall. I enjoy building a few familiar things over and over again -- the game of life, RSS readers, chessboard apps, more recently lisp interpreters -- but by and large I am bored by doing things that have been done before. I'm constantly trying to run before I can walk. Maybe this habit/cadence is fundamentally limiting my pace of improvement? After all, I started programming late in life, and I've only been programming 18 years or so (compared to the 12 at the start of the Gingold essay). Maybe I still have a lot to learn, and I should try to do more, faster? Focus less on truly hard problems and more on mastering skills?

But I think your link also helps me understand my strengths (and rationalize away my weaknesses :) All its examples are from games, which are by definition a short-lived genre of program with a constant churn of rewrite and reimplementation in a hit-driven business. I tend to obsess about system software, where code tends to accumulate slowly and huge swathes are never rewritten. In my domain it isn't being able to write software that's key, but being able to read other people's code. That's what I struggle with, and it's at least not obvious that these articles' approach helps with getting better at reading.

I return to the first paragraph of the OP: programming is too broad a field. I suspect we think of it as a field only because it's so incredibly young. It's quickly flowering into a foundational skill, on par with reading and writing (perhaps replacing 'rithmetic?) It's not a single domain, but all domains, each with its own subtly different emphasis on core skills, preferred paths of improvement, and likely failure modes. These articles aren't as comprehensive as I had first feared.

(I realize I'm not actually rebutting anything the articles said. Both are valuable and I'll continue to mull them. I'm just airing insecurity here.)