Are there any common expectations from perspective employers when they hire a Perl developer?

For a student who likes Perl and Linux and would like to get a job as Perl developer, what would you recommend to learn?

I am looking for things that are generic and applicable to most/all Perl positions, as opposed to specific details of a given company's requirements.

In other words, what are the things I should be able to to/know to become more attractive to ANY company looking for a Perl developer.

  • 2
    Why all the downvoting? – DVK Sep 17 '11 at 16:49
  • 2
    Don't you think being a PERL developer, you should learn everything about it, rather than focusing on one aspect or the other – Pankaj Upadhyay Sep 17 '11 at 17:25
  • To all the down-voters - I have substantially revisd the question to remove subjectivity based on helpful feedback from moderator. Feel free to change your downvote. – DVK Oct 11 '11 at 15:02
  • This is a good question. Perl is a somewhat dated language that seems to have more than its share of quirks and idioms. Plus there are more "expert" Perl positions out there than "junior" these days. – joshin4colours Oct 11 '11 at 17:20
  • 1
    @joshin - do you have specific examples of where Perl os "somewhat dated"? – DVK Oct 11 '11 at 19:57

Some points:

  • As a Perl developer, pretty much any company will expect you to know MORE than Perl. Even in pure Perl shop, you need to know (ideally) JavaScript/overall web development; and SQL for back-end work.

    And most companies have a mix of languages, so you should be prepared to be Perl/C++ or Perl/Java or whatever else is needed. Much as the fact grates on me, there aren't all that many good "Perl-only" shops I'm aware of.

  • As with any language, a company would expect you to use the language effectively. This has several facets, some are more important in Perl

    • Available libraries. This is a MAJOR point for Perl, of course. Great familiarity with CPAN and knowing which libraries are considered "state of the art"/"most common" for specific common tasks is a must.

      Can you rattle off - without asking SO - the "standard" library for loading a CSV file? For parsing data out of HTML document? For writing unit tests? For mocking objects? For generating JSON data? For reading simple XML config files? For dealing with ordered hashes? For exception handling (try/catch logic)?

    • Ditto for frameworks. Do you know how to construct unit tests for Perl modules and integration tests for Perl code? Do you know at least one web templating framework or better yet an MVC web development framework (hint: Catalist :) ? Do you know how to use database connectivity libraries?

    • Do you know the internals of Perl? Can you work with XS modules, or at least be able to read the code?

    • Do you know the features that make Perl a unique language in terms of expressiveness and how to use them? Can you easily use map, grep, Regular Expressions, nested data structures, subroutine references? Do you know what autovivification is and how it lets you write 1 line of Perl code that is equivalent to a page worth of Java code?

    • Do you know advanced Perl features? Have you read Higher-Order Perl and can effectively use all the techniques in it? Remember that one of Perl's strengths is that it's "almost Lisp" :) - so you need to be able to leverage the Lispy strengths into your productivity.

    • Do you know that Perl community is considered one of its major assets? Do you know which two main places to go to to ask Perl questions?

      Have you participated in Perl tag on StackOverflow - both asking intelligent questions and trying to answer questions (even if you don't know the perfect answer, and even if it's already answered - the PRACTICE of trying to answer will make you a much better Perl developer).

  • As a Perl developer, the company would likely expect you be able to deal with either legacy (5.8 and before) Perl, or, if you're lucky, with Modern Perl. Meaning, know both how to construct the object the old way (in detail - do you know how to work with inside out objects? How to implement standard OO patterns?) - and how to do Moose based OO; Catalyst MVC web development and DBIx ORM data access. For the latter, reading chromatic's Modern Perl is a must.

  • A company will expect you to know language independent stuff. Algorithms, data structures, networking, concurrent programming, GUI design, Unit testing, OS internals (or externals - sometimes you can spend 30 seconds building a Unix shell pipe tool that would take even a seasoned Perl developer 1-2 hours to polish off - and sometimes a good boss would note that :) )

  • A company would expect you to be more than a Perl code monkey. Do you have communications skills? Can you effectively communicate to users and other developers? Can you write clear code/comments/documentation? Do you write your code as if the next developer maintaining it is a raging psycho who knows where you live? And most importantly, are your prepared to learn the business that your code supports? A value of developer increases by an order of magnitude when they understand what their users do and how and why they do it and can translate that into "how can I make their work more efficient with my product".

| improve this answer | |
  • 2
    I think this is a Great Answer. It takes a pretty generic question and still generates a lot of very useful info. – Martin Ba Oct 11 '11 at 17:03
  • Dear @DVK, much though I like your answer, I feel that it misses out on several of Perl’s most important core competence areas. No other language provides as complete, convenient, and versatile Unicode support as does Perl — which, now that the Web alone is >80% Unicode, is really important. Java struggles, Javascript is a joke, and Python and Ruby are more than just subconvenient for Unicode processing. Second, you don’t mention pattern matching, which in Perl is not one but many quantum states removed from regex handling in any other language. Use Perl for its strengths. – tchrist Feb 19 '12 at 15:18
  • @tchrist - I have mentioned RegEx in "Do you know the features that make Perl a unique language in terms of expressiveness and how to use them?" section. Not qualified to talk about Unicode, but you are very welcome to edit it in since I know you are :) – DVK Feb 19 '12 at 16:07
  • 1
    Epic answer DVK. Well done sir. – Rocklan Mar 15 '12 at 12:52
  • 1
    I've got the job as a Perl developer 3 months ago, today I was reading this old question of mine and now I feel that everything you stated in your answer is 100% correct. Very good answer. Thanks :) and yes I'm working on the legacy code (we use perl 5.8.5 in our company). – Chankey Pathak Sep 26 '12 at 6:44

I think you're pretty much right. It completely depends on what the specifics of a company needs, what the level of experience is of the people already working there, and what their client base is (i.e. what is the set of problems they solve to generate revenue). You would probably best be served by just reading through job postings and figuring out what problems Perl developers are utilized to solve. Try to find a company that gives you a balance of growth/experience that you want, culture, and compensation that jives with what you're looking for.

For me, I need to be involved in solving coding problems that are interesting, and in that realm, not all places are equal. For example, I have interests in web development, automation, large data sets, and user experience. Because of that, I like places that have web applications that have a large and diverse user base with which I can interact to get feedback on what they want, so I can build it for them. It's a plus if the data set I work on is large/complex (because that's fun for me), and if there are opportunities to write automation scripts (e.g. batch processing for sending out email notifications, periodic DB cleanup and massaging tasks, automated reports, etc.).

What kind of code do you write in your spare time when you're not coding for class? Try to find a place that writes the same kind of code.

| improve this answer | |

Along with points @DVK and other developers mentioned companies might look for good C programming coding skills as for performance reasons there are many parsing modules written in C so sometime you might need to debug for some issues. So better if you know code in C language.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.