Credit: Perl Camel

Isn’t Perl Dead

…let’s just move on shall we ;-)

Essential Knowledge for Perl Consultants

So you want to be the guy, the one that swoops in to the shop that has been saddled with the legacy Perl application because you’ve been doing Perl since the last century? You know that shop, they have a Perl application and a bunch of developers that only do Python and they’ve suddenly becom allergic to learning something new (to them). From my own experience, here are some of the technologies you’ll encounter and should be familiar with to be the guy.

  • [x] mod_perl
  • [x] FastCGI
  • [x] Moose
  • [x] HTML::Template
  • [x] Mason
  • [ ] Template::Toolkit

I checked off the things I’ve encountered in my last three jobs.

Of course, the newer Perl based frameworks are good to know as well:

  • Mojolicious
  • Catalyst

Some “Nice to Knows”

  • Apache
  • docker
  • cpanm
  • carton
  • make
  • bash

…and of these, I think the most common thing you’ll encounter on sites that run Perl applications is mod_perl.

Thar’s gold in them thar hills!

Well, maybe not gold, but certainly higher rates and salaries for experienced Perl developers. You’re a unicorn! Strut your stuff. Don’t back down and go cheap. Every day someone leaves the ranks of Perl development only to become one of the herd leaving you to graze alone.

Over the last three years I’ve earned over a half-million dollars in salary and consulting fees. Some of you are probably earning more. Some less. But here’s the bottom line, your skills are becoming scarcer and scarcer. And here’s the kicker…these apps aren’t going away. Companies are loathe to touch some of their cash cows or invest in any kind of “rewrite”. And here’s why…

  • They don’t know what the application even does!
  • They don’t have any bandwidth for rewriting applications that “work”.
  • They love technical debt or never even heard of it.

And here’s what they want you do for a big pile of their cash:

  • fix a small bug that may take you a day to find, but only a minute to fix
  • upgrade their version of perl
  • upgrade the platform the app runs on because of security vulnerabilities
  • containerize their application to run in the cloud
  • add a feature that will take a you a week to find out how to implement and a day to actually implement

The Going Rate?

According to the “interweb” the average salary for an experienced Perl developer is around $50/hour or about $100K or so. I’m suspicious of those numbers to be honest. Your mileage may vary but here’s what I’ve been able to get in my last few jobs:

  • $180K/year + bonus
  • $160K/year + a hearty handshake
  • $100/hour

…and I’m not a great negotiator. I do have over 20 years of experience with Perl and over 40 years of experience in IT. I’m not shy about promoting the value of that experience either. I did turn down a job for $155K/year that would have required some technical leadership, a position I think should have been more like $185k/year to lead a team of Perl developers across multiple time zones.

Your best prospects are…your current customers!

Even if you decide to leave a job or are done with an assignement, don’t burn bridges. Be willing to help them with a transition. Be polite, ask for a recommendation if appropriate. If they’re not planning on rehiring, they may be willing to contract with you for spot assignments.

Some Miss Manners Advice

  • Be nice…always
  • Suggest improvements but don’t be upset if they like the crappy app just the way it is
  • Write good documentation! Help someone else pick up your work (it could be you a year from now).
  • Be a mentor but not a know-it-all, you don’t know-it-all, and nobody likes a know-it-all even if you do
  • Don’t be stubborn and fight with the resident guru unless his bad decision is about to take the company off the cliff (and even then don’t fight with him, take it to the boss)
  • Ask questions and take a keen interest in their domain, you never know when a similar job might present itself

Previous post: AppRunner - The Good, Bad and the Ugly (Update)