Sunday May 06, 2007
10:01 PM
What does it mean to "know" Perl?
One of the Bugzilla maintainers posted a blog entry on "The Problems of Perl" (on LiveJournal, love the irony ;)
It's spawned a lot of discussion and some advocacy (ugh, advocacy). One of the points I've seen come up several times is that the author complains about something in Perl, and someone suggests a module that might help, to which the author replies "I'll check that out."
In a few other threads the author has claimed to know Perl pretty well.
In reponse to that a few folks have said "well, if you don't know about Module X you don't know Perl."
This brings up the question of what it means to "know" Perl. Personally, I tend to agree, this blog author really does not know Perl. He may be able to read Perl well, and he may be able to write clean Perl, but that's different from really "knowing" the language.
A programming language is more than the sum of its syntax. In that sense, I know C. But in the sense of actually understanding the lore and spirit of the language, I don't know C at all. But the word "know" is pretty loaded here, and it's easy to interpret in many different ways. Let's try to come up with two different terms.
For someone like this blog author, I'd say that they are "competent" with Perl. They won't be flummoxed trying to read Perl, if you give them a task to code in Perl they can do it without writing something horrible, but they won't do the best possible job either, because they don't know enough to do so.
For the other version of "know", let's say "expert". An expert knows more than the syntax, they know the lore. They're aware of the ongoing community and discussion behind the language. For Perl, a large part of this means being aware of what's on CPAN, and knowing how to use it to solve problems. It probably also means going to mongers meetings, conferences, reading mailing lists, hanging out on Perlmonks or IRC, etc. You don't have to do all of those, and you don't really have to be an active writer/speaker, but you have to have some level of involvement.
Achieving competency should be a pretty quick process for anyone who's competent in another language. Once you've learned the syntax and some core libraries, you can apply your existing design skills to write not-too-horrible code.
But achieving expertise is much harder, and it's an ongoing effort. Right now I'm definitely a Perl expert. If I went away for two years and came back, I'd probably just be competent, and it'd take catching up to become an expert again.
In practical terms, I'd prefer to work with experts than competents, but I'd hire a competent if I had enough experts on the team already to make sure the competents do expert-level work. A team of competents will produce an okay code base, but one that reinvents many wheels, and has a lot of niggling problems.
Unfortunately, it seems like employers can't even distinguish between competent and incompetent, much less between competent and expert. But that's a whole 'nother journal entry.
Re: What does it mean to "know" Perl? (Score:2)
And modest too.
Re: (Score:1)
I myself, would be competent, striving for expert.
:
Re: (Score:2)
--
xoa
Re: (Score:2)
Re: (Score:2)
perl purity? (Score:1)
Re: (Score:1)
Nat Torkington is the person you were thinking of: Seven Stages of a Perl Programmer [frii.com].
Knowing Perl (Score:2)
--
xoa
CPAN Expertise (Score:1)
That was much easier five years ago. By that criteria, I have a difficult time considering myself a Perl expert; it's awfully difficult to
Re: (Score:2)
Re: (Score:1)
It could mean that, or a DBIx plugin, or which Unicode-aware module handles encodings correctly and transparently.
Re: (Score:2)
Re: (Score:2)
That's a little different from staying up to date on what's best. I don't th
Re: (Score:1)
Max's Response (Score:1)
When I first st
Re: (Score:2)
As have been mentioned in various threads, there are solutions to that, including "bundle them manually", PAR, automating the ins
Re: (Score:1)
It's true that it's a problem in any language, though some languages have things like ema
Re: (Score:1)
Except when they don’t (because ¾ of it are optional at compile time).
Re: (Score:2)
As it happens, if I was to w
@JAPH = qw(Hacker Perl Another Just);
print reverse @JAPH;
Re: (Score:1)
Have you looked at the database schema of Bugzilla in any depth?
We're working on custom workflow right now.
Our goal is to be a bug-t
Re: (Score:2)
Six Apart have solved this problem rather nicely by bundling all modules with MovableType [sixapart.com]. It's a breeze to install too.
Off the top of my head, you
Should A Language Require So Much Experience? (Score:1)
It probably takes that for C, as well, although I wouldn't know since my C experience is somewhat limited (although I c
Re: (Score:1)
I'm not entirely sure that that's true, nor even that that's the most importan
Re: (Score:1)
-Max
Re: (Score:2)
I've had a qu
@JAPH = qw(Hacker Perl Another Just);
print reverse @JAPH;