I've been coding in Perl for about five years now. I'm no expert, but I'm capable of taking a real-world problem and writing a script to address it. Code I've written has been from a two- or three-liner all the way to a 600-line monitoring script supporting a 500-server/1300-service environment. While many would be willing to put it on their resume at that, I'm uncomfortable with doing so.

I'd like to obtain some real-world experience. This is difficult at best, as I work in an IT infrastructure group professionally; professional developers are brought in to address our needs. So, I would expect the open-source world would be a good place to start.

I've perused Sourceforge, looking for a project where my skillsets would be applicable; however, I typically find that the projects that fit my abilities and level are abandoned or not looking for help.

What's a poor acolyte to do?

Replies are listed 'Best First'.
Re: Where does one get experience?
by b10m (Vicar) on Dec 23, 2003 at 21:15 UTC

    First of all, if your question is about improving your resume, please also read Proving I have mad perl skillzzzlz. That's a long thread with -IMHO- valuable information.

    Sourceforge is constantly updating. New projects are added daily (TTBOMK) and so is the Help Wanted System. So you might want to peek at it every now and then to see wheter something nice does show up.

    Of course you can always start your own project. What bugs you, might turn into a great application (I've seen some nice "personal itch" scripts turn into beautiful code). Besides that ... well, why not put your work on your resume? If it's your code, and it works, be proud of it! You might want to make a webpage with all your nifty two- or threeliners. That might be a great help to others aswell, and you could link that page from your resume. It shows what you are able to do and should be a possitive thing during job applications.

    --
    b10m
Re: Where does one get experience?
by Anonymous Monk on Dec 24, 2003 at 05:38 UTC

    These nodes are becoming painful. Here's the new Faq:

    Q: How can I become a better Perl programmer

    A: Become a better programmer by learning the language independent essentials (ie compsci stuff - yes, this is required. No, you don't have to go to university). Write pseudo-code (aka Python) to enforce the principles. After you've done that read through Programming Perl 3rd edition (don't bitch, the book's the best there is out there). Then apply the principles by writing clean, modular code. If you don't get something, do search or RTFM.

    Q: What code should I write to start with?

    A: Something that sounds interesting. If nothing sounds interesting then flip a coin. If you don't like the results pick anything else. If you still can't decide, go study sociology, there's enough half-assed programmers out there already.

    Q: Should I write one-liners?

    A: No, write real-world code. One liners are for people who don't know what the word "maintenance" means. Write real-world, reusable code.

    Q: How can I learn to write code for big, important projects?

    A: Think of what's an important gap that is currently not filled by free software. Write clean, modular code with well thought out interfaces. Proceed to build upon it until it meets your definition of "big." If in doubt, download and read (yes, read) the source for existing free software projects. Do not assume their code is good.

    Q: What license should I release my code under?

    A: The GPL. It is solid, relatively tested, and will ensure your code remains free. Chances are you won't make any money off selling your software commercially (especially if you asked this question). Financially you're probably better off distributing your software for free and selling support for it. Others will also be more willing to offer advice, patches, and publicity for your project.

    That's all the major questions I can think of for now. If I missed any let me know.

    You can know the name of a bird in all the languages of the world, but when you're finished, you'll know absolutely nothing whatever about the bird... So let's look at the bird and see what it's doing -- that's what counts. I learned very early the difference between knowing the name of something and knowing something. - Richard Feynman.

      Q: What code should I write to start with? A: Something that sounds interesting.

      Sounding interesting shouldn't be the only requirement. An understanding of the problem space or the ability to gain that understanding quickly should also be a prerequisite. And, since we are talking about Perl, Perl should be an appropriate language to use to solve the problem.

      Q: Should I write one-liners? A: No, write real-world code. One liners are for people who don't know what the word "maintenance" means. Write real-world, reusable code.

      There is nothing wrong with writing one-liners when they are called for. There are plenty of one-time tasks that can easily be solved in one line. Trying to get a one-liner right can sometimes be educational too. Anything that increases your familiarity with Perl might be considered a good thing. Just don't always resort to a one-liner. If you are going to have to do the same task tomorrow or next week, write script and improve it over time.

      Q: What license should I release my code under? A: The GPL. It is solid, relatively tested, and will ensure your code remains free.

      It continues to be tested and that indicates that its solidity isn't a foregone conclusion. (I imagine it will weather the storm pretty well, but I'm not a lawyer nor would I try to predict the U.S. legal system.) Also, the GPL won't "ensure that your code remains free" any more than a copyright will ensure that your favorite band's newest album won't be shared on Kazaa. It will give you legal recourse, however, if you can prove that someone is in violation. Finally, the GPL is rather restrictive. You might wish to use a BSD style license instead. Really, licensing is a personal choice. Writing your own is probably a very bad idea though. Go to http://www.opensource.org to learn about some good choices. Pick the one that best suits your intentions.

      -sauoq
      "My two cents aren't worth a dime.";
      

        Why does this forum always attract replies like this?

        Yes, nothing is absolute, but throwing in tonnes of exceptions when you're giving advice to a novice doesn't accomplish anything1.

        Do you seriously recommend a novice should go through all the licenses at opensource.org, read them all, and with their infinite legal knowledge, choose the one they like best? Or go with the main choice that's the core of the free software movement today? There's a reason Linux, GCC, and other such projects continue to grow the way they do and it has everything to do with their license. Placing this aside, there's no reason to pollute a simple thread with such complications.

        As for suggesting that learning shouldn't be just about what one finds interesting and using one-liners to learn - I'll leave those as they are and hope I never run into any of your code.

        1 don't bother replying that not everyone reading this is a novice.

Re: Where does one get experience?
by inman (Curate) on Dec 24, 2003 at 10:27 UTC
    While many would be willing to put it on their resume at that, I'm uncomfortable with doing so

    Your CV (resumé) should be an honest account of your experience to date. You should however tailor it to reflect who you are and what you want to do. Your CV will get you through the door to interview stage where a competant interviewer will be able to drill down to discover whether you have the technical skills that they want. If you don't list your Perl experience on your CV then a recruitment agency won't send your CV to employers.

    If you are looking to set your own challenges in order to gain experience, try putting together a websites for a club, charity or small business. A website is accessible and self demonstrating (URL supplied in CV), whereas your 600 line script will have less impact because it's behind the scenes. You can add to the functionality of the website as your experience grows. You can use the website to demonstrate features such as session management, upload management, a Database back-end, usage analysis from log files etc. all of which will impress potential employers while being fun to do.

    Good Luck!

Re: Where does one get experience?
by ysth (Canon) on Dec 24, 2003 at 04:04 UTC
    Code I've written has been from a two- or three-liner all the way to a 600-line monitoring script
    To be truly experienced, you're going to have to work on your one-liner skills :)

    More seriously, what are your interests? That's what will determine what is a good fit for you. Pick a subject and search for open source perl projects concerning it. Sourceforge is not the whole tamale.

    If you are at a loss for a subject, perhaps look into The Phalanx Project. Plenty of work there for anyone.

Re: Where does one get experience?
by coreolyn (Parson) on Dec 24, 2003 at 15:42 UTC

    Be the code luke... *cackle*

    For myself the place to start has always been at home. Living and breathing OS's and languages for the better part of 20 years now. Look at life for what could be automated and do it. Who cares if anyone uses it (for now).

    Most importantly read and memorize the pull out in The Pragmatic Programmer: From Journeyman to Master

    Do these things and you will get to where you are going as it will make it inevitable

    Oh! And read Perlmonks constantly. Even for all my living and breathing OS's and languages, it was this site that helped me to understand the 'art' of coding. The advice and situations described on this site are a gold mine of expirience for a programmer of any language, and the best source of expirience free for the sponging that I have ever come across.

    Best of luck

Re: Where does one get experience?
by blue_cowdawg (Monsignor) on Dec 24, 2003 at 16:04 UTC

        While many would be willing to put it on their resume at that, I'm uncomfortable with doing so.
    Why is that? As a hiring manager I would certainly take that kind of experience into account along with intangibles such as how well do you work in a team and how much of my time do I need to spend keeping you productive.

        So, I would expect the open-source world would be a good place to start.
    I have mixed feelings about that. While working on open source projects is a good way to learn on your own it does not necessarily translate to "experience" in the context of a job interview.

    Have a heart to heart sit down with your manager and let them know what your goals are. Before you do that make sure you know specifically what your goals are and what steps you feel you need to take to get there. If you want to be a full fledged programmer then tell your manager that and have them help you towards that goal.

    The first question that comes to mind when I read your post is "why are they brining in outside talent to solve their programming needs?" There may be a lot of answers to that question amongst which may be a perception on your manager's part that you already have a full plate with your duties on the infrastructure team (as well as your co-workers) and therefore they need the extra help to fill in the gaps. As someone who has managed I've been there and done that. As someone who has (is) been (now) part of an infrastructure team I have gone through the frustration of wanting to work on a really neat project but have ended up watching a consultant do the work instead.

    It is a manager's job (right or wrong) to manage resources within their team to get all the work done.

    Hate to say it, but I've been here too, sometimes the only way to get into a position you want to be in is to change jobs. In 1984 I had to do just that to move from being a field service rep to get into my "first love" which was programmming. Ended up a year later being 50% programmer/50% Unix Admin and leter on 100% Unix Admin.

    Most important thing I can tell you is get your manager to work with you.


    Peter L. Berghold -- Unix Professional
    Peter at Berghold dot Net
       Dog trainer, dog agility exhibitor, brewer of fine Belgian style ales. Happiness is a warm, tired, contented dog curled up at your side and a good Belgian ale in your chalice.
Re: Where does one get experience?
by Art_XIV (Hermit) on Dec 24, 2003 at 14:31 UTC

    I don't know the details or politics of you work situation, but you may want to consider letting your boss/manager know that you'd like to tackle some development tasks. He/she may be perfectly willing or even glad to let you handle jobs that the 'professional' developers might do otherwise.

    Just be honest with yourself and others about what you can and can't handle Only bite off a little more than you can chew. ;)

    Hanlon's Razor - "Never attribute to malice that which can be adequately explained by stupidity"
Re: Where does one get experience?
by zentara (Cardinal) on Dec 24, 2003 at 16:31 UTC
    I'm at about the same point as you. I just want to make a very generalized observation. There are so many people now who all want to "tele-commute" and advertise themselves as "programmers". It's just a glut. To make matters worse, most companies are looking offshore to fill small programmings jobs.

    So what should you do?

    Stop thinking in terms of "how do I get someone else to hire me", and start thinking "what kind of business can I start, which will let me utilize my own skills".

    Think big. Could you start importing from China, warehouse the stuff, and sell it on the net? Is there some other skill you have, like making something REAL, and offer it on the net.

    I saw this tv news segment on this lady who offered herself as "a tele-commuting girl-friday". She had a few clients, pre-scanned all emails for them, shopped online for them, and was in the process of hand-filling out christmas cards for some busy doctor. The doctor UPS'd a box a cards, and an address list to her. She charged $50 per hour.

Re: Where does one get experience?
by podian (Scribe) on Dec 29, 2003 at 19:49 UTC
    If you really like to program, did you consider changing job and become a professional programmer?

    Yes, open source/shareware project will keep you busy!

    Another idea is to see what kind of things you can automate at your current job. Come up with a reasonably big project and then propose that to your manager.