I have found a few pearls in here that I
If the advancement of the general art of programming requires the continuing evolution and elaboration of paradigms, advancement of the art of the individual programmer requires that he expands his
repertoryof paradigms. In my own experience of designing difficult algorithms, I find a certain technique most helpful in expanding my own capabilities. After solving a challanging problem, I solve it again from scratch, retracing only the insightof the earlier solution. I repeat this until the solution is as clear and direct as I can hope for. Then I look for a general rule for attacking similar problems, that wouldhave led me to approach the given problem in the most efficient way the first time. Often, such a rule is of permanent value.
I really should take this advice. More often than not I leave a problem after I had solved it for "lack of time". But it makes sense that, in the long run, actively analysing the solving process should be a time saver.