Front page | perl.beginners |
Postings from September 2009
Re: Perl projects for beginners
From: Tim Bowden
September 7, 2009 02:48
Re: Perl projects for beginners
Message ID: 1252316890.9092.35.camel@mordor
On Mon, 2009-09-07 at 18:12 +0900, Raymond Wan wrote:
> Hi Gabor,
> Gabor Szabo wrote:
> > As I think think the best way to learn Perl is tor practice a lot
> > and the best place to practice is an open source project I wonder
> > how can open source project become more beginner friendly?
> Follow-up to Philip's message...but I didn't reply to his post since I
> wanted to highlight your comment here.
> The best place to learn Perl [or "anything" for that matter] is to
> practice a lot. Agreed. "Best place to practice is an open source
> project" -- oh...I'm not so sure that is true. Let's remove the phrase
> "open source"...even so, I'm not so sure that a project [which
> presumably has more than one person working on it] is the best way to
> learn Perl as you end up with the issues that Philip mentioned...issues
> with software engineering which will end up distracting people.
I'd agree with this. Contributing to a project is well above a
beginners level, unless you're already an accomplished programmer and
looking to pick up Perl as a new skill (in which case your life as a
'Perl beginner' is probably going to be reasonably short). Working on
someone else's code is *difficult* when your a newbie. One of the
'skills' of a newbie is to deliberately write simplistic code with the
idea of building up one piece at a time. That's the sort of code you
*don't* want to put out in public. For example, if your first
introduction to anonymous hash references is someone else's uber smart
nested data structure, you're probably going to be hosed.
Add the complications involved with project management issues (svn...,
code review practices, code standards...) and imho there's just too much
to learn for someone below intermediate coding skills (whatever
intermediate might mean). For my part I wouldn't think of joining a
project until I was comfortable with CPAN, creating modules, debugging
and probably a few other skills. Once there however, definitely an open
source project is a bloody good way to go. I'm not sure if joining an
existing project (with all the complexities involved) is better or worse
than scratching a little itch of your own in public for a first effort
though. I guess that's probably very much an individual thing. Maybe
projects that have 'plugin' type architectures are easier for
intermediate coders to get started on (though that doesn't rule out
complex multiple levels of abstractions which can do in a newbies head).
Maybe a more visible tutorial to 'scratching your first public itch with
Perl' type doc (and it might already be there; I've not looked).
> I think some (of course, not all) universities would teach a language or
> programming first by getting students to work alone. And then a year or
> two later, put them into groups and then that's when the teachers go
> nuts. :-)
I wonder if it's not time well spent to have students doing
git/svn/whatever right from the start (regardless of language)? Just to
get students used to the idea at a very simple level. After all, open
source or not, code repos are something everyone has to get used to at
> There are a lot of beginner books (not just Perl) out there which
> sometimes have "Practice problems" at the end of the chapter. I'm sure
> you could start with those if you want newbies to start with
> something... Of course, a more Perl-oriented book would be ideal.
I find I tend to skip over (or more likely quickly skim) the exercises
at the end of chapters. Yes, I know they are great at reinforcing the
material covered, but I get sidetracked by scratching my own itch.
Those bits I need I tend to write my own 'exercises' till I understand
the feature in question. Still, I suppose they do help some people.
Again, each to their own.
I'm wondering if your really targeting newbies, or rather intermediates
that are 'newbies to a project'? I don't think they're the same.