Recently I’ve noticed an interesting phenomenon. Someone starts talking about a new idea or group or practice or strategy or improvement, and someone else says, “hey, I thought of that six months ago, but no one seemed to think that it was a good idea.”
In the past I read about the value of something being a function of the quality of the idea and the quality of execution. This makes a lot of sense to me. You can have the greatest idea in the whole world, but without effort and execution, there is no value. Even a medium quality idea done moderately well is useful.
I have about five hundred ideas right now. Some of them are pretty good, some are a little questionable, some old, some recent. Unfortunately, I am currently making $0.00 (that exchanges to 0.00 Euros) off of those ideas. That’s $0.00 worth of value that has been created by these written down ideas. They certainly give me a sense of excitement when I look at them, so I guess they’re worth something. I look back in fond admiration, and still think they’re pretty good. Hmm… maybe I’m attached. :)
But like the day when I sadly realized that I could never know everything there was to know, I have come to accept the idea that I will never have the time or energy to implement every idea that I have, even if (or perhaps, especially if) they are all five-star ideas. It wasn’t easy to accept.
Steve Yegge realized one day that he only had so many projects left in his life. He writes really long posts, so I’ll give a short quote from Rich Programmer Food, which is about why knowing about compilers is good for you:
Unfortunately, writing a compiler creates a living thing. I didn’t realize this going into it. I wasn’t asking for a baby. It was a complete surprise to me, after 20-odd years of industry experience, that even writing a simple interpreter would produce a lifetime of work.
I credit the phrase “a lifetime of work” to Bob Jervis, a friend of mine who happens to be the original author of Turbo C (with which I myself learned to program), and a damn good, even world-class compiler writer.
He gave a tech talk recently (Google does that a LOT) in which he pointed out that even just the set of features the audience had asked for was a lifetime of work.
This phrasing resonated deeply with me. It was similar to my realization about 18 months back that I only have a small finite number of 5-year projects left, and I have to start choosing them very carefully. After writing my own “production interpreter”, I realized that the work remaining was unbounded.
I mean it. Unbounded.
So from one perspective, I suppose I should just release what I’ve got and start marketing it, so other people will jump on board and start helping out. On the other hand, I started this particular side-project not to create a lifetime of work for myself (far from it), but to make sure I knew enough about compilers to be able to rant semi-intelligently about them, after a few glasses of wine, to a quarter million readers.
Sometimes ideas are ahead of their time by a couple of weeks or a couple of years. Sometimes they just aren’t expressed in the right way to the right people the first time. But you can’t give up if you believe in the idea. And it’s a lot easier to get traction for something when you start working on it.
What I’m trying to say here is that seeing a solution to a problem is not going to make a difference in the world. Applying your efforts and making your voice heard to make that solution a reality can. And even if you don’t succeed, if you’re smart you will learn how to do it better next time, and you may find something more valuable along the way.