Progress and learning is like a cone, where you start the narrow bit and move towards the wide bit.
At the narrow bit your scope is narrow, you know very little and your goals are simple and attainable. As time goes on you move out through the widening cone, and you see and know more, but the problems become broader along with your goals. After a while the things you do in the narrow bit get a little older and more familiar. This is progress.
This kind of progress is called experience, and when the narrow bit gets more and more solid, it becomes wisdom. Wisdom is a property of our metal capacity. Other domains of truth and information don’t have wisdom, because they don’t mature.
In programming, things like l-values and peices of code in general can’t have wisdom, but a source code project does. Troy pointed out that we rely on a foundation of strong and mature tools, and he called it the “warm fuzzy center”. The farther you move away from the warm fuzzy center, the more confusing and less stable things get. For me, the GNU tools and the UNIX philosophy are my warm fuzzy center.
The funny thing about the cone of wisdom is that it never ends, and it is never complete. You can solidify the narrow bit to the point that it needs to mature no more, but then all you have to do is zoom out a click and the cone appears as it did before, with a warm fuzzy narrow bit and a confusing and compelling wide bit.
When a person approaches a problem all they see and know is where they are, and where they want to go. This makes it really easy to naively push on the problem with the goal in mind, which is the same as trying to make the cone into a one-dimentional line that you follow to walk from an origin to a destination.
The truth is that you have to “walk the cone of wisdom.” This means that you have to expect to encounter unexpected obstacles, and you have to understand that you don’t know what you are going to have to know. Don’t fake it, don’t assume you can do something just because you know it is possible.
Somewhere along the way I missed the fact that you have to walk the cone, and I always tried to bypass the process. I thought I could write the pksampler because I knew it was possible, and I thought that I could put in the hours and walk the linear path to success, but I was wrong. The cone has made it so it’s not a matter of effort, it’s a matter of wisdom, which is not directly proportional to effort.
Just as the area of the cone increases exponentially, so does the uncertainty of the learnign process I have followed to be able to write the sampler. I had no idea that one day, after much trial and tribulation, I was going to be able to write the sampler in a day, because I understand the problem domain so well that producing the product is that easy. What a world.