I don't know to what degree this qualifies a meditation, however, it is something that I have been pondering for a considerable amount of time now, and it is something that I wanted to ask of the perlmonks community.

I find myself in a very interesting situation at this particular point and time in my life. I have spent a great many years in the trenches, coding, debugging, profiling, designing... and I have discovered what my favorite tools as a programmer are. I have discovered the methodologies by which I enjoy programming the most, as well as the languages and enviroments which caused me to be more productive, as well as happier. However, I realize that I have been blessed, and that the people I have had the good fortune of working with, were not representative of the programming community, and did not need the "crutches" that other enviroments present. Professionally, at my last job, I had a small team of programmers working under me... I had total faith in this team, and I knew that they were amazingly talented, so I had no problems giving them more than enough rope to hang themselves with... so of course, we wrote everything in perl.

The productivity my programmers had, thanks to perl, is of course amazing. The sense of happyness that they had, by working in such a great enviroment, was of course itself great. And they communicated, and spoke, and shared their designs, and interactions... and the objects talked to each other, and the modules communicate perfectly, and all of the tools worked exactly as I would have wanted them to.<br.

During this time, however, my attitude changed slightly. I began to see that the very power which perl gave you, the flexibility and expressability that it created, would also be it's biggest downfall. In an environment with only 5 programmers, the communicational heirarchy was small enough that it was trivial to ask about the subtelties of object interactions, aspects of instantiation and parameter passing, etc... In such a small team, the very large software engineering issues, which can be encountered, were manageble, despite of a language that realistically, gives very little restriction and form to the programmer. TMTOWTDI. that was the mantra... and i have reached a stage in my professional life, where I fear it.

I find myself the VP of Strategy and Technology at a firm, and I have been charged with developing and designing the software engineering plans, methodologies, and platforms that we will use, and build a software services firm around. And, for a series of reasons, I am having a very hard time finding a way, any way, to use perl as our main development platform.

If you chose other platforms, something like java for example, you have a great many choices for middleware application servers. From a blue martini to an enhydra, there are standardized platforms you can utilize. If you want a software design methodology, you can shoot for something as simple as the Java Servlet Specification, and try to be J2EE compliant. The language gives you compile type checking, strictness, and enforces a software engineering methodology (OO) that will alow for large firms to be able to communicate and guarantee their software processes. that is of course not to say that java is a panacea... but an example... let us not look at this meditation as a religious war...

In a perfect world, I would be able to reach down into the pools of developers that exist, and pluck out any developer intelligent enough to read the pod of an object, interact the subtleties of a hash or a hashref... intelligent enough to go to CPAN, and use POD, and know that you CAN put whitespace in regexps to make them readable by a human. However, this is not a real world, and I am not so sure that the "average" developer, can be trusted with this much flexibility, in an enviroment where he is just working as a small piece of a very large puzzle... where he may not even see the entire picture.

So my meditation becomes... are there any "trully large" perl shops? Shops where 100k line programs, with thousands of objects, and thousands of interactors are written in perl? Are there application servers that provide a complete framework for me to utilize in perl? Are there software engineering practices that would make an 80 man software team using perl a viable, fruitful, and productive team... that was able to produce fault tolerant, secure, and powerful applications?

This language, my favorite language, has shown me so much power and beauty, yet I fear that I will have to desert it for a stricter world... show me the way, tell me how you have dealt with it... tell me how 100 person perl teams function, where the caveats are, and how I convince myself that this is the right way to go.

Thank you, and here's to hoping that we find a way.


In reply to why i may have to leave perl... by eduardo

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.