Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Advocacy ammunition: perl vs java at Amazon

by doom (Deacon)
on Aug 08, 2006 at 11:16 UTC ( #566128=perlnews: print w/replies, xml ) Need Help??

I came across some interesting ammunition for perl advocacy written by Steve Yegge. While he isn't particularly a fan of perl (to put it mildly), he is someone who watched Java and perl programmers in action at Amazon for a number of years, and came to the obvious conclusions. It's nothing you haven't heard before, but sometimes it's useful to have it from an "outsider": Is weak typing strong enough? Update: fixed dead link. (Maybe Ted Nelson was right, eh?)

Some quotations (with many sentences ellided, check the original for the full text):

I watched the strong/weak battle play out (in various ways) in Amazon's Customer Service Applications group for years. ...
One thing I observed was that the folks who favored Perl always seemed to be able to get stuff done really, really fast, even compared to experienced Java folks. And they had their act together; it wasn't just crude hackery, as many Java programmers would like to believe. Their code was generally very well organized, and when it wasn't, they'd go in periodically and fix it. Sometimes they did quick, hacky scripts, and in fact the ability to do this proved to be mission-critical time and time again. But generally the Perl stuff worked just as well as the Java stuff. Whenever performance became an issue, they'd find clever ways to make it perform well enough. ...
So for years, we had Java and Perl development going on side by side. This was a decision made in old days, purely for expedience reasons. When we were deciding how to implement Arizona (our internal web-based application suite for CS), we had about a 50/50 split between Perl and Java programmers on the team.
During the initial development, the Perl use-cases got finished astonishingly fast. For a while, Arizona had more Perl than Java, because our Perl programmers started grabbing tasks assigned to the Java folks. Over time, the "climate" across the company pushed us to migrate everything towards Java. It was a pretty complicated situation not worth recounting here, but over a period of years, most the Perl stuff in Arizona was gradually rewritten. (I hear after I left, the climate changed again, with Java being phased out in favor of C++ and Perl, but for reasons mostly unrelated to the languages themselves.)
In any case, for several years I got to watch Perl and Java folks working side by side doing pretty much the same tasks. In some cases, they even had to implement the same logic in both languages. Yes, there were inefficiencies with our Perl-and-Java approach. However, it was the right decision at the time, and as a result, I was personally able to witness a more or less apples-to-apples, multi-year comparison of the strong-typing and weak-typing camps at work in the same production environment.
In nutshell, I was pretty impressed. I was a die-hard Java guy at the time, and even then, I could see that the Perl code was far smaller and simpler than the Java code. It didn't feel "cleaner", since Perl itself is a bit challenged in that department, but it seemed modular enough. It had a well-defined architecture, and it got the job done, year in and year out.
Our Java code (to me) seemed far more complex, even though I could read Java more easily. I think Java programmers have a tendency to overengineer things, myself included. I suppose many Java folks would have thought of our Perl code base as grossly under-engineered. But if it was really under-engineered, it seems like it should have caused more problems than it did. In practice, most of the problems in the Perl code were interoperability issues with external services (or databases, in cases where there were no services yet.) Most service owners didn't include Perl bindings for their interfaces, so our Perl folks had to do a lot of head-scratching to find workarounds.
  • Comment on Advocacy ammunition: perl vs java at Amazon

Replies are listed 'Best First'.
Re: Advocacy ammunition: perl vs java at Amazon
by perrin (Chancellor) on Aug 08, 2006 at 16:23 UTC
    On a related note, Amazon uses Perl (via Mason and FastCGI) for all of their front-end page generation now.
Re: Advocacy ammunition: perl vs java at Amazon
by doom (Deacon) on Aug 08, 2006 at 11:48 UTC
      Hm... a recent remark by Steve Yegg, Egomania Itself:
      As I've done for a great many other programming languages, I've bashed on Perl's technical weaknesses at length in the past. To my continued amazement, the Perl folks are the only ones who never get upset. They just say "Haha, yeah, boy, you're right, it sure is ugly. Heh. Yeah, so, um, anyway, I'm going to get back to work now..." It's awesome. I've gained so much respect for them. It's almost enough to make me go back to programming in Perl.

      Well, almost.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlnews [id://566128]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2019-11-22 11:07 GMT
Find Nodes?
    Voting Booth?
    Strict and warnings: which comes first?

    Results (110 votes). Check out past polls.