Although I'm a Perl zealot, I must admit that the thought of trying to understand someone ELSE's Perl code is horrifying. This is because although everyone writes beautiful maintainable Perl code, everyone else's Perl code is horrific.
On another note, what are the chances that this thread is going to turn into a PedantoNerd flamewar.
But really, I think you hit it right - because the language displays such a lack of orthogonality, ten perl coders will write the same line of code ten different ways, and everyone will favor his own constructs.
It is possible to write clean, easy to maintain Perl. However the people with the inclination to do that left for Python, because you earn respect in the Perl community by being a "wizard", i.e. implementing a common task using obscure language features. In contrast, to earn respect in the Python community, you write boring code that does something interesting.
It seems there are two Perl communities. One is the horde who have been playing code golf and writing horrifying crap since 1987, and the other is the Modern Perl guys who are actually trying to create a robust language (except that it'll be based on Perl, for reasons that escape me). The last time I saw Moose come up, I was told that only 5% of CPAN has adopted it to date, so I think the influence of Modern Perl on the mainstream has been overstated.
5% of 21,163 is still over 1000 modules. That is nothing to sneeze at. For a module that is only four and a half years old, that is an average of about 4 new modules a week published to CPAN that depend on Moose.
If you look at the time and effort that goes into releasing a package, figure at least 8 hours (one day of work) that is conservatively $200 of effort minimum? So would you be interested in a company that averaged four "sales" a week worth a couple hundred dollars each, sustained over four and a half years?
Yes, let's change all OO CPAN modules to use a new library, just for the heck of it. Let's not care that all of these libraries work great and are used in production.
Transition takes time, welcome to software development.
although everyone writes beautiful maintainable Perl code, everyone else's Perl code is horrific.
I do not buy this. I've maintained plenty of good Perl written by plenty of other programmers. I've seen bad Perl as well, but I've generally believed that the same developers would have produced bad code in other languages. I believe that the experienced developers I've worked with would generally say the same. From what they've said, they've categorized more of mine on the good side than the bad.
I admit that there are occasionally cases where very good code is very difficult to read. Those cases are very rare, but not entirely non-existent. On those occasions I've been glad that Perl gave me the rope to hang myself. However if you find yourself in this position on a routine basis, you should ask what you are doing wrong. Because that shouldn't happen. Really.
(Note, I'm not a Perl developer at the moment, but I was for 11 years. I've never considered myself a Perl zealot.)
Same. I took my current job and the Perl code did not look too different from mine. If anything, they tried a lot harder to make it look nice than I do.
I work on a lot of open source Perl, and it all looks the same. Sure, I can tell mst's code apart from nothingmuch's, but I never have any trouble understanding what it's doing. The community has decided on a style, and everyone gets on just fine. It's so pervasive that even people that don't hack on the code every day pick up the style; like I said before, code written by never-contributed-to-open-source don't-even-know-what-github-is coworkers does not look too different from what I'd expect. People wrote bad Perl in 1995, and I've seen it, but this problem is largely solved. (The same cannot be said about Python. I wasted two days last week debugging the XML parser included in the core! That is some legacy code...)
The reason we can't find Perl programmers is because everyone likes their job. When you jump ship as a Perl programmer, it's from one bank to another, or one small web shop to another. If you're a Python programmer, on the other hand, you get to do something exciting like go from no-name-consulting-company to Google. Google, that site you visit every day and that has a ball pit and pool in their offices!! Google!!
The kinds of places that do Perl tend to be boring. I may work for a bigger company than Google and affect more people, but I don't get a ball pit, I don't get free food, and I don't get to say, "oh, you know Google Reader? I added a new feature on that today." When talking to non-programmers, I try not to even mention my work, because it sounds that boring. When you work for Google, everyone thinks it's exciting. This makes it easy to find people that want to work on your language, just because there is a general feeling of coolness about it. If you're not working for Google today, then you're working to attract their attention or something.
Extrapolate this anecdote to the rest of the community... and you have a hard time finding people to hire. (My employer has trouble hiring people because they try to be cheap. "Oh, well we can only guarantee you a 6 month contract, no insurance, and you have to pay to move across the country". Not a lot of people take this offer.)
I graded assignments in a class that used Perl. Absolute nightmare. By the time I got to the end of the stack each week I couldn't tell the difference between brilliance and stupidity.
Something is wrong here. You're a "zealot" but "the thought of trying to understand someone else's Perl code is horrifying"? As a Perl developer, I read other peoples code without a problem on a day to day basis.
I was a Perl programmer in L.A. around 1999-2000. I've since moved on to Ruby, which I prefer in just about every respect, and San Francisco, which is kind of a wash. Perl's not a bad language but at this point Python or Ruby just seem like a better long-term investment.
Maybe the positions and/or compensation aren't competitive?
Perl doesn't attract brand new programmers very much these days. The result is that the people using Perl now tend to be more experienced and thus in a position to be somewhat picky.
Actually I would argue than in the niche of batch record processing on mainframes COBOL still very technically competitive. Unfortunately, unlike Perl, batch record processing on mainframes is essentially the only niche COBOL is suited for...
Perl is competitive in more areas, but many of them are not traditionally high paying or high status areas for programmers, e.g. sysadministration or data munging. Combine an aging Perl workforce with lower paying positions and you end up with unfilled positions. Banks are willing to pay good money to either train someone or hire an experienced engineer to work on their mainframe.
COBOL is used quite heavily for all kinds of online apps using messaging (MQSeries and others), any big database you care to name, TCP/IP, and interfacing nicely with Java (among other languages). The apps are only as poor as the programmers who write them--COBOL is not inherently limiting, and is in no way stuck in a batch record niche.
Don't laugh. Consist Software in Germany is training new people on COBOL because they still have a solid demand for maintenance. Those billions of lines ain't going away any time before the last trump sounds.
I've been there: my first job out of university in 1996 was re-writing a COBOL program that was originally written in 1972, and I'd bet it hasn't changed much since then. 24 four years between re-writes sounds about right on the COBOL timescale.
You wanna know the exact reason that Perl is dead? It all boils down to PHP had informative and pretty inline debug statements when doing web programming, and Perl did not. So Perl lost, and now everyone codes in PHP.
There are two questions here: What's the situation with LA and What's the situation with Perl.
It's challenging to get people to move to LA. People who like LA are in LA. People outside of LA have a hard time seeing its charms given the lack of transportation structure other than giant freeway traffic jams and busses that come a few times a day and can take a half day to travel a few miles. The cost of living in a decent neighborhood is very high, yet most positions offer mid west style salary. Most developers will take a huge hit to their standard of living by accepting an LA job, so LA employers mostly try to recruit locally and even when they do recruit from out of town, few are willing to attend to basic hygiene issues such as paying for relocation costs.
On the Perl issue, I use Perl for a lot of things because it is very fast to code in and to execute. I find both C and assembler easier to understand than trying to read a complex regular expression in perl or decipher data structures in perl that use pointers due to a syntax that is still unintuitive after a decade of use. Regular expressions probably can't be simplified since they are their own very dense language, but the pointer syntax could be improved a lot. Perl code that creates classes and objects is quite hard.
Coding in Perl can be a challenge and Perl is so large that all of us are expert at different things which means that almost every single piece of new perl code I see is like having to learn a new language.
I have just "dealt with it" all this time, but it's possible, given this post about LA, that fewer developers are willing to deal with the overhead of learning Perl given that for simple sites PHP can be more efficient for them, and for system scripts things like python have gotten more traction.
As someone who hires in LA, and moved to LA to take a job here, your perception is either outdated or simply incorrect. There are a good number of shops here in LA, including Google, Amazon, Hulu, Sony and Yahoo that pay well above the median for good talent. A good dev or PM is going to make as much here as in New York, Seattle or San Francisco, although admittedly there are fewer positions overall than those cities. Additionally, most if not all of those major tech employers regularly pay relocation costs to move people here from other tech centers - it's just not practical to run a dev team here and not do it, given the smaller number of engineering grads.
Additionally, while having a car is a requirement (as it is in all but a handful of US cities), cost of living is lower than in New York or SF, which are the two most likely alternatives. Rent is lower (my rent here is half of what it would be in those cities) and most of your weekend activities are either free (beach, mountains, etc) or cheaper than SF or NY. And there's more of them too: there aren't many places in the US where you can ski on Saturday and go play volleyball on the beach on Sunday, which is why much of our team are Seattle or San Fran weather refugees.
As for Perl, I'd argue that because the tech / web media industry here in LA is newer, there aren't as many folks around who date back to the years when Perl was the dominant platform. When I started developing for the web, it was one of the few practical options; now I'm sure I'd be starting with Ruby or Python. What we do is hire engineers who are smart enough to work in any language, and then let them pick up a book and learn Perl, rather than filter first for that specific language.
I liked a lot of things about L.A. but the traffic eventually killed it for me. I need a car here in the S.F. East Bay too but I very rarely have to sit in the kind of traffic that became my daily nightmare in L.A.
Many places in LA will let software developers choose their own hours.
It is amazing how much easier the commute is for a 11:30-7:30 day than a 9-5 one. So much so that I don't want to even consider jobs where I don't have that flexibility.
It's all about where you choose to live relative to where you work - my new apartment and my old one are across town from each other, but neither commute took more than 15 minutes at peak rush hour. The same can be said of NY, it's all about positioning to minimize the commute.
Also, working from home is pretty big - we allow about 20% of days to be WFH - and that's zero commute.
WFH would have definitely made things easier, but there's just a certain amount of traffic you have to put up with in L.A. if you want to enjoy the city at all. I'd come home after a long day at work and the idea of trekking across town for a concert or dinner just seemed like too much work. Even in West Hollywood, where I was living and where there was a lot more going on, just dealing with parking and traffic kept me home many nights.
Every employer believes they pay market rate and their city is the best place to live in the world. This may be true for them, but is not true for others. I have seen job offers from LA shops ranging from $18k-$60k range. This entire range is very very silly.
Developers and engineers are professionals. Living in a one room apartment or in someone's basement are not acceptable options. Salary needs to cover the cost of a single family house.
A decent house in a safe neighborhood in LA runs from $400,000 to $2 million. Yes, you can buy in the barrio for much less. You can also rent decently and that is what most in LA do. But to attract a developer who is married and has a family and who will be leaving his 4000 sq ft house on an acre of land, that is not a good option.
I agree completely that people in LA like it there and are OK with it. All I am saying is that recruitment is difficult from outside the area because nearly all developers are asked to take a huge hit on their standard of living when moving there. LA recruiters feel the low rates are justified because living in LA is considered itself to be a valuable benefit. Most people outside the area do not see it that way however.
Having lived in both areas, if a company in LA is really offering bay area salaries which are $110k-$170k, then yes, they are paying market rate. But a shop in LA offering $70k or even $90k is simply not comparable to a SF job at twice that, given that the costs of living in both areas for reasonable accommodations and commutes are essentially the same.
As far as free things to do, SF has LA beat by a mile.
Early in the year I was job hunting. I live half-way between SF and LA (no jobs near home), so I was looking for jobs in both places and have worked in both. First there were way fewer jobs in LA than in The Bay Area, maybe a factor five. The jobs in LA in general were far less interesting, a lot using the MS stack. The pay was considerably lower by 10 to 30%, often in the 50K range which doesnt come close to paying the mortgage, let alone food and gas.
Pointer Syntax? What? I'm not trying to be an ass here, but I'm confused as how you could have a decade of Perl use up your sleeve and not realise Perl has no pointers. It has references, perhaps, and perhaps I'm just being a semantic pedant, but they're quite different to me.
Then again, I actually find C/C++ pointer tracking and memory allocation daunting, so perhaps that is why I find Perl references more intuitive than not?
In my estimation you can make Perl harder to work with if you try, but you can also make it easier. ie: regular expressions are easier to work with if you use the /x modifier so you can whitespace fill it and document the regex itself, you can do things the hard way with objects, or you can use something like CPAN and get a module that makes this easy ( Moose is my favourite ).
Sure, Perl is perhaps hard for people, I'll give you that, but it doesn't have to be.
... regular expressions are easier to work with if you use the /x modifier so you can whitespace fill it and document the regex itself ...
Absolutely agree. I made a similar comment on HN post Regex: a little Clojure DSL for readable, compositional regexes only a few days ago: http://news.ycombinator.com/item?id=1719554
or decipher data structures in perl that use pointers
due to a syntax that is still unintuitive after a
decade of use
Hint: Perl doesn't have pointers, it has references. It's odd that you haven't gotten used to it after 10 years.
Perl code that creates classes and objects is quite
hard.
Not with Moose. Simply declarative OO that contains an MOP and is very extensible.
Coding in Perl can be a challenge and Perl is so large
that all of us are expert at different things which
means that almost every single piece of new perl code I
see is like having to learn a new language.
This always surprises me. I code Perl for a living, and I never have this problem. I never run into code I don't understand. Sometimes the formatting and I need half a second to locate the curly brackets because the original author was a C/C++ guy, but that's about it.
Speaking from the perspective of someone who routinely writes his own compilers, and who has extensive experience designing VLSI microprocessors, etc various fancy complicated stuff.
It's also odd that many people after 10 year with Perl have not realized that it has pointers which it calls references. Pointers and references are not so different that they need separate names. There's too much branching of terminology. Pointers are pointers. Even those & things in C++ are pointers as well, they are just a syntactic simplification of pointers for ease in typing. If C++ didn't have references, what it calls references could be implemented in the preprocessor as an alternate syntax for pointers. Oh, references can't be nil in C++? No, they can be if you try hard enough on every compiler I've ever seen.
Lots of people agree as well. Perl has pointers. Call them references if you like. They are pointers.
This whole sidebar is pretty off topic for this thread though so if you'd like to continue please create a new thread. The post was about finding Perl programmers in LA. Part of the problem is fewer people are embracing Perl nowadays. Part of the reason is that Perl is difficult. I like Perl. I use Perl all the time. I also recognize that, like C++, Perl can be a pain in the ass for people, and there are much easier languages to read and write in which work just as well for things like basic web programming. So as a result people learn those other things more nowadays and not so many adopt Perl. That's not hating on Perl, that's just explaining why the dude can't as easily find his Perl programmers (for whatever lowball salary he is offering, which is not stated) in LA anymore.
Pointers and references are not so different that they need separate names.
Please perform pointer arithmetic or demonstrate the pointer/array equivalence with references or write a garbage collection system which uses pointer counting.
When you've finished, demonstrate effective and type-safe autovivification with pointers.
Finally, use references (sorry, pointers) to stack-allocated variables in C and create an object system based on closures.
In general, economics tells us that if a commodity is not being sold, its price point is incorrect. An unfilled job is a job that is being priced too low.
IMDb.com (a subsidiary of Amazon.com) has an office in Sherman Oaks and we are definitely looking for experienced Perl developers. If you are interested please send us an email at careers@imdb.com
Is this a problem in the Boston area also? I hope not because I've been doing Perl a long time and would consider taking a Perl job around here, but either its not the case or they are hiding them from me, even though I write the loveliest Perl ever, I swear!
Athenahealth uses mainly Perl, but I got the impression they're mostly hiring new graduates and training them up. When I interviewed, they didn't advertise using Perl at all, maybe to not scare people off.
I had to leave LA last year because I couldn't find work, and now I'm in the Bay Area. Maybe all the perl hackers moved away? I wasn't seeing many Linux jobs in general.
There are lots and lots of jobs – but of course - like everywhere - most people are recruited/hired from "know someone who know someone", so making contacts as you work is crucial.
At this point in Perl's history, there is no such thing as a mid-level Perl developer.
I'm actually a Los Angeles Perl developer and I keep telling my HR department to either look for college kids with basically no professional programming experience at all, or senior candidates that they're willing to pay at least $90,000. Looking for "some Perl programmer guy" with some experience that you're looking to pay $70,000 is pointless, because they don't exist.
Perl's lack of a "sexy web startup framework" (e.g. Rails) essentially wiped out a whole "generation" of developers. I'll be the first to admit it's a lot harder to bang out your brilliant "It's like Facebook... but for cats!" startup idea in Perl and its respective frameworks. If you want a decent foundation, you'll use something like Rails or Django. If you just want to bang it out, you'll just inline some crappy PHP code in your HTML. Eventually your company will grow, you'll have different kinds of problems to worry about, like, "this third-party partner doesn't have an API so I need to write a spider that logs into their UI and scrapes the data we need" or "I need to parse this DB log to figure out the frequency of SELECT queries," but since 97% of startups[1] don't ever get to that point, Perl didn't get a lot of love in 2005-2007. After all, we're on Hacker News, not Mid-Sized Company News.
So if you were a Perl hacker in 2004, 2005, you either loved the flexibility and "whipitupitude" Perl gave you for your back-end operations, and now it's 5 years later and you're a senior engineer looking for a commensurate salary. Or you decided to crank out CatBook in RoR until Zuckerberg sued you into oblivion and then you just got another Ruby job afterwards.
For what it's worth, I would encourage the HR departments that Randall mentions to look at new college grads. More than any other language, I feel it's one of the easiest languages to learn regardless of your previous experience, mainly because of TMTOWTDI[2] you can write it in whatever syntax format you're already experienced in. I see a lot of college kids who came from Java and at first their code is full of HammerFactorySchematicFactorySchematicFactories, and while it's pretty silly, it'll work until they learn better, and in three months they're essentially as productive as the theoretical mid-level Perl programmer anyway.
People wildly overestimate the intelligence it takes to hack the average scripty software job anyway. It took me about two months to go from complete ignorance of perl, http and unix to productivity at a startup and I'm certainly not exceptional. Hire smart people and give them a little ramp time.
> I'm actually a Los Angeles Perl developer and I keep telling my HR department to either look for college kids with basically no professional programming experience at all, or senior candidates that they're willing to pay at least $90,000. Looking for "some Perl programmer guy" with some experience that you're looking to pay $70,000 is pointless, because they don't exist.
Actually, if I found myself looking for a job I'd consider taking $70k, even though I'm a senior level guy and that would be quite a pay cut from what I now get. The big factors would be the stability of the company, how good its benefits are (including 401k matching), and reasonable flexibility in work hours.
The reason for this is that I'm 50, and I'd want the job to be my last job before retirement. If a job has a very good chance of being able to take me to retirement age, and letting me grow my 401k a good amount, that would be more attractive to me than a job that pays more now, but that I can't foresee lasting 12-17 years.
I doubt Perl is getting as much new blood as they used to be, because a disproportionate amount of it is going to newer or sexier languages, like Python, Ruby, etc. Languages that fit approximately the same niches and have approximately the same level of agility or terseness. (Note I said approximately for you precision nigglers out there.)
I have to wonder how they are recruiting, because I don't see that many available positions on the job boards.
I'm a Perl developer with 11 years experience who's been watching the job boards with the intent to relocate to a new city soon (I'm looking all over the US) but I'm not seeing that many Perl jobs anywhere. PHP, Python and Ruby look like a much hotter skills right now based on my unscientific observation.
Another thought is that like me, other Perl developers are worried about getting stuck in a shrinking specialty and are actively seeking non-perl jobs to strengthen their career. That said, I'm still open to perl and willing to relocate so if your company needs an experienced Perl guy you can find my email address in my HN profile.
Well, as a 24 year old PERL developer in Los Angeles I'm glad this is the case.
Many people underestimate the capabilities of the PERL MVC frameworks such as CGI::Application + Moose and the other ones.
I can bang out a proper MVC templated project with a proper OO structure and Beanstalk MQ backend for long running jobs with an AJAX interface that'll scale in about week. No sweat.
These tools make the recent Diaspora fiasco non-existant. They take of sanity checking, access checking, etc. at a lower level and you implement features in higher level classes.
(For example I can store JSON in a DB column and automatically parse it when it's accesed like:
$mytable->myjson->{'myvalue'} )
Need a barcode reader? Need a SOAP/JSON/etc library? Need clean database access API? Need a printing library? Need a PSD library? All in CPAN.
I wouldn't touch Rails with a 10 foot pole. PHP blows chunks. I'm able to be picky when it comes to jobs
I've gotten my PERL jobs through craigslist. I'm honestly not aware of a better medium to find PERL jobs.
Been programming in PERL since I was 14 (so 10 years) and I'm so happy I don't have to sweat for a job. I'm actually currently living off my previous job's savings because it paid that well.
Also note that I never even finished High School.
In short, I don't know why they haven't been able to find PERL programmers. I guess because the newer generation of developers don't realize how awesome it is.
Protip: you'll get more people interested in you if you spell it Perl instead of PERL. Despite appearances, 'Perl' is not an acronym, there are backronyms for it, but that doesn't mean its an acronym.
I say this only because you give the illusion of knowing something about what you are talking about, and its merely sad to me that you can use Perl for 10 years and never learn this.
( And sadly, not knowing Perl is not an acronym looks bad to people who know different, and thus instantly assume you're not very experienced in Perl )
I spend much less time speaking or writing about PERL than I do writing PERL code.
Note, I'm well aware that PERL is not an acronym. I ALWAYS spell it like that because I like to make it pop in my sentences. Frankly, if an employer is turned away by the way I spell PERL then I don't want to work for them.
I really don't communicate with the Perl community at all. I write code, I send bug reports or bug fixes if things are broken.
I really don't see how interacting with the Perl community would be relevant to an employer from an engineering point of view.
At that point it's not 'savvy' people who know that, but silly people who have too much time to complain or notice small things like that. Possibly managers or scripters, not engineers who go only by code, architecture, etc.
Tip for you. The language is named Perl. And a lot of people use it as a quick filter to tell whether someone has actually encountered the Perl community.
That's fine. I'm just warning you that many of the awesome developers and best Perl shops out there will put a strike against you for getting it wrong. But if you wish to hurt yourself, go right ahead.
I don't know, nor care, who chromatic is. I was simply implying that there are developers like me who can write more code than speak or write English. It's pretty silly to filter candidates based on how they spell something, unless it's blatantly bad of course.
I couldn't care less what other developers thought of me. As long as my code works and works well and others can work with it. I'm happy.
However, I do appreciate and will take your advice into consideration. I do only talk to my immediate co-workers about code, and 90% of my code is closed-source.
I see it as a matter of accuracy and humility. People who care about precision and accuracy and getting the little details right make good coworkers. People who care about communicating effectively and who can adapt to the prevailing conventions of the rest of the team on matters of opinion also make good coworkers.
You can be right and you can be stubborn, but I respect that when you're stubborn and right and not merely stubborn because you want to be right.
But how are you going to get new Perl jobs on CraigsList now that they've banned the dirty sections? Sorry ... left Perl for Python in the late '90s. Clean syntax and Zope and Plone for frameworks even then!
Python is one language I wish I would have learned, but I didn't want to waste my time with it. It's not good or enticing enough. I wish I'd get paid for writing Erlang code already!
I'm a perl hacker from way back. I put a few things in CPAN back in my day. But honestly I've not written perl in a decade, so when I got a really amazing job offer for a position doing Perl, I gave it some thought.
Perl is not only not the sexiest/hottest language, but watching and waiting for Perl6 and getting the OO model cleaned up is like waiting for "Duke Nukem Forever". So do you really want to ride on that train? Do you think it will look good on your resume, improve your skill set, or help you think in new and better ways? For all practical purposes the language is dead (FINE, a perl6 implementation is out, but still if the growth is that slow it IS all but dead).
I get offers pretty much constantly to do work in Python, Ruby, and even Java. It would take a lot to make me want to backtrack to an environment that wouldn't help me to grow and evolve as a developer. So the answer for me was "No thanks, thats not really what I want to be doing".
but watching and waiting for Perl6 and getting the OO
model cleaned up
Have a look at http://search.cpan.org/dist/Moose and http://moose.perl.org as well as the MooseX::* namespace on CPAN. It's Perl 5 OO with a Meta Object Protocol, lots of extensions, and compatibility with pure Perl 5 OO.
Do you think it will look good on your resume, improve
your skill set, or help you think in new and better
ways?
For me it does. I'm a full-time Perl 5 developer and I have to learn and read up on newer technologies all the time. Even if the CPAN already provides me with what I mostly need, I'll still have to integrate it into the customers infrastructure. And for that I have to understand it.
77 comments
[ 5.1 ms ] story [ 143 ms ] threadOn another note, what are the chances that this thread is going to turn into a PedantoNerd flamewar.
But really, I think you hit it right - because the language displays such a lack of orthogonality, ten perl coders will write the same line of code ten different ways, and everyone will favor his own constructs.
If you look at the time and effort that goes into releasing a package, figure at least 8 hours (one day of work) that is conservatively $200 of effort minimum? So would you be interested in a company that averaged four "sales" a week worth a couple hundred dollars each, sustained over four and a half years?
And that is just the code that escaped to CPAN.
Transition takes time, welcome to software development.
I do not buy this. I've maintained plenty of good Perl written by plenty of other programmers. I've seen bad Perl as well, but I've generally believed that the same developers would have produced bad code in other languages. I believe that the experienced developers I've worked with would generally say the same. From what they've said, they've categorized more of mine on the good side than the bad.
I admit that there are occasionally cases where very good code is very difficult to read. Those cases are very rare, but not entirely non-existent. On those occasions I've been glad that Perl gave me the rope to hang myself. However if you find yourself in this position on a routine basis, you should ask what you are doing wrong. Because that shouldn't happen. Really.
(Note, I'm not a Perl developer at the moment, but I was for 11 years. I've never considered myself a Perl zealot.)
I work on a lot of open source Perl, and it all looks the same. Sure, I can tell mst's code apart from nothingmuch's, but I never have any trouble understanding what it's doing. The community has decided on a style, and everyone gets on just fine. It's so pervasive that even people that don't hack on the code every day pick up the style; like I said before, code written by never-contributed-to-open-source don't-even-know-what-github-is coworkers does not look too different from what I'd expect. People wrote bad Perl in 1995, and I've seen it, but this problem is largely solved. (The same cannot be said about Python. I wasted two days last week debugging the XML parser included in the core! That is some legacy code...)
The reason we can't find Perl programmers is because everyone likes their job. When you jump ship as a Perl programmer, it's from one bank to another, or one small web shop to another. If you're a Python programmer, on the other hand, you get to do something exciting like go from no-name-consulting-company to Google. Google, that site you visit every day and that has a ball pit and pool in their offices!! Google!!
The kinds of places that do Perl tend to be boring. I may work for a bigger company than Google and affect more people, but I don't get a ball pit, I don't get free food, and I don't get to say, "oh, you know Google Reader? I added a new feature on that today." When talking to non-programmers, I try not to even mention my work, because it sounds that boring. When you work for Google, everyone thinks it's exciting. This makes it easy to find people that want to work on your language, just because there is a general feeling of coolness about it. If you're not working for Google today, then you're working to attract their attention or something.
Extrapolate this anecdote to the rest of the community... and you have a hard time finding people to hire. (My employer has trouble hiring people because they try to be cheap. "Oh, well we can only guarantee you a 6 month contract, no insurance, and you have to pay to move across the country". Not a lot of people take this offer.)
As with any situation where people have a choice, they will take the option that is most attractive to them.
(which I'd certainly agree with)
Python is used heavily in the animation and post-production houses around Hollywood/Burbank (e.g., Dreamworks, Sony) and NumPy is popular in finance.
Perl doesn't attract brand new programmers very much these days. The result is that the people using Perl now tend to be more experienced and thus in a position to be somewhat picky.
It's challenging to get people to move to LA. People who like LA are in LA. People outside of LA have a hard time seeing its charms given the lack of transportation structure other than giant freeway traffic jams and busses that come a few times a day and can take a half day to travel a few miles. The cost of living in a decent neighborhood is very high, yet most positions offer mid west style salary. Most developers will take a huge hit to their standard of living by accepting an LA job, so LA employers mostly try to recruit locally and even when they do recruit from out of town, few are willing to attend to basic hygiene issues such as paying for relocation costs.
On the Perl issue, I use Perl for a lot of things because it is very fast to code in and to execute. I find both C and assembler easier to understand than trying to read a complex regular expression in perl or decipher data structures in perl that use pointers due to a syntax that is still unintuitive after a decade of use. Regular expressions probably can't be simplified since they are their own very dense language, but the pointer syntax could be improved a lot. Perl code that creates classes and objects is quite hard.
Coding in Perl can be a challenge and Perl is so large that all of us are expert at different things which means that almost every single piece of new perl code I see is like having to learn a new language.
I have just "dealt with it" all this time, but it's possible, given this post about LA, that fewer developers are willing to deal with the overhead of learning Perl given that for simple sites PHP can be more efficient for them, and for system scripts things like python have gotten more traction.
Additionally, while having a car is a requirement (as it is in all but a handful of US cities), cost of living is lower than in New York or SF, which are the two most likely alternatives. Rent is lower (my rent here is half of what it would be in those cities) and most of your weekend activities are either free (beach, mountains, etc) or cheaper than SF or NY. And there's more of them too: there aren't many places in the US where you can ski on Saturday and go play volleyball on the beach on Sunday, which is why much of our team are Seattle or San Fran weather refugees.
As for Perl, I'd argue that because the tech / web media industry here in LA is newer, there aren't as many folks around who date back to the years when Perl was the dominant platform. When I started developing for the web, it was one of the few practical options; now I'm sure I'd be starting with Ruby or Python. What we do is hire engineers who are smart enough to work in any language, and then let them pick up a book and learn Perl, rather than filter first for that specific language.
It is amazing how much easier the commute is for a 11:30-7:30 day than a 9-5 one. So much so that I don't want to even consider jobs where I don't have that flexibility.
Also, working from home is pretty big - we allow about 20% of days to be WFH - and that's zero commute.
Developers and engineers are professionals. Living in a one room apartment or in someone's basement are not acceptable options. Salary needs to cover the cost of a single family house.
A decent house in a safe neighborhood in LA runs from $400,000 to $2 million. Yes, you can buy in the barrio for much less. You can also rent decently and that is what most in LA do. But to attract a developer who is married and has a family and who will be leaving his 4000 sq ft house on an acre of land, that is not a good option.
I agree completely that people in LA like it there and are OK with it. All I am saying is that recruitment is difficult from outside the area because nearly all developers are asked to take a huge hit on their standard of living when moving there. LA recruiters feel the low rates are justified because living in LA is considered itself to be a valuable benefit. Most people outside the area do not see it that way however.
Having lived in both areas, if a company in LA is really offering bay area salaries which are $110k-$170k, then yes, they are paying market rate. But a shop in LA offering $70k or even $90k is simply not comparable to a SF job at twice that, given that the costs of living in both areas for reasonable accommodations and commutes are essentially the same.
As far as free things to do, SF has LA beat by a mile.
Then again, I actually find C/C++ pointer tracking and memory allocation daunting, so perhaps that is why I find Perl references more intuitive than not?
In my estimation you can make Perl harder to work with if you try, but you can also make it easier. ie: regular expressions are easier to work with if you use the /x modifier so you can whitespace fill it and document the regex itself, you can do things the hard way with objects, or you can use something like CPAN and get a module that makes this easy ( Moose is my favourite ).
Sure, Perl is perhaps hard for people, I'll give you that, but it doesn't have to be.
Absolutely agree. I made a similar comment on HN post Regex: a little Clojure DSL for readable, compositional regexes only a few days ago: http://news.ycombinator.com/item?id=1719554
It's also odd that many people after 10 year with Perl have not realized that it has pointers which it calls references. Pointers and references are not so different that they need separate names. There's too much branching of terminology. Pointers are pointers. Even those & things in C++ are pointers as well, they are just a syntactic simplification of pointers for ease in typing. If C++ didn't have references, what it calls references could be implemented in the preprocessor as an alternate syntax for pointers. Oh, references can't be nil in C++? No, they can be if you try hard enough on every compiler I've ever seen.
Lots of people agree as well. Perl has pointers. Call them references if you like. They are pointers.
http://ist.marshall.edu/ist334/perl_pointers.html
This whole sidebar is pretty off topic for this thread though so if you'd like to continue please create a new thread. The post was about finding Perl programmers in LA. Part of the problem is fewer people are embracing Perl nowadays. Part of the reason is that Perl is difficult. I like Perl. I use Perl all the time. I also recognize that, like C++, Perl can be a pain in the ass for people, and there are much easier languages to read and write in which work just as well for things like basic web programming. So as a result people learn those other things more nowadays and not so many adopt Perl. That's not hating on Perl, that's just explaining why the dude can't as easily find his Perl programmers (for whatever lowball salary he is offering, which is not stated) in LA anymore.
Please perform pointer arithmetic or demonstrate the pointer/array equivalence with references or write a garbage collection system which uses pointer counting.
When you've finished, demonstrate effective and type-safe autovivification with pointers.
Finally, use references (sorry, pointers) to stack-allocated variables in C and create an object system based on closures.
I'm actually a Los Angeles Perl developer and I keep telling my HR department to either look for college kids with basically no professional programming experience at all, or senior candidates that they're willing to pay at least $90,000. Looking for "some Perl programmer guy" with some experience that you're looking to pay $70,000 is pointless, because they don't exist.
Perl's lack of a "sexy web startup framework" (e.g. Rails) essentially wiped out a whole "generation" of developers. I'll be the first to admit it's a lot harder to bang out your brilliant "It's like Facebook... but for cats!" startup idea in Perl and its respective frameworks. If you want a decent foundation, you'll use something like Rails or Django. If you just want to bang it out, you'll just inline some crappy PHP code in your HTML. Eventually your company will grow, you'll have different kinds of problems to worry about, like, "this third-party partner doesn't have an API so I need to write a spider that logs into their UI and scrapes the data we need" or "I need to parse this DB log to figure out the frequency of SELECT queries," but since 97% of startups[1] don't ever get to that point, Perl didn't get a lot of love in 2005-2007. After all, we're on Hacker News, not Mid-Sized Company News.
So if you were a Perl hacker in 2004, 2005, you either loved the flexibility and "whipitupitude" Perl gave you for your back-end operations, and now it's 5 years later and you're a senior engineer looking for a commensurate salary. Or you decided to crank out CatBook in RoR until Zuckerberg sued you into oblivion and then you just got another Ruby job afterwards.
For what it's worth, I would encourage the HR departments that Randall mentions to look at new college grads. More than any other language, I feel it's one of the easiest languages to learn regardless of your previous experience, mainly because of TMTOWTDI[2] you can write it in whatever syntax format you're already experienced in. I see a lot of college kids who came from Java and at first their code is full of HammerFactorySchematicFactorySchematicFactories, and while it's pretty silly, it'll work until they learn better, and in three months they're essentially as productive as the theoretical mid-level Perl programmer anyway.
[1] This statistic is POOMA[3].
[2] There's More Than One Way To Do It
[3] Pulled Out Of My Ass
Actually, if I found myself looking for a job I'd consider taking $70k, even though I'm a senior level guy and that would be quite a pay cut from what I now get. The big factors would be the stability of the company, how good its benefits are (including 401k matching), and reasonable flexibility in work hours.
The reason for this is that I'm 50, and I'd want the job to be my last job before retirement. If a job has a very good chance of being able to take me to retirement age, and letting me grow my 401k a good amount, that would be more attractive to me than a job that pays more now, but that I can't foresee lasting 12-17 years.
also, i'd bet more people moved from Perl to Python, than the reverse, since the 90's
I'm a Perl developer with 11 years experience who's been watching the job boards with the intent to relocate to a new city soon (I'm looking all over the US) but I'm not seeing that many Perl jobs anywhere. PHP, Python and Ruby look like a much hotter skills right now based on my unscientific observation.
Another thought is that like me, other Perl developers are worried about getting stuck in a shrinking specialty and are actively seeking non-perl jobs to strengthen their career. That said, I'm still open to perl and willing to relocate so if your company needs an experienced Perl guy you can find my email address in my HN profile.
Many people underestimate the capabilities of the PERL MVC frameworks such as CGI::Application + Moose and the other ones.
I can bang out a proper MVC templated project with a proper OO structure and Beanstalk MQ backend for long running jobs with an AJAX interface that'll scale in about week. No sweat.
These tools make the recent Diaspora fiasco non-existant. They take of sanity checking, access checking, etc. at a lower level and you implement features in higher level classes. (For example I can store JSON in a DB column and automatically parse it when it's accesed like: $mytable->myjson->{'myvalue'} )
Need a barcode reader? Need a SOAP/JSON/etc library? Need clean database access API? Need a printing library? Need a PSD library? All in CPAN.
I wouldn't touch Rails with a 10 foot pole. PHP blows chunks. I'm able to be picky when it comes to jobs
I've gotten my PERL jobs through craigslist. I'm honestly not aware of a better medium to find PERL jobs. Been programming in PERL since I was 14 (so 10 years) and I'm so happy I don't have to sweat for a job. I'm actually currently living off my previous job's savings because it paid that well.
Also note that I never even finished High School.
In short, I don't know why they haven't been able to find PERL programmers. I guess because the newer generation of developers don't realize how awesome it is.
PS: Looking for a short-term PERL project in Los Angeles, check out my resume: http://careers.stackoverflow.com/therevoltingx
I say this only because you give the illusion of knowing something about what you are talking about, and its merely sad to me that you can use Perl for 10 years and never learn this.
( And sadly, not knowing Perl is not an acronym looks bad to people who know different, and thus instantly assume you're not very experienced in Perl )
Note, I'm well aware that PERL is not an acronym. I ALWAYS spell it like that because I like to make it pop in my sentences. Frankly, if an employer is turned away by the way I spell PERL then I don't want to work for them.
My work speaks for itself.
At that point it's not 'savvy' people who know that, but silly people who have too much time to complain or notice small things like that. Possibly managers or scripters, not engineers who go only by code, architecture, etc.
Check out perlfaq1 if you doubt me.
I guarantee you that there is no shortage of good developers who's primary language is not English who would love to work with chromatic.
However, I do appreciate and will take your advice into consideration. I do only talk to my immediate co-workers about code, and 90% of my code is closed-source.
You can be right and you can be stubborn, but I respect that when you're stubborn and right and not merely stubborn because you want to be right.
Perl is not only not the sexiest/hottest language, but watching and waiting for Perl6 and getting the OO model cleaned up is like waiting for "Duke Nukem Forever". So do you really want to ride on that train? Do you think it will look good on your resume, improve your skill set, or help you think in new and better ways? For all practical purposes the language is dead (FINE, a perl6 implementation is out, but still if the growth is that slow it IS all but dead).
I get offers pretty much constantly to do work in Python, Ruby, and even Java. It would take a lot to make me want to backtrack to an environment that wouldn't help me to grow and evolve as a developer. So the answer for me was "No thanks, thats not really what I want to be doing".