As the well-known Brian W. Kernighan quote goes, Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

Therefore if you find that you're having trouble using all of the features that you want to use, that is a sign of real trouble lurking ahead. If you're having trouble just figuring out how to make the code work, then you're going to have little left over to spend on considering how to make your intentions obvious to the maintainance programmer, or considering whether the feature makes sense in this place.

As I pointed out in The path to mastery, I consider it more important to learn how to use features well than it is to pack as many features as possible into code.

That said, advanced features have a definite place. But they come with a cost. Part of the cost you've already mentioned, you require more skill from your maintainance programmer. You can get better productivity for that effort though.

Personally I think that it is valuable to clearly define what skills you think a maintainance programmer should have. Then stick within that skillset, and also actively verify that others in your environment have those skills, and agree with you that those skills are not too much (or too little!) to ask for. I've done this in the past with some success. It is not that some features were "too advanced" to use. It was that I decided what mix of advanced features I'd make sure that people could support, and then I'd stick within that set.


In reply to Re: "advanced" Perl functions and maintainability by tilly
in thread "advanced" Perl functions and maintainability by geektron

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.