in reply to Where does one get experience?

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.

Replies are listed 'Best First'.
Re: Re: Where does one get experience?
by sauoq (Abbot) on Dec 24, 2003 at 21:12 UTC
    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.

        Why does this forum always attract replies like this?

        Replies like what, exactly? You seem to be complaining that someone has disagreed with you but disagreement is hardly unique to "this forum."

        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?

        I would recommend a novice go through at least some of the licenses at opensource.org and choose one that seems compatible with his philosophy.I think most would agree that making an educated decision is a wiser approach than blindly following the advice found in an anonymous post on a web site.

        Or go with the main choice that's the core of the free software movement today?

        The "main" or most popular choice isn't necessarily the best. If it was, we could reason that McDonalds makes the best burgers in the world. Or Microsoft, the best OS.

        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.

        Oh? I would think it has something to do with the dedication and skill of the people involved rather than the license. If it really has everything to do with the license, then how do you explain the success of BerkeleyDB, BIND, FreeBSD, OpenBSD, Mozilla, NetBSD Postfix, PostgreSQL, Python, Sendmail, the X Window System and countless other projects from Apache to Zlib that aren't distributed under the GPL?

        Placing this aside, there's no reason to pollute a simple thread with such complications.

        If you want dumbed-down threads you might consider looking elsewhere.

        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.

        You have nothing to worry about because, on the assumption that your logic errors aren't restricted to this thread, I'd never let you anywhere near my code anyway. ;-)

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

        Okay, I'll leave that salient point out of the discussion at your request.

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