The world as it is today is full of different technologies and programming languages. Should we as monks, the backbone of perl users, FOCUS on learning and implementing perl fully, down into all of it's complexities? Or, do we BALANCE our knowledge of perl with other languages?

What have been your experiences?

How has your choice effected you as a programmer a person and as an employee?


Replies are listed 'Best First'.
Re: perl : focus or balance
by Abigail-II (Bishop) on Aug 06, 2002 at 09:31 UTC
    You're a better programmer if you don't make the choice and do both. Generalists are useful, but general specialists are better. There isn't a market for people who know many things, but don't know anything very well.

    You should know a lot of things, and at least now some things very well.


      I have to humbly agree with Abigail-II on this. Learn much about everything you can, in order to improve what you have committed yourself to do best.

      No offense intended by the following pontification but, I think that life will prove that the only way to be a true master of any one thing is, to steer between both obstacles to personal growth: obsession (which is slavery, and makes an empty man) and, distraction (which is mediocrity, and makes a shallow man).
      (added 3 words + bold tags)

Re: perl : focus or balance
by rattusillegitimus (Friar) on Aug 06, 2002 at 05:29 UTC

    Most definitely balance, imnsho. As Heinlein wrote, "specialization is for insects."

    While I'm best at programming in Perl, I've got experience here and there with other languages, and I believe knowing some of each has definitely improved my ability to code in each of them. For example, when I approach a coding problem at work (VBScript ASP pages or VBA in MS Access), if I get stuck, I can work around the block by figuring out how to do the same problem in Perl. The Perl solution itself cannot be applied to work issues directly, as we're a pure MS shop, but it often suggests the VBScript solution. In addition, I almost always want to take something I've done at work and figure out how I'd do the same thing in Perl at home. This pushes me to constantly add to my Perl knowledge, as well as learn additional technologies. That's exactly how I first got going with XML, for instance.

    The balance has an even greater impact on me as a person. Knowledge for its own sake has always been important to me, so I remain forever curious about the world rather then getting locked into a single straightlaced world-view. I feel this makes me much more well-rounded than a lot of people I know with very clearly defined (focused) interests.

    The easiest place for me to see the effect of striving for balance has actually been as an employee. At my last job, I was very focused on two tasks: maintaining a single client's web presence using a legacy version of the software we put together and developing the final version of that software. Because I was stuck in this rut, a lot of the emerging technologies passed me by and I found when I was laid off that I had become a lot less employable than I should have been. I immediately broadened my skillset as much as I could with personal projects and have done my best to drive some of the projects at work in directions that would let me learn new things as well.

    Hrmm, I've rambled on enough that I'm losing track of what I'm saying so I'll close with one final thought. I've found over the years that the more you can abstract your knowledge from a single technology or programming language, the better off you'll be when the technology (or world) evolves.

    -rattus, off to bed

    He seemed like such a nice guy to his neighbors / Kept to himself and never bothered them with favors
    - Jefferson Airplane, "Assassin"

      I agree completely!

      I was fortunate(?) enough to still be employed (stuck in a dead-end, high stress job) when I realized my skills were outdated. Took me an extra six months of hard work to get out of that job and into one I liked.

      This question reminded me of a movie scene where a Scots actor, playing an Egyptian character, was rowing a boat and singing "B - A - L - A - N - C - E" while a French actor, playing a Scotsman in this film, was standing on the bow and trying not to fall in the water.

        ++bilfurd for tying the thread to Highlander!

Re: perl : focus or balance
by FoxtrotUniform (Prior) on Aug 06, 2002 at 02:35 UTC

    For me: balance, no question.

    Perl's a wonderful language until you run into one of its limitations, or a production environment that doesn't have Perl (and won't anytime soon, unless the sysadmin gets hit by a truck), or co-workers who don't know the language and can't get up to speed in time to meet a deadline, or any number of other contingencies. It's nice to have a backup plan.

    That said, my language experience is mostly confined to two languages, Perl and C/C++. (I include C++ because the C++ I write looks a lot like "C with classes".) In both cases, I'm quite comfortable with using the language, but not necessarily with hacking it. (I can decipher most obfus, and answer most of my co-workers' Perl questions, but I know nearly nothing about perlguts, for instance.) I'm planning to add Common LISP, or maybe Scheme, to that list in the near future, because I'm starting to feel like I've run out of tricks.

    In addition to the two languages that I'm comfortable coding in, I also know bits and pieces of many others (Haskell and Prolog being the most interesting), which occasionally gives me an edge when I'm presented with a problem that fits one of them perfectly. (That happens most often with SQL.)

    F o x t r o t U n i f o r m
    Found a typo in this node? /msg me

      My take is that you have to Specialize in programming. If you understand technology and programming then learning perl or any other programming language is just learning the different implementations of the same things. Then learning the particular quirks. I've seen some who are experts in one or two things and that's well and good. However, I've also known the people who really "know" programming and they can do multiple languages at "expert" level. So I say, be an expert programmer and specialize in languages. Me personally, I'm an Oracle DBA, webmaster, 3d artist, perl programmer, unix admin, MCSE, etc etc etc. If you build your computing foundation from the ground up, learning new technologies is easy. It's just different implementations of existing technologies and every once in a while you get a brand new technology, but it's still going to be based on your preexisting knowledge. This disjointed poorly formed response brought to you by me.
Re: perl : focus or balance
by LD2 (Curate) on Aug 06, 2002 at 05:02 UTC
    I have to agree with FoxtrotUniform - balance is key as both a programmer and employee. From my experience, knowing other languages as well as perl - has allowed me to view my applications and algorithems in a different light. As it has been said before in the Monastery, different languages allow a programmer advantages and disadvantages in certain situations. One may use perl in a backend process or use C++ to control a machine, etc. I don't believe that one should know a little in many languages or master only one language and reject other technologies; but rather grow as a programmer and an employee and use the best technology for the situation (if you're allowed the freedom...). Of course, that doesn't mean that one shouldn't learn perl fully and understand the complexities.. but one shouldn't reject other technologies in place of one language.
Re: perl : focus or balance
by Marza (Vicar) on Aug 06, 2002 at 06:18 UTC

    Weighing in under the me too banner. FoxtrotUniform is correct. Balance above all or as I mean a generalist.

    You have to know what is going on in the industry. As things change all the time and *Shock* even Perl might get replaced. Knowing many things/languages will insolate you from the downturns of business. If there are layoffs and you know multiple languages and the other guy was a specialist in Perl. I would bet they would keep you.

    I once made the mistake of specialising on a mainframe and mastering a scripting language as well as the OS. Well that computer is no longer made and nobody cares that I was really good at it.


Re: perl : focus or balance
by hsmyers (Canon) on Aug 06, 2002 at 13:26 UTC

    You said:

    ...FOCUS on learning and implementing perl fully, down into all of it's complexities? Or, do we BALANCE...
    to which I can only say, it is not an Or, it is an And!


    "Never try to teach a pig to wastes your time and it annoys the pig."
      Right On!! :) Also, it seems that most programmers I know.. like to learn new technologies. They don't like to be locked down to one language. Either from idle curiousity or just the need to learn new technology - most want to grow in several directions, while not forgetting where they started from.

      - Moon
Re: perl : focus or balance
by Daruma (Curate) on Aug 06, 2002 at 17:01 UTC
    Within my company, I'm one of two employees out of around 450 that pays any attention to Perl. I have definitely focused my programming language time on Perl. Programming is not my primary responsibility in my work, so much of my learning is done at home.

    As far as the rest of my working experience goes, I have a balance between being a Functional Consultant and a Technical Consultant. The balance is quite nice. (I am able to log many billable hours because of this very balance.) I have two areas within the Technical side and two areas within the Functional side wherein I am considered expert level. Those are my areas of specialization.

    So, I guess I would say that I have a Balance between Balance and Specialization.

Re: perl : focus or balance
by mjeaton (Hermit) on Aug 07, 2002 at 02:16 UTC
    I have to agree with Balance.

    A couple of quick stories that relate to this:
    I taught some programming courses at a local community college. One of my students work(ed) for the state government in some type of programming position -- anyway...he was taking my class because, after 20 years of service, he was being "offered" early retirement. When I asked him about it, he said that there really wasn't a choice in the matter because in the 20 years he was there, he specialized in one thing and one thing only. Unfortunately, the technology he specialized in was being replaced. He was hoping to resurrect his career by learning something new. In my opinion, he was about 20 years too late for that, although I do commend him for his effort.

    The second story occurred at a consulting firm I worked for. The "top dog" consultant and I actually got into several heated discussions because I was trying to bring other languages and technologies into our skillset -- he said on several occasions that the developers should specialize in one thing and leave it at that -- of course, this was a Microsoft shop, so he was pushing VB/VBScript really hard.

    I came in with my perl and Vim and tried to show where other technologies could fit. Another consultant joined the team and he was a big fan of Python. He heard the same "specialize" crap from the so-called leader of the team.

    The idea of putting all my eggs in one basket just doesn't appeal to me.