in reply to Helpers Vs. Hurters

If the routines are good and well documented, I refuse to worry about whether new programmers will lean on them. Consider a few examples: Perhaps you can see where I'm headed. Over time, we tend to raise the level of our efforts. This leads to current complaints like: If we use a data modeler like Class::DBI (or one of its cousins) no one will know sql. There are three groups of people after such a shift:
  1. The ones who are able to work on the abstraction.
  2. The ones who can use the underlying tool without the abstraction, but don't understand the magic of the abstraction itself.
  3. The ones who rely on the abstraction.
Whether anyone needs to be in the second group is really what the debate is about. I would argue that if the abstraction is useful enough and the implementation of it is documented well enough, it doesn't matter whether anyone is currently in group 2. Smart people will be able to migrate through group 2 and into group 1 when the need arises.

This discussion reminds me of the original Star Trek where Gene Rodenberry (probably misspelled) worried several times about societies which developed such successful technology that generations went by when no one needed to work on it. Then, inevitably, it began to fail and the society was on the brink of dying out because no one could fix it.

That plot is not particularly compelling to me. No technology gets to that point unless it is no longer used. As long as someone in your shop is maintaining your abstractions, work on them can continue. If they are internally documented, others will be able to step in when the maintainers leave the company. In the mean time, everyone else works much faster.

If the Perl community suddenly needed me to step up as the maintainer of hashes, I would have a lot of catching up to do. Similarly, colleagues would have some catching up to do, if they suddenly needed to work on the abstractions I maintain in our shop. I don't seem to loose much sleep over either of these situations. Mean while the abstractions in question save a lot of time.

Phil