in reply to Re: Reinvent the wheel!
in thread Reinvent the wheel!

To me, the most important point of your post is

And, finally, I am in the process of comparing my results and code with File::Find. I certainly appreciate File::Find more than I did two weeks ago.

Reinventing the wheel by going in a random direction can cause extremely bad habits. Taking your version and comparing it with a working version helps to moderate that effect.

Unlike some of the advice here, I think this is a valid and very effective approach to learning, as long as you don't forget the production wheels that you can learn from. You also have the opportunity to rewrite your code after the comparison to see if you really learned what you believe you learned from File::Find.

As professional programmers, it's easy to lose track of the need to practice. Rewriting code that is not needed for production can help you learn and help keep your basic coding skills from getting rusty.

It also helps to remind us of the sense of accomplishment that we used to get from making something small with our own two hands. When working on big production systems with multiple programmers and man-decades of work, it's hard to remember the simple pleasure of making the computer do something for me, as opposed to keeping the system up and functional.

Good luck in your explorations and don't forget to share your experiences with your fellow monks.

G. Wade

Replies are listed 'Best First'.
Re^3: Reinvent the wheel!
by chromatic (Archbishop) on Mar 23, 2009 at 19:22 UTC
    Rewriting code that is not needed for production can help you learn and help keep your basic coding skills from getting rusty.

    What are you doing with production code that it does not exercise your basic coding skills?

      In my experience, the needs of a production system often tend towards minimal changes to keep things running. I've known many people who eventually reach a point where they don't really program as much as they serve the system.

      This can involve extreme knowledge of the various libraries and configurations needed by the production system, and a loss of basic programming ability. (In some cases, this can be so extreme that they can no longer write a standalone program.

      This may very well be a function of my particular career experience.

      I find that working outside production environments allows me to exercise a different set of programming muscles. This also allows me to try things that might fail where the risk is lower.

      I find this kind of programming practice both a good exercise and a good way to learn new things. It also helps me re-examine basic assumptions once in a while to keep them from solidifying into personal dogma.

      I have also used reinventing the wheel, on purpose as a kind of Kata to practice approaching problems from a new direction.

      G. Wade
        In my experience, the needs of a production system often tend towards minimal changes to keep things running.

        Now I see our mismatch.

        I try to get my projects into production as soon as possible, providing the most essential, most minimal features possible to be useful to customers. From there, I prefer rapid iterative development guided by prioritized requests and feedback.

        It sounds like your production code isn't under active development, but rather minimal maintenance. I can see how you'd find that rather underchallenging.