Is Perl really short of newbies?
Before writing about the main topic, let me tell you a little bit about myself, my peers & why I am writing this blog post etc.
How I got into perl?
During my college winter vacations (dec, 2011 to jan, 2012), I was planning to learn something new. I picked up HTML/CSS (because I was quite interested in web development kind of stuff), but soon I realized that front-end stuff is not my forte & I should not spend more of my time on it. I discussed it with my brother & he suggested me to learn Perl.
I started with Beginning perl by Simon Cozens & liked it. Before perl, I did a fair amount of Java (for one of my college projects). I liked Java also, but later I got to know about its drawbacks as a language. I learnt Python & Ruby as well (but have not used them much). I solve Project Euler problems in my free time, for solving those problems, perl is my preferred choice. No one forces me to use Perl for those problems, but I do it on my own wish.
Only thing I dislike about Perl
It's very vast. Yes, I found it very vast, which sometimes create problems. But it's because Perl follows TIMTOWTDI which is both, good & bad.
A little bit about my real peers (who I met in person)
All of my real friends are living in India. Most of them are in Java, PHP & Python. As far as I remember, I have suggested all of them to learn Perl at one or the other point, but I've no idea why they didn't learn Perl.
A little bit about my virtual peers (who I met only on the internet)
I've a long list of virtual peers. Only one of them is from Perl community. Others are from Python. It's very much possible that it's just a co-incidence :).
A little bit about GNOME's Outreach Program for Women
I participated in GNOME's Outreach Program for Women during the last summer. I was shocked/sad to hear that there were very few applicants for Perl projects as compared to other projects. For more details, check out this blog post.
Oh yeah! OSCON started as a Perl conference!
I came to know about it via David E. Wheeler, then I read about it on Wikipedia.
But why do I care?
- I'm also a part of perl community.
- I like perl
- I don't want perl to become Lisp in future. So many people have suggested me to learn lisp, but when I ask them do you know/use lisp, answer is "No, I don't have time to learn it, but it's wonderful" in most of the cases.
But why I'm writing this blog post?
I'm working on a talk on the topic "How to bring more newbies to Perl?" for YAPC::NA, 2014 & OSCON. Honestly speaking, I was short of content :(. I talked to Chris Prather about this. He said that he's been thinking about this since yrs :D. He gave me some valid points too (I've made a little bit of minor changes in these points) :
- Perl hasn't been "popular" for nearly a decade now
- It had, rightfully, a reputation as a horrible language.
- So many people stopped paying attention to Perl when there was a better choice. Rails being the biggest most obvious place.
- I've dealt with a number of people who had previously worked in Perl but haven't touched it since ~2005, all of them remember when Perl's toolchain was painful etc.
- We can do things like promoting modern solutions to problems for bringing thos people back to perl, e.g. this one
After talking to Chris, I asked about it on twitter : "Why there're fewer newbies in perl as compared to other languages? What we can do(as individuals & as community) to overcome this problem?"
I got so many replies, Joel Berger suggested me to write a blog post about it, because he (& me also) were finding it difficult to follow the stuff on twitter. So, I decided to write this blog post.
Summary of the responses I got:
- Bad reputation of older perl
- Not marketed as cool/hip/new enough
- Docs are hard to follow
- Community is not good (which is totally wrong)
- Companies don't want to train newbies, they want perl experts
- *Are* there fewer newbies in Perl? Or, rather: be sure to cite data. I found this data which clearly shows that Perl is less popular than Python, PHP & Ruby. Thanks to Gabor Szabo for publishing it.
- We should give talks at non-perl events to tell newbies about cool things in Perl
Most of the above responses are from people who're doing perl from so many yrs (I think none of them is a newbie as of now, but I might be wrong), one from a person who started with perl 10 yrs ago, but left it because of syntax.
Now, you all can give your views in comments :)
Thanks to everyone who shared his/her views on this topic :)
TIMTOWTDI: That's because there is always more than one way to do it, regardless of language. Perl just acknowledges the truth.
I've been programming in Perl since version 4. Before that, I used awk, sed, and grep. Back then, Perl was a wonderful step up. :)
I think one of the reason Perl is not popular was because at one time, the Perl community got a bad reputation. This was party deserved, and party exaggerated.
To get Perl back among the popular languages will take, I think, a consorted effect by the entire community to show just how wonderful and useful it is.
On your question "are there fewer newbies in Perl", and wanting data to cite, one set of figures can be found in the CPAN Report I put together. The first time author uploads figure has been roughly stable for a number of years.
Another statistic that would be interesting to see is the number of people doing Perl training courses. Though to get that you'd have to solicit the data from as many Perl trainers as you can find.
You could ask O'Reilly if they'd share data on how many copies of Learning Perl they've sold each year since it was first published in 1993. I suspect they might not share that data. Perhaps you could ask them to convert the figures to percentages of the highest year?
Thanks for the comment :). Quite helpful :)
Thanks for sharing that data :). It'd nice to have relative set of data comparing perl with other languages. I'll search for it.
Two Perl trainers I know are Gabor Szabo & Curtis Poe, I'll try to contact both of them.
As far as contacting O'Reilly people, I'll try to do it, but I think they'll take a long time in replying to me or may not even reply to me at all. But I'll try :).
In 2013, my partner Liz and I went to 18 Perl events and we have seen dozens and dozens of newbies.
Quite often, one of the organisers asks the attendees: "please raise your hand if this is the first Perl-event you attend?" Every time, more than a quearter of the attendees raise their hands. Sometimes it is almost all of them, like with the first Polish Perl Workshop and the first Swiss Perl Workshop.
Really, we underestimate the number of newbies. We also underestimate the number of young people who start working with Perl (which is another complaint that I heard: there are no young people), even teenagers. We should not complain so hard about the lack of newbies and young people, we really have a lot of them.
When I speak to these young people and/or newbies, and ask them why they started working with Perl, and the answers were along the lines of "well, I found a script and it just worked, it did the job that had to be done, and it was even rather well documented", or "somebody advised it to me for doing some small things, and I tried it and got excited, it was so easy to learn, it was fast, it just did the job".
Several times the community was the answer: "a friend of mine works with Perl and he tells me stories all the time of what happened now at the latest Perl-event he visited, and one time I joined him, and it was awesome", or "When I ask for help for the language that I used, the answers were often lame, but with Perl, I got more answers than I could bare, and the first ones were so useful, it was almost unbelievable".
With regards to marketing, we could try to write more high-end articles and send them to professional IT-magazines / IT-websites. Try to get mentioned in general articles about programming. Try to get in newspapers every now and then.
For the rest, we do quite a bit of marketing. We have tuits, buttons, stickers, brochures, little camel toys, "we suck at marketing" business cards, every year a nice pile of wonderful books, regular release of new versions of Perl (both Perl 5 and Perl 6), a very active user community / Perl Monger meetings, dozens of Perl-events and whatnot.
In Europe, last year I visited 3 non-specific IT-events and we had a booth (and twice a presentation room) with Perl-stuff: FOSDEM ( https://fosdem.org/2014/schedule/track/perl/ ), FrOScon ( http://programm.froscon.org/2013/schedule/1.html ) and T-DOSE ( https://www.t-dose.org/ ). I know about others doing the same, like having a booth at the huge exhibition CeBIT ( http://szabgab.com/perl-on-cebit.html ). And please don't forget OSCON ( http://www.oscon.com/oscon2014 ), where the Perl-presence is quite large.
Of course, if you see that an IT-event is going to be organised in your (relative) neighbourhood, talk about it online, and ask people to join forces with you to have Perl-presentations be given at the conference, to have a Perl-booth with lots of nice Perl-stuff. There are plenty of people who might help you, and some of them will, at least with publicity.
The attention for Perl at these events ranges from small to enormous. The Perl-devroom at Fosdem is filled to the point we have to stop people from entering, and at the booth all stickers, tuits, buttons and brochurs went away, almost all books sold, and we were hoarse from all the answering questions.
What we can do is give such events more publicity.
Other types of publicity can come from all the companies that use Perl, they could mention a bit more often in their press releases that they use Perl to get the job done ( https://github.com/vmbrasseur/Perl_Companies/blob/master/Perl_Companies.csv ). We could make a new version of the Perl Success Stories ( http://oreilly.com/pub/a/oreilly/perl/news/success_stories.html ).
I am quite happy about how Perl is developing and with the many young people and newbies. More are welcome of course.
I was about to post the exact same thing :) Even in B&D languages like Perl, I bet people write code differently and differ in what they would call the "one true way" for a lot of stuffs.
I would say that Perl was *too* popular back then, due to lack of alternatives. Evidently lots of people did not like Perl (its philosophy, its choice of syntax, etc) but was forced to use it. Now that there are more alternatives, it's only natural that Perl was not as dominant or popular as it used to.
Popular or not, what matters is that the community is vibrant and alive. And people can still create good/competitive solutions with Perl.
Being popular should not be a goal anymore. We should've grown up by now.
B&D languages like *Python*, sorry.
Sorry for such a late response.
Thanks for such detailed comment :)
I've never attended any Perl event, since in India there're almost no Perl events organized(except some Bangalore.pm meetups), so I've less idea about perl newbies at conferences. But what I read on wikipedia about OSCON is contradictory to what you're saying.
Also, I compared newbies in Perl with other similar languages (Python, Ruby, PHP are similar to Perl, afait). I'm not saying that Perl doesn't have any newbies, it has newbies but less than other similar languages, the post (from Gabor's site which I added later on) shows it well.
Links(Perl companies & Perl success stories) & which you've shared are awesome :). Thanks for sharing them :).
Yes, in early days, people moved towards other languages because they found those languages better. But, now perl doesn't have those drawbacks, afait.
I think I agree with this a bit, but not totally:
"Being popular should not be a goal anymore. We should've grown up by now."
PHP & Java are popular, but new people matter a lot for a language's growth, imo.
TMTOWTDI isn't a proper excuse for how much mental overhead is thrown on the new programmer with contexts and references. Just doing some basic things with data you have to pack all of these little rules into your head first. Those warts aren't off in the corner in perl-land, they're practically everywhere.
There's some nice things in perl, but none of the above items are anything I want to deal with, much less suggest for someone who is interested in learning how to program; there's better options today that aren't so constrained by backwards compatibility or just having different things for the sake of it.
The docs and community are fine, but the language itself has some real issues that not everyone is willling to put up with, or appreciated, for the sake of how many things are on the CPAN.
The problem isn't with Perl having newbies. The problem is with Perl keeping newbies that graduate into novices. In this regard, the Perl community is its own worst enemy.
I have been a lead organizer for 7 Perl conferences, and have assisted people in organizing many others. Every year, I see new people at our events. But very seldom do I see people come back for year two. I also read the survey comments. And, I know about the people that leave half-way through an event because they felt too stupid to understand anything being said. Attraction is not our biggest problem. Retention is.
TIMTOWTDI is a wonderful, beautiful idea in much the same way that Socialism is a good idea. In theory, it makes perfect sense. But in reality, once you mix in the ugly reality of the human element, it just doesn't work.
I'm reminded of this every time I see somebody give a talk on why people should be using their CPAN module instead of somebody else's. Or, whenever I see somebody berating a newbie for trying to implement something on their own, when "there's already a module for that."
Want more people in Perl? Step #1 is to stop taking the ones we get and making them feel like dirt.
Also, it wouldn't hurt if there were a sufficient quantity of talks at YAPC that didn't already assume every person in the room already knows Perl.
Programmers are just as trend driven as any other group. They like having new toys. Perl is not a new toy and Perl programmers usually just get on with their work. They're not the new kid on the block and do no do nearly as much self promotion as others.
I wouldn't say the documentation is bad. Compare perl docs to PHP docs. PHP documentation is abysmal - most tutorials for PHP are atrocious. Yet PHP is still very popular.
The one thing perl could use is better documentation for the best path to getting a script onto a web server and running. PHP may provide awful documentation but users know they can just plonk a script on a freebie web server and it does something. They can install a web bundle and save the file to the computer and see it run. If I were a newbie, where is the nice straight forward way to do it in Perl? I'm sure it's out there (I'm not a newb so I've not looked to be honest) but it may not be as easy to find.
The flexibility of perl, the regexes and other stuff in Perl are great but newbs won't be terribly interested in that. They need their section for find out to do basic web stuff that everyone else seems to be doing and then the and look further into perl and find all the other great stuff.
Perl users should do more self promotion too. Yes Perl works and it works well. We know that but you have everyone rehashing the same myths about perl (while probably having no experience of it) and the perl guys are quiet. From the outside it probably looks like the other guys are right and the Perl community is dead because very few people if anyone promote it. Built in perl is a pretty good start. I also like what Sebastian Riedel is doing with Mojolicious and tackling more modern requirements with Mojo while making sure to give the mojo site a nice new fresh look and promoting perl / mojolicious on twitter.
Perl is awesome, it time to be more proud about it.
I am a Perl newbie! :)
I've learning and working with Perl the last year along. For years I was a frontend dev and a friend of mine who works in a company that uses Perl invited me to a junior Perl position. I was learning Ruby just for fun and the perspective of be paid to learning a cool language was really great. Now I am working for the same company.
The people out of the Perl community says that Perl is a hard to learn and ugly language. Today I think that Perl is easy at the first contacts, but hard to dominate as any language.
But the tiny community are a drawback. Here the YAPC Brazil have the public of a small regional front-end event. There are so much more people to encourage someone to learn NodeJS, Java or Ruby than to ask a simple Perl question.
TIMTOWTDI is one of my favorite things of Perl. It's great! I really like being able to choose.
I think that I have luck for be found by a cool team with some Perl Monks who are every day teaching Perl to me. And I know that it is a bless that few people have.
I wish you luck on your talks. And I'm sorry for my possible bad English.
I think I've probably graduated to about intermediate Perler. I've really enjoyed it from the very beginning. I started because it was required for a university class: Text Processing and Analysis (though everyone calls it the Perl class). We learned basic Perl, regular expressions, and a few practical/mathematical principles of text analysis/mining.
I have found Perl to be fascinating and deep, but I do remember running into a lot of gotchas. One I remember from when I started was that you had to tack on a /g to find everything in a regex. Why not match everything by default? Of course I had to learn plenty of other rules, too.
One thing to help newbies that I can think of right away is to get schools to stop installing ActiveState Perl on their Windows machines. Perl became many times more useful to me once I found Strawberry Perl. On the flip side, I feel like I found the true awesomeness of Perl when I finally gained the skills to participate in the community. Gabor put up a YouTube video explaining how to patch a module by forking a GitHub repo. That's when it all clicked for me. The Perl community is extremely active, but I never knew how active until I learned how open source worked.
Getting something with high Kwalitee on CPAN involves a learning curve, as well. I use Dist::Zilla now, but it's not newbie friendly. Dist::Milla, Minilla and other distribution management software will make newbie life a lot easier.
Also, Gabor and Yanick do a great job on the Perl weekly, and there are other blog aggregators out there as well. The Perl class professor recently asked me to make a list of projects I've done to show his class that learning Perl was worth it because they could do cool things. I really just wanted to rummage through the last several Perl Weekly issues and send links from those. I think that getting more people to sign up to it would be good for Perl, since it gives a great cross-section of current events/releases/announcements/other exciting stuff.
I am a happy Perl user as an adjunct of my job in IBM Support. Not exactly a newbie since I wrote my first Perl in 2009 after a 10-12 year absence. My choice of Perl as a target was because all of the Linux/Unix platforms for my component support area had Perl installed - even 10+ year old Perl. And Windows most customers could install Perl fairly easily. That meant the barrier to entry was low.
I am sure that to an expert modern Perl developer, my style is a horrid mash-up of C/C++/REXX and small tidbits of S/390 Assembler. But my results are very useful practically and have greatly enhanced my productivity and helped customers... they can mine the examples to assist their own endeavors.
I'm not sure I envy Python's Schoolanmi of newbys.. will Python become that hated language I learned at school?
Thanks for the analysis.
But to attract newbies to perl, we need to have good course in perl programming in MOOC platform like coursera, edx, udacity.
Note that there are so good easy to follow programming courses in python, scala, java, ruby in those open platforms.
We need the same for perl too asap to attract newbies.
Afterall newbies need to have easy to follow tutorials.
One of the main reason is people are lazy.and the good thing is we can use this laziness for more participation. i gave a simple demo on how to use perlbrew and use cpanm to download modules. i told them not to write a lot of code, but just use cpan to find out a module that caters to their task and use it. It helped them get started with using cpan. i gave them a demo on DBIx::Class (i am a poor presenter) but i wanted to make them understand, the pain on unreadable code.and how DBIx::Class would help them keep things clean. and predictable. but soon realized things went over their head. i started using all technologies on experimental bases, (Gearman, Redis job queue, Catalsyt (a full project was on this), config and test driven development and mind even though i do not write clean tests that cover every scenario, but atleast it helps me in writing more and more code and the need to write clean code. i an working on a project on refactoring the existing codebase to use moose and other aspects of modern perl. i then referred to http://sourcemaking.com/refactoring and started applying them to perl. may be java, but it is helping to break a huge chunk of code into small independent code blocks which not only makes the code clean, but easy to spot the problem. may be i was lucky to have subscribed to perlmaven, and it is really helping me atleast to checkout what is going on. i do a lot of code lift from github and try to implement them. it helps.
I am just getting back into perl (did a lot of cool and appreciated work during college ) after a 10 year hietus but always loved the language.So i guess im a newbie.
I want perl to take of in a big way as i feel the language has a soul and culture that is unique.
I feel we need to take on big projects like /RT/bugzilla /movable type etc to kick some a**.