http://qs1969.pair.com?node_id=1046550


Greetings fellas. Please take a seat and prepare yourself for a long sad story.


A couple of years ago I had worked for a company in which we've been using perl as our main programming language. Back in those days Perl was used for web-frontend programming as well as for complex backend engines with tricky business-logic in it, and in general as a universal swiss-army knife.

Since then I've changed my employers thrice. And all the three were extremely negative to perl as a tool. And that's not even to mention the perl as a programming language.

Well, I must admit that I shared those views on perl as a programming language for distributed programming since I already met the beutiful elegancy of erlang for these kind of solutions, but! But I still been loving perl as a versatile tool for simplifying everyday developer's life. Perl comes with the base system in many distributions of linux, it has spreaded in many minds and became known to almost anybody -- well, I thought it was --and is therefore an ideal tool in its niche.

But now I faced with an interesting situation. In the company where I currently work, of about thirty IT people only one person from support team actually knows perl. Nobody from QA team, no single one developer. Yes, I find it rather strange, but it's still a fact.

Here we have a web service that is installed and working somewhere far away in amazon VPS instances. That's my job, I have done this service in erlang. And by the old habit I sketched a stack of tests for it in perl and gave it to the QA team. Everything is kosher enough, the test suite has minimal dependencies, it is well structured, have in-line documentation for perldoc as well as a small README file. It covers a lot of functionality to test and it is proven to work on different environments. I even spent a little time to ensure those QA guys can run and use the given test suite on their own localhosts.

Now guess what? The QA team rewrites it in python. They have a very little knowledge of python so their code looks like spagetti, and even worse - they cant cover the needed functionality because of lack of python competency, but they forced to do it because of everyone, starting from the management, is scared of perl. They don't even want to give it a try!

The perl is thought to stand in the line with PHP - a must-die language. Even worse - it constantly collocated with epythets like 'write-only', 'poor-designed', 'vulgar' and 'dirty'.

You know what? I'm about to give up.

Please tell me I'm just a deviation and you have changed employer recently and still working in perl tolerating company.

Replies are listed 'Best First'.
Re: regarding intolerance to perl which I observe
by Your Mother (Archbishop) on Jul 26, 2013 at 18:36 UTC

    I'm in a pure Perl group (we use bits of Java, C, ActionScript, etc) at a Fortune 20 company.

    Perl is a first class language. It has the best Unicode support, it has to some, and regardless of whatever bowing and scraping about bolt-ons some feel is necessary, the best object oriented systems around (vanilla, inheritance, mix-ins, roles, coercion, etc), it's still ubiquitous (excepting mobile), it has the lowest defect density of any high level language, it's very fast for a dynamic language, it has great community support, it has the CPAN, etc.

    I'm also sick of the Perl bashing, and even the half-hearted apologetic support from some users bothers me. I adore Perl. You can write lousy code in any language though I admit Perl gives you plenty of rope to do so. Perl also has some of the best testing tools so bad code in Perl is *only* a reflection of the developer and, like PHP, the low barrier to entry. Perl's greatest weakness in the flame game is that it's so flexible and so easy to learn, non-programmers have written lots of code in it.

    If you're willing to relocate and have decent chops there are tons of Perl jobs. On a personal note, you need to do what will make you happy. If that's Perl, great. If not, find it and don't worry. Haters gonna hate.

Re: regarding intolerance to perl which I observe
by LanX (Saint) on Jul 26, 2013 at 21:11 UTC
    I perfectly know what you mean.

    I'm constantly making new acquaintances and since I'm living in a high-tech area also many IT folks.

    I'm regularly getting almost hysteric reactions like

    "What, you are doing P E R L !?! Are you kidding me?"

    The worst story was a guy who was doing JAVA- project management claiming that he knows how to program Perl from 10 years ago and would never do this mess again. BUT - he added - he loves bash, since he can do in a few lines what needs many pages in Java!

    WTF? (Perl has certainly an image problem if people think bash is better)

    You can't argue with these guys because they don't wanna admit that they have no big idea what dynamic scripting really means.

    There are many reasons which led to this situation, and I agree it's often really frustrating.

    And looking for interesting Perl projects as a freelancer is becoming more and more difficult.

    OTOH the agencies tell me they have problems finding (or defining) good Perl people.

    Either the candidates have some knowledge and ridicule Perl or they "fanatically love" Perl and wanna do everything in Perl, which then complicates the situation because you even need more Perl personal. But no folks in between.

    The big hope I have is the complete change of JavaScript's image in the last years from an unreliable toy language to a must have.

    Regarding Python, I think it's more tolerant for amateur programmers. Even the biggest nonsense looks like well structured code. It's a bit like formatting rubbish with LaTeX makes it look like believable mathematics (as an example take BUK's nonsense paper).

    Managers see pretty format and think something (like the famous IBM quote)

    "Nobody has ever got fired for using Python!".

    Cheers Rolf

    ( addicted to the Perl Programming Language)

Re: regarding intolerance to perl which I observe
by eyepopslikeamosquito (Archbishop) on Jul 27, 2013 at 08:16 UTC

    Now guess what? The QA team rewrites it in python. They have a very little knowledge of python so their code looks like spagetti, and even worse - they cant cover the needed functionality because of lack of python competency, but they forced to do it because of everyone, starting from the management, is scared of perl. They don't even want to give it a try!
    I suspect the QA team not only lack Python competency, but lack general software development competency, a common problem with QA teams in my experience.

    Still, I sympathize with their overall approach. After all, the QA team are responsible for maintaining this code, not you. And what happens if you leave the company? Has your company made their policy of which programming languages you may use clear? If they have mandated Python, how come you are allowed to write a system in Perl? And if they have not mandated a single scripting language, they are asking for trouble IMHO, with you writing a system in Perl, others choosing Python, others preferring Ruby, others opting for Lua, or Power Shell, or Groovy, or ...

    You see, when you commit to maintaining large systems over a period of many years, by many different programmers, it is not economic for a company to maintain a high level of competency across many different languages because mastering, as opposed to dabbling in, a language, and its libraries, and its community, takes a lot of time and effort. Even a company as big as Google for many years allowed only three languages to be used for production code, namely C++, Java and Python.

    Please tell me I'm just a deviation and you have changed employer recently and still working in perl tolerating company.
    I am happy to report that I work in a Perl tolerating company. Every now and then, some keen new starter wants to drop Perl and switch to Python or Ruby. If you propose that, however, what is your plan to deal with the millions of lines of critical functionality already implemented in Perl? What is the return on investment in rewriting a working system in another language? What is the benefit to the customer? And if you don't rewrite, you must commit to maintaining skills across multiple languages for many years, a step not to be undertaken lightly.

      You're right on all your statements and most of your assumptions, but please take into account the following:

      1. there was no automated testings before I came here. QA guys did all testings manually, slowly, step by step as written on their wikis, by hand.
      2. there was no standard for automated tests and no preferences for auxiliary scripting tools.
      3. considering the python knowledge. At this point there is me and one more guy from support with perl knowledge against one developer and one team lead with stated python backgound.
      4. I did provide the test suite as a helper tool to speed up the testing process. Those guys from QA was excited about it but then this management came with their decision to rewrite the whole test suite.

      I insist this is rather irrational decision.

      And if you don't rewrite, you must commit to maintaining skills across multiple languages for many years, a step not to be undertaken lightly.

      IMHO, with perl/python being so similar, it really doesn't take much to maintain skills in both -- but it does help if you're not junior level at every languages you know

        Do you allow Ruby and Lua and Visual Basic and bash and Lisp as well? Where do you draw the line?

Re: regarding intolerance to perl which I observe
by SuicideJunkie (Vicar) on Jul 26, 2013 at 16:29 UTC

    I first heard of Perl at work. It isn't used a lot, but was used for generating reports that customers could modify to their whims, and I was tasked to make a new one.

    I've since used it in most of what I do, even if for prototyping features before modifying the legacy C++ code. I recently used it to great effect to slam out analyses of 20 megs of log file and provide fast answers to questions while the director and head QA guy were standing at my desk discussing the field problem.

    The Python guys around here tend to do more low level things with driver DLL calls and such. I've done more visible things, and quite a few have gone out to other departments and countries.

    One thing that might be handy is to package the code up with Cava Packager for example. Just hand off the exe & libs folder and it'll work. They don't need to see the source or rewrite it; make it obvious that the program is already done and in a neat tidy "box".

      Thanks for your answer, I think I get what you're talking about but it is not the case for me. First, we have here a mixture of linuxes and macs, so I can't just make an executable bundle. Second, yes, I did really visible thing, you really have to be blind not to see it; visible, but still unwanted and therefore useless.

      Our management doesn't want to hear about perl - they believe that perl not only useless but dangerous, because 'it hard to maintain and support'. 'You can write the perl code', they say, 'but you can't read it'.

        Well, odds are good that nothing could convince them if they're truly set in their ways. All you can do is write good, readable code and look for open minded people.

        My scheme for making code readable is to try and avoid the need for comments. Use perl's keywords and your own names to have the code say things in English as much as possible. Short functions, nouns for variable names, pluralized when it is an array, verbs for functions that do things, and so on. Make the code be a comment that lacks a # in front of it.

        I even had somebody say to me that the code was surprisingly readable; they aren't a programmer, and didn't know perl, but could still follow what it was doing.

Re: regarding intolerance to perl which I observe
by zwon (Abbot) on Jul 26, 2013 at 16:31 UTC
    Relax, there are still companies that use perl as a primary language and quite happy with it, I'm working in one. Although we have this guy who hates perl and would like to rewrite everything in Java ;)
Re: regarding intolerance to perl which I observe
by nevdka (Pilgrim) on Jul 28, 2013 at 13:06 UTC

    I'm 4 weeks in to a new job where everything is written in Perl. They're very strict about following the in-house style guide, and all the code I've seen from others is easily readable, despite me not having a whole lot of Perl experience. It's also exclusively a Windows shop, and internal systems all seem to be .Net-ified. I'm still trying to figure out how everything fits together...

    My division writes code for clients, and there's a huge emphasis on quality and maintainability. We have an over 99.9% error free rate, time estimates are rarely off by much, and developers can be expected to take a program they've never seen before, modify the business rules, and created a 'finished' product in sometimes as little as 2 hours. And all in Perl. It is maintainable, it is readable, and it's well designed enough to keep our clients happy.

Re: regarding intolerance to perl which I observe
by arkturuz (Curate) on Jul 29, 2013 at 18:40 UTC
    Please tell me I'm just a deviation and you have changed employer recently and still working in perl tolerating company.

    Yup. After 8 years of Perl web development, after I got fired in the process of off-sourcing development team to a foreign country, I thought it was over. No one will want me to do Perl. I will have to switch to something else. (I'd love to switch, of course, to something Lisp-like, or ML-like). But, I found a new Perl-related job. And it's nice. I work from home writing some specific servers they need. It's cool.

Re: regarding intolerance to perl which I observe
by kbrannen (Beadle) on Jul 30, 2013 at 02:51 UTC

    As others have said, when people already have their minds made up regardless of facts, it's next to impossible to change their minds. You might try to make them back up what they say, they probably won't (and can't). You can show them your code and how readable it is, they'll probably still blow it off ... sigh.

    I'm working at a job in perl and like most of it, at least far as the perl stuff goes. I was told that a few years back they had trouble finding enough good perl programmers and decided to switch to PHP for the next version of our product (it's web based SaaS). But we'll still be using perl for the next 10 years or more because we have a lot of older clients who still bring in a lot of money for us and some of them like the older software better than the newer PHP software, because the perl software runs faster.

    Don't give up hope. You may have to find a different job if you really can't stand it. As painful as it is to change jobs, you'll be better off if you really dislike your present job that much.

Re: regarding intolerance to perl which I observe
by elTriberium (Friar) on Jul 30, 2013 at 19:13 UTC

    I'm in the process of changing jobs. I'm currently working at a huge company (~60.000 employees) and here I'm working in Python. I don't think Python is a bad language, but some things it feels a bit weird and I actually prefer Perl. So now I'm joining a startup (not that small, about 80 people) and there I'll be working in Perl. In this startup Perl is used for test automation, where I think it's a really strong language.

    So this is just a personal anecdote that there are still startups out there that start using Perl. And from my previous experience (moving from a Perl background to a Python job) I really wouldn't be afraid of sticking with Perl. The switch to another language isn't that hard (if you have to do it at some point because your new job requires it) and all companies I interviewed with never saw this as a problem.

      there are still startups out there that start using Perl.

      Sounds funny enough.

      I heard about clojure startups, and scala startups, and even Go language startups, but perl? Hm.

      Thank you, you gave me an illustration that I need =)

        My last two jobs were at Perl/JS startups.

        Perl is one of the best choices for a start-up because it's amazingly fast for for prototyping, it covers so much ground, and is such good glue.

        During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. [I would look] at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers... Beating the Averages

        (update: fixed bracket HTML.)

Re: regarding intolerance to perl which I observe
by bpoag (Monk) on Jul 31, 2013 at 20:11 UTC
    Honestly, i'm happy to tell you you're the exception. You may want to ask what your employer is smoking, and if you can have some. A Perl-illiterate shop is one that you probably don't want to work for -- Not because they dismiss Perl, but because any employer who is ignorant of tools their engineers use, let alone and their purposes, is not a place you want to work for. Let them fail.
Re: regarding intolerance to perl which I observe
by fisher (Priest) on Jul 26, 2013 at 16:08 UTC
    at first I was going to post it as an anonymous but then I've changed my mind. If someone finds it worth it please approve this node - I cannot do it for moral reasons.
Re: regarding intolerance to perl which I observe
by curiousmonk (Beadle) on Jul 30, 2013 at 06:01 UTC

    You could make a mess of any programming language, and Python is not an exception. The only place Python helps is when you are working with total noobs, I mean the kind of people who come out of the programming 101 class and don't know how to indent code.

    On the other hand a lot of people chose to learn a technology purely because its easy to get a job if you do do so.

    I think you shouldn't worry much about a programming language at all. Though I agree a few tools make software development easy. I've seen negative perceptions about Perl too, Python gets selected as an obvious choice as it largely(at least syntactically) resembles untyped Java. And the relatively easy barrier to entry means anybody can learn and use it.

    In just a few years you will see too much bad Python code, written by too many Python programmers. And then Python too shall become a must die tool

    I agree with you that Perl needs a total overhaul, I think that is what Perl 6 is working on. Though its a little late, I think its worth the wait.

      I agree with you that Perl needs a total overhau.

      Did the OP or someone in this thread say Perl needed an overhaul? For my part, I agree with you that domestic violence is good for the economy and subsidies are justified.

        You became quite sarcastic since your gender reassignment! =)

        Can I also have some of your hormone pills?

        Cheers Rolf

        ( addicted to the Perl Programming Language)

        PS: Down with your mother! ;-)

Re: regarding intolerance to perl which I observe
by tqisjim (Beadle) on Jul 30, 2013 at 14:31 UTC

    Last winter in Aaron Schwartz's Economist obituary, Perl was described with superlatives as a powerful programming language. Ie, giving the impression that Perl is the 'most' powerful language.

    Economist has at least WSJ standing. And I wondered about the writer's source material.

    I used to build websites for a PR firm and retain a bias. Maybe TPF has had similar thoughts?

Re: regarding intolerance to perl which I observe
by spx2 (Deacon) on Aug 06, 2013 at 01:35 UTC

    Let me tell you why I see a lot of Perl hate everywhere I go.

    First of all, Perl 5 really has been left behind in terms of modern language features (for example decorators).

    You can refer to the article about the increasing age of people writing Perl in the YAPC study which was recently published. I'm not going to link it here, you can google for it.

    As a result of increasing age, there are a lot of people writing Perl who are really left behind in terms of how you should write code in 2013. And yes, you get to see people writing globals all over, no modules, no tests, and all that sort of nasty stuff.

    A different aspect is that Perl has a very community-driven approach to everything, which is good because there's a lot of effort which goes into CPAN modules and whatnot, yet there's no authority governing anything. It's like a complete mess. Debates like how should I do OO in Perl do not have an easy answer until you are ba**s-deep into the Perl community to find out about things like Mo, Moo, Moose. This is not good, for sure. The fact that OO is still something that's not part of Perl's CORE modules is really a problem, it's a big problem with a big B.

    Moose needs to come with Perl(at least, at least getting a damn default OO inside Perl... at least this.. if other things aren't possible)

    Even if you look at Moose, it's still a clunky mess really, you can see it has leafs and hairs growing out of it, it's just so obvious it's not a main feature of the language. Sure it works, but that's missing the point. That's a problem.

    There are jobs out there which require Perl skills, but a lot of them will be about diving in legacy code. And, nobody wants rewrites, because they're "expensive".

    Learning Perl is actually a very good idea, and keeping up to date on what's happening, and using it. But I would say Python and PHP and Ruby are all good choices too, even better choices from many points of view.

    It's a strange time we're living now, as there are still big pieces of software around (even in the GNU toolchain) that are written in Perl, but the world is really moving away from it for the most part. Look at how many jobs require you to port some Perl code to a more modern language.

    And the argument that you made about Perl coming with base systems in Linux distros.. uhm Python has been coming with base systems of my favorite distros lately so uhm, I don't think this supports Perl as being an awesome thing just because it comes with a base system. I mean, it seems to me that everyone wants to get rid of it, but they're just in a state where they now depend on it, so replacing it is hard.

    And QA people should definitely know Perl, I mean yes, Perl is awesome for doing QA on all sorts of projects, but you can do it in Python too, and yeah, I'll say Python to me feels cleaner to maintain. Perl is pretty much like russian if you want to make an analogy to a spoken language(although the analogy is brittle and silly), it has a different alphabet, different structures, grammar, it's really different from regular stuff. So why, why would some people want to learn this language that's spoken just by people in Planet Perl. I mean, why don't you go to Russia and just try to hang around if you don't know russian, you can't talk to anyone, is there any point ? Not really. Maybe if you're forced to live there for some reason.

    Going back to QA not knowing Perl, so what ? really.. it's just a bunch of tests, you can rewrite them in something else. It's not a big deal. After all, this is (hopefuly) software engineering, not "Perl engineering". There's no such thing as "Perl programmer", that's like.. saying "I know how to cook omlette and I wanna be a cook". You have to know how to cook some omlette, you have to make some pasta dishes, you have to know how to cook some steaks, some salads, some desert, it's complicated..

    But if you look at the bigger picture I think this will always be the same. New languages will emerge fixing the problems the old languages had, and then they become more popular and so forth. It's called evolution I think, and it's unavoidable, it's natural, you can't oppose or stop it, just accept it. So if there's something you should tolerate, it's evolution.

    Giving up is always an option. I've given up on Perl a long time ago, but I'm still writing it. Mostly as a form of self-irony. And from this point of view I'm a good comedian.

    I've also seen in this thread that it's hard for companies to find good Perl people. Sure it's hard. Perl at this moment is like a historical monument(more so than other languages, that's for sure). There are fragments of legacy ways of doing various things spread all across the language. Obsolete, deprecated features. There's ton of legacy code out there. Perl isn't easy, it's a mess, it's mind-numbing, yet, against all odds it's being used by some people with high efficieny and great results. Using it is living in some sort of paradox each day. People hate, but people love it at the same time. So knowing Perl today, doesn't mean just.. knowing Perl.. it means a lot of other stuff. It's a hard language, and the jobs don't get paid well, and people hate you when they hear you "I write Perl".

    Perl is one of those things you have to hate in order to love. It's mind-boggling and mind-numbing and (almost) everywhere I go and write Perl I feel like I'm a foreigner. That's my experience with it.