Sunday, February 14, 2010

Perl and Java in the Enterprise

(Via Google Buzz)

I'm glad that Perl job openings in the enterprise are trending upwards. But, what does the number of openings really tell us about the comparative penetration of each language? Well, a lot less than you might think.

The big difference is how many developers of language X are needed to support a given set of features. And, as every good Perl developer knows, Perl requires a lot less developers than Java.

A LOT LESS.

In the past, I was a Perl contractor for some of the largest Fortune 500 companies in the world. Every one of these companies had significant investment in both Perl and Java. A few times, I saw a given application developed in Perl, then reimplemented in Java. I distinctly remember two specific cases where this happened.

Both cases followed the same pattern. First, the Perl app was developed part-time by 2-3 developers over a couple weeks and supported by them in their "spare time" - in addition to their fulltime responsibilities. Management found out about the app and, in both cases, ordered it reimplemented in Java. Six months later, the group 20+ developers and 2-3 project managers released their first version. Unusably buggy, it had less than half the features than the prototype app in Perl. After another year (roughly 40 man-years sunk), the users in both cases got the original app up and running via back-channels and went about their work. In one case, management supported the Perl app. In the other, I think the Java app is still up and running. Maybe (6+ years later), it's finally where the original prototype was. Probably not.

The point is that a team of 3-5 Perl developers can do more than 30 Java developers. 10:1 sounds about right. Perl has already penetrated the enterprise. Frankly, the enterprise cannot exist without Perl. The enterprise just doesn't need as many Perl developers to do the same work. Think about that.

7 comments:

  1. And the immediate question is why would management want to reimplement it in Java? Once we know the answer to that we might be able to change that and make them accept the Perl solution and even want them to implement things in Perl.

    ReplyDelete
  2. Because they wanted it written in a "real, industry-standard programming language with exceptional OO features, not some weird scripting language"? I actually heard that crap (although it was about Python, not Perl). Fortunately I don't work for that guy anymore.

    ReplyDelete
  3. I just rewrote some piece of C used for importing data into a HR app in perl for a fortune 500 company. It went live in January and we I had five change requests since, each about 2h of work from start to production. The C stuff would have been a day each. The app converts fixed size ascii records from one format to another with some SQL lookups thrown in. Perl is just too good at such stuff.

    ReplyDelete
  4. Great points, although they should be viewed more contextually and less as a universal truism. The rule should always be "use the best tool for the job". Perl is a kick-butt swiss army knife for sure, but it isn't the best choice for *everything*. A lot of things, but not *everything*. Sometimes another language, like Java, is the better choice. I have been writing Perl and Java for a living for the past 12 years and I wouldn't use either for everything.

    10x throughput is probably more of an artifact of bad developers than a "Java sucks" problem. Lots of new developers want to code in Java and lots of businesses want their code written in Java just as you said. It may be the "Why hire a few excellent developers when we can hire lots of cheaper ones" mentality. Or that the *average* skill level of a professional perl developer is higher. There are a lot of novice Java developers to pull that average down, heh. It wouldn't take 10x the time to implement most anything in Java. Depending on the project, it could even be done faster and better in Java. In any case, sounds like the company you are speaking of wasn't very wise.

    Anyone that wants to swear that one is *always* better and that the other is *always* a horrible choice is probably a bit biased by their own experience and skillset. They are both excellent and they both suck...it's all context ;) Don't shoot me...I love Perl, I promise! But I know that Java kicks butt too.

    ReplyDelete
  5. It was very interesting point, i think you are taking about hire java developers in India, professionals for permanent or temporary staffing, experienced in executing assignments in offshore service model.

    ReplyDelete
  6. Nice website with good information and I am pleased to have read some of them on your blog.
    web design company

    ReplyDelete
  7. Ofcourse, Java has its advancements in all industries it work.U have shared a lot of interesting and valuable points on them.
    Shopping Cart Software

    ReplyDelete