I’m involved right now in a very intensive programming task. As I go along, a part of my mind is monitoring which parts are easy and which parts are turning out to be hard.
And I’m seeing a definite pattern. Programming requires a certain amount of energy minimization. I guess this is true of any task. For example, when your arm reaches out to pick up a glass of water, your brain automatically works out a trajectory that will result in minimum effort and least wasted motion for your body.
When programming, much of this optimizing takes the form of redoing work you’ve already done, because when you first did it you did not yet know what you know now. A lot of what might look like backtracking, is really just necessary retooling.
Sometimes I get impatient, and just forge ahead without taking the time to do all the retooling I should. And that’s often how I get into trouble and hit a dead end.
But that’s also how lucky accidents occasionally happen, and how some interesting new stuff gets invented.
I was just discussing this with my cousin, and he said “That’s how Teflon got invented.”
To which I could only reply: “The path to Teflon did not run smooth.”