I've always make the analogy that Programming is a craft, like Blacksmithing or Carpentry. A craft is somewhere between an art and a science. It has both subjective and objective parts. If it were a science we would already have written a program to do it and if it were an art all solutions would be equally good.
Because it is a craft, the entry requirements for Programming are a lot lower than those of a science. (Any fool can try to build a dresser, but you need years of specialized training to even consider gene-splicing). Combine this with the extremely low cost of raw materials for Programming and you have the grounds for millions of amateur programmers.
But, as a craft there is a huge gap between bad, competent and masterful. The difference in quality, reliability and beauty between the dresser I build and the dresser that Norm Abrams (of This Old House fame) builds will be staggering. It is the same with code. My code (I have formal and informal training and 20 years of experience) is likely to bhe infinately more reliable, elegant, and robust then the guy who just finished '21 days to Perl Programming'.
Or, even the guy who just got his degree in comp. sci., because a craft takes years of practice with a wide variety of projects and continuous exposure to new problems, new tools, and new environments. It cannot be learned in a classroom, it is not a matter of memorization. Good dressers come from years of training and practice. Good code is the same.
That is why most crafts developed with an apprentice system. To train tomorrow's smiths, you started today. With young people willing (or forced) to spend years learning the craft through application and experience not just through lecturing and memorization. And, to finally come to a point, that is what is missing from the craft of Programming, the apprentice stage. A company wouldn't hire an apprentice Carpenter for an important project, it shouldn't hire an apprentice programmer- for the lead roles. A master programmer with apprentice programmers under her is what is needed. But, here is the rub. A company usually doesn't have the means to separate the apprentices from the masters. Resumes and interviews can be faked. Skill sets and experiences can be enhanced, failures and shortcomings can be glossed over.
So how do we fix it? The same way the over crafts did. certification. Real certification, based on both knowledge and experience. And not in a specific technology, in a wide range of technologies. Something in an Apprentice, Journeyman, Master vein. And make the certifications mean something. 1 in 10000 programmers might be a Master. Companies with sense can hire using these criteria, and get what they pay for, and a schmuck with a few books under his belt can't pass himself off as a master programmer.
Boy did I ramble,

-pete
"Worry is like a rocking chair. It gives you something to do, but it doesn't get you anywhere."

In reply to Re: The future of software design by dreadpiratepeter
in thread The future of software design by bprew

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.