Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Structured Learning of Perl, Important or Not?

by koolgirl (Hermit)
on Nov 29, 2008 at 14:50 UTC ( [id://726796]=perlmeditation: print w/replies, xml ) Need Help??

Hi Monks :). OK, not sure if this is the appropriate section to ask, it seemed the only possibility to me given the options, and I do know as a newbie I've probably made some poor decisions in previous posts, but since my attempt is both sincere and dedicated, I accept my mistakes as par for the course, so please forgive if this is the case here.

I have a concern about the approach I'm taking in learning Perl, and was hoping to perhaps get some advice on whether or not the concern is warranted, one, and what to do if it is thought to be so, two. I am a mother, I work full time and have have quite a hectic life. I will begin school in summer 2009, however at the moment, I am self teaching, until I begin moving towards my bachelor's in comp science. As a result, I find myself, at times, going a week, sometimes even two!, without coding or studying at all. Granted there are plenty of times when I get stuck on a project, glued to the computer, my eyes glaze over, and someone has to literally come and pry me away, but as I said, I do find myself going a few days to a week or so without even looking at any of it.

Now please make no mistake, the dedication is there. I love coding and am fully prepared for all the good and bad it will come along with (my spouse is a developer, and he "goes into the basement" quite often). It's just that, in order to spend a substantial amount of time studying every day, I would have to seriously restructure my, and my children's, entire life, and I am willing to do this if needed, however I'm not sure where this stands in importance to my actual career, development as a hacker, ability, skill and any possible problems that may result from this approach down the line.

I know I can't be the first coder with a family, these worries, and this situation, so I thought I'd ask your opinion. Is a complete restructure of my approach a serious benefit in the pursuit of a career in this field, or is it kind of like riding a bike, once you advance to the next skill level, you're pretty much there? Of course we're all individuals and no one can answer this for me, or make the decision for me, I'm just curious because I do respect your opinions very much, as all of you seem to have achieved greatly in an extensive knowledge of the language.

Please note, I'm asking in concern about my eventual outcome, the type of coder my education is likely to produce, not so much about the time issue. I of course realize I'd have to make serious changes to get it done faster, but, again, this is not my focus at the moment. Also, please do not doubt my dedication because of this, I certainly have it abundantly. If I had two of me, the best one would be stuck to the computer non-stop, trust me! ;)

UPDATE: I just wanted to thank all of you for so many helpful, encouraging and realistic replies. I appreciate each and every one of you who commented on this, as I gained something significant from each reply. Thank you so much, I knew I loved this Monastery for a dam good reason!

Replies are listed 'Best First'.
Re: Structured Learning of Perl, Important or Not?
by CountZero (Bishop) on Nov 29, 2008 at 15:27 UTC
    I think your concerns are not only valid for someone starting a course leading to a bachelor's in comp science. It seems to me that everyone in a similar situation as you (trying to fit in a formal education in a busy life) will meet the same problems. I can still remember when I was a student (still living with my parents then) that going to University was a big change and all I had to take care of was studying, my parents providing everything else. How much more you have to organize your life if you have a family to take care of yourself, I can only guess?

    What I mean is, you cannot do things by halves: be "half" a student and "half" a mother/wife. You will fail miserably at both. You have to be 100% in all and that will be tough, but to me you look someone who will rise to the occasion. In a few years we will tell other Monks: take for example KoolGirl, she was 100% a student and 100% a dedicated family person and 100% a PerlMonk and made a success of it all.

    CountZero

    A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Re: Structured Learning of Perl, Important or Not?
by gwadej (Chaplain) on Nov 29, 2008 at 19:51 UTC

    First of all, some people learn better in a structured environment and some do not. I learned pretty much every programming language I know from books and practice on my own. But, not everyone works that way.

    I've worked with a pretty good range of programmers, and trained or mentored a few of that set. It seems that most of them improved from two practices: reading code and writing code.

    Any time you can, read code. (The Monastery is a good resource for that.) It doesn't matter if the code is great or not so great, learn to understand other people's code and judge good code from bad code. This is one thing that most degree programs don't spend any time on.

    You also need to write code. If you don't try it out, you won't really learn it. You don't always need to write huge systems to learn. Quite a few skills come from writing little pieces of code to make your life easier. (Unfortunately, working on really large systems needs different skills. But, you can learn them later.)

    How you do these things is (slightly) less important. You don't really have to eat and sleep programming to get good at it. But, you also can't expect to get good spending 30 minutes a month. I believe you can improve with dedicated study a few times a week. But, you may need to allocate some time to work an uninterrupted period every now and then to really burn in some of what you learn.

    Unlike the bicycle example, if you stop coding for a couple of years, it will take some time to get back into it. You won't lose it all, but it will take some practice to get your old habits and ways of thinking back.

    The family and degree thing can be quite challenging, as I recall. Focus and determination (and a lot of support from the spouse) really helps. One important thing to keep in mind about the degree was best said by Mark Twain:

    I never let schooling get in the way of my education.

    Good luck and stick with it.

    G. Wade
Re: Structured Learning of Perl, Important or Not?
by missingthepoint (Friar) on Nov 30, 2008 at 14:30 UTC

    I think it's admirable you're considering this, and willing to make conscious choices. I'm in a situation with some similarities and can appreciate the difficulty.

    It looks like you have some questions which have implications for whether to 'restructure' or not:

    I'm not sure where this stands in importance to my actual career, development as a hacker, ability, skill and any possible problems that may result from this approach down the line

    Career: You might find Tim Bunce's job trend graphs interesting. Genarally, being great at Perl can do wonders for your career. I myself have saved lots of time by automating tasks using Perl (which would have been hard-to-impossible to automate in other languages). If availability of jobs is of utmost importance then spending some time on Java might be wise (likely you'll need to for your B.Comp.Sci. anyway)

    Development as a hacker: I can't emphasize enough how much becoming a Perl 'expert' will do for your growth as a hacker. 'Perl is, in intent, a cleaned up and summarized version of that wonderful semi-natural language known as "Unix"' (Larry Wall). As such, it's a great choice for a budding hacker. And since Perl 5, it's even better than that. Perl now shares six of Lisp's seven distinguishing features. When you're ready, take on Dominus' Higher Order Perl. Learning these features of Perl 5 will give you a head start on two very powerful languages: Lisp (including its variants), and Perl 6. And do learn to write readable code.

    I consider 'ability' and 'skill' subsets of 'development as a hacker'.

    Problems: In general, how do you feel about spending (maybe) half of the next 175,200 hours in front of a computer? Imagine yourself at age 48 (happy birthday, BTW :). Would you have any regrets about having spent that much of your life that particular way? Another potential problem I highly recommend you think through is your health. Spending 12 hours a day sitting and typing can mess up your posture, give you RSI, and cause a bunch of other problems. If you go down this path, spend $1000 or so on a damn good chair (you'll recover this cost many times over in income you don't lose because you don't have RSI, hospital bills you don't pay because your spine is healthy, and most of all - not feeling miserable after sitting all day). Yet another thing: do you exercise regularly? Sitting in front of a screen so much will exact a toll on your body. Your body may not require 'payment' for 20 years, but it surely will. Exercising regularly in some form can reduce (or eliminate, if you choose well your exercise) this toll.

    I hope some of that helps you think about the issues involved in this choice.

    Whatever you can do or dream you can, begin it. Boldness has genius, power, and magic in it.
    -- Goethe

    Life is denied by lack of attention,
    whether it be to cleaning windows
    or trying to write a masterpiece...
    -- Nadia Boulanger

      If you go down this path, spend $1000 or so on a damn good chair...

      This may be the single best piece of advice I've seen on the matter. Bad chairs cost me plenty in time, doctor trips, and pain. It was only after I popped for a $900 chair that my back problems evaporated. I was an idiot to talk myself out of spending that much money on a chair for years.

Re: Structured Learning of Perl, Important or Not?
by zentara (Archbishop) on Nov 29, 2008 at 15:50 UTC
    he "goes into the basement" quite often

    Heh heh heh, so do I....thats where the Playboys are stashed. :-)

    If you are looking for an excuse to kick back and relax, instead of studying Perl5, just say to yourself " I may as well wait for Perl6 to be released".....that will buy you a few years of freedom. But seriously, Perl should not be ball-and-chain around your neck, and often taking a break of a few weeks( or even months) can help put things into perspective, and make things clearer.


    I'm not really a human, but I play one on earth Remember How Lucky You Are
      Dam it! That's where my Playboys went...shoulda known! ;)
Re: Structured Learning of Perl, Important or Not?
by c4onastick (Friar) on Nov 30, 2008 at 04:29 UTC

    I too can only imagine what it would be like to try to be a mother and a student concurrently, but I can sympathize. Like gwadej, I learned Perl (and almost every other language I know) entirely from books as well, and I learned them while studying for two other completely unrelated degrees (music and chemical engineering). Now, I'll be the first to admit that I'm no programming expert, but the "little-by-little" approach has definitely allowed me to tackle many things at once. Programming, just like anything else, just requires practice.

    So, how do you find fun problems to program a solution for? I've got a simple motto that pretty much sums up how I practice programming:

    Anything I have to do more than twice, the computer gets to do for me.

    Perl has been the weapon of choice for most of that automation. I've probably written a hundred or so tiny little programs to make life just a little bit easier, both at school and at work. They might not be that much to look at, but each one gives you a bit more experience and most importantly, more practice.

    For example, I taught a section of a "Computing for Engineers" course (teaching things like VBA in Excel, MATLAB, Mathcad, etc.). Each week, the students were to email their assignments to me. Downloading all the attachments from the school's webmail inbox was annoying and after the second time I had to do it, I wrote a little program to do it for me: Downloading Excel Spreadsheets from Web-based Mail.

    Another time, I was bored in Biology (a schedule mix-up forced me to take this freshman class as a super-senior). I was working on a laboratory project to experimentally determine if certain strains of bacteria had the capability to repair damage to their DNA caused by UV radiation and I got to wondering, how many places in the genome are there for damage? Enter Perl: Genome UV Mutation Script -- Critique.

    You'll find that at first it may take you a couple hours to come up with a solution. As you practice more, you'll not only write better Perl, but it'll come to you quicker. I encourage you to post both your challenges and your triumphs here at PerlMonks, this is a fantastic community dedicated to true learning. They (we) are always very helpful and I've learned more here, meditating at the monastery, than I have from any class I've taken or book I've read.

Re: Structured Learning of Perl, Important or Not?
by Zen (Deacon) on Dec 01, 2008 at 15:37 UTC
    The other monks might disagree with me, but there are two kinds of geniuses in this world. Geniuses of hard work and geniuses of innate talent. In college, I saw both. You can get to where you want to go with both paths.

    Can you correctly identify a problem?
    Can you break down a problem into understandable parts?
    Can you write an algorithm to solve said problem?
    Can you understand the limitations of computing?
    Do you know how to go about finding the answers to your questions?

    Geniuses of innate talent will know how to do 1, 2, and 3 without knowing the syntax of any language and even on brand new tasks or projects. Starting work, they do not feel lost or intimidated. 4 you get with education; complexities, architecture, processing, platform knowledge, and more comes with time. I did notice that for those who were not geniuses of innate talent, comp sci was miserable for them. They spent all their time asking for help from others to do their work, did not know or perhaps hadn't the motivation to learn how to find the answers to their own questions (#5, geniuses of hard work must do this), and were generally miserable because everything was a struggle.

    I mean to say all that for you to make sure comp sci is what you want, irregardless of what your hubby does. I do not have an innate talent for a lot of other fields, and I know I'd be unhappy if I felt lost in this one. Good luck in your choices.
      Whats comp sci?

      I like your list, i wish i consulted such a list of
      questions when i began my "career" a few years ago ...

      And this book (its about sysadmins but it covers many habits which regard programmers too i think):
      ISBN 0321492668
Re: Structured Learning of Perl, Important or Not?
by sfink (Deacon) on Dec 02, 2008 at 22:18 UTC
    I don't think there are going to be any easy answers to your situation, so I'll just throw out a few tidbits that might be of some use.

    I have a 21-month old boy and another one on the way in a month. Which makes me wonder how old your child/children are. Because "having a family" means entirely different things depending on whether you mean "I have two children below the age of two" or "I have a teenage son who I think I remember seeing stepping out of his room a week or two ago". If it's closer to the first, then you're absolutely crazy, and the only think I can say is "go ahead and do it all, but don't forget to give the dancing kangaroo a new top hat before you climb into the purple iguana's trailer home. And please, please don't set the weasel on fire again."

    I'd like to point out that learning Perl and getting a BS in CS are not terribly complementary. Academic types have a particular view of things, and in that view, the strengths of Perl are too practical to be relevant to them but the weaknesses strike right in the areas they feel religious certainty about. I'd be afraid to even admit using Perl to many of my teachers. For your eventual career, Perl is very useful, but it's not going to help you get a degree in CS.

    Let me amend that: knowing one language reasonably well will help, because you'll get a general understanding for how things work and how to get things done. You'll also have a way to experiment with the things you're learning. But Perl in particular is not a great one to pick, because it's not going to be the language that your classes use, and your sense of what is easy vs hard is going to be skewed from a CS point of view. Perl is actually better than many of the languages commonly used in academia (Java, I'm looking at you), because it requires you to know more about the underlying system rather than hiding as much as possible so "you don't have to worry about it", but it would still make it easier on you to learn the language that your classes will use (unfortunately, that probably means Java) so that more of it will carry over. If you could learn C or C++, they'd actually teach you even more about how things really work and what to care about, and picking up the necessary level of Java is easy after learning either of those two, but they do take more time and effort to get a handle on.

    I have an MS in CS, by the way, but I had that plus a fair amount of experience before starting the family. Much easier that way. But I'm sure you're aware of that already.

    On the other hand, loving what you're doing is always a better teacher than anything else, and Perl is way more fun than most other languages, so if it's working for you I wouldn't stop it. Also, people who both know a decent amount of CS theory and can get practical stuff done (as you will if you gain a decent grasp of Perl) are enormously valuable. The practical bit unfortunately probably won't come through on a resume, so you'll still have to beg for your first job, but it makes you way more effective in actually getting your job done. And that'll matter in the end.

    Programming is not really something you can pick up a little piece at a time, half an hour a day. Knowing the pieces doesn't help until you figure out how to fit them together. You need concentrated bursts of time, but you can get away with a fair amount of time passing in between those bursts. (You'll pretty quickly get a feel for how long a gap is too long. If you stare at what you wrote the last time and have no clue what it's about or what you were thinking, then it's been too long.)

    Studying isn't like that. As you said, it's something you need to do daily. So I'm not convinced that whatever life restructuring you do right now will carry over to when your classes start. For now, I would guess it would make more sense to take turns -- you get the figurative basement for a few days, then your husband gets it, etc. While working towards your degree, you may have to split it up by time of day.

    Finally, my condolences on marrying a computer geek. Having both of a couple be geeks is a scary situation. I should know; I did the same damn thing.

Re: Structured Learning of Perl, Important or Not?
by talexb (Chancellor) on Dec 03, 2008 at 03:14 UTC

    Learning Perl is something that suited me really well at the time I was doing it, but that was fifteen years after finishing my engineering degree. If you get good at Perl, I'm guessing first year in Comp Sci is going to seem kinda stoopid because you'll be using simpler languages that don't have as many cool features as Perl.

    Having said that, Perl (and this terrific community) will help you sharpen your programming chops before school starts -- and I'm defining programming as developing, testing and deploying software here .. and I should probably throw in documentation and support too.

    You'll probably want to cross-train -- develop some of your own code, but also install some CPAN modules and read through some of the code and see how it's done. Get used to the debugging tools -- I use the Perl debugger when I can, or Log::Log4perl otherwise -- so that when you need them, you'll have those tools to hand right away.

    And visit Perlmonks often, reading lots and lots of nodes -- there are all kinds of nuggets here and there. And, of course, ask questions if you get stuck -- I've been using Perl ten years now and I'm still learning bits and pieces. I learn a lot just by browsing through all of the cool nodes here at the Monastery.

    Nope -- structured learning isn't really that important -- just a sharp mind and an inquisitive soul. A sense of humour helps too. :)

    Alex / talexb / Toronto

    "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds

Re: Structured Learning of Perl, Important or Not?
by mpeever (Friar) on Dec 02, 2008 at 18:17 UTC

    Learning is always good, structured learning gets you (dubious) recognition, but comes at a significant price in money, time, and lost opportunity.

    Computer Science programs vary wildly in quality and focus: some seem intent only on producing a batch of code monkeys every year, others actually teach the mathematical sub-discipline called "Computer Science" that deals with the nature and limits of computation. People from the former schools tend to be good coders (at least until the market shifts away from their preferred language---these days usually Java); people from the latter schools may or may not ever write working code in the "real world".

    The coding community in general is highly tolerant of self-taught programmers; and the Perl community even more so. There is no need to get formal training in CompSci if mastery of Perl and attendant commercial success is your goal. On the other hand, a degree of some sort is definitely a significant factor in finding any gainful employment, and if you must get a degree, you might as well get one in CompSci.

    I personally have very little formal CompSci training (I majored in Physics), but I've been moderately successful as a coder, and very successful as a sysadmin (hence Perl). I frankly like the fact that I work in an industry where accomplishment "out there" means more to hiring managers than what degree I pursued in school. But be aware there is a cost: I am expected to know the relevant bits of a CompSci degree to do my job: I have a lot of money sunk into books, and have taken a lot of time and personal energy to learn my field. That has also included coaching from those who know it better than I.

Re: Structured Learning of Perl, Important or Not?
by moritz (Cardinal) on Dec 03, 2008 at 08:56 UTC
    I'm an autodidact as far as programming goes, and I know many others, and so far I haven't found anything indicating that autodidacts like me (who learn unstructured) are inferior to those who learned programming in university or other courses.

    (Update: Perl is IMHO very well suited for learning in small steps, because just like human languages you can say very much with a small vocabulary, but the programs become more elegant and eloquent when you know more about the grammar and builtin functions).

    That said, I also think that in many areas of computer science (especially in the theory; computability, complexity theory, machine models etc.) a structured and formal approach is vital.

    Usually the practical programming skills are much more important while looking for a job, but for a degree you need both.

Re: Structured Learning of Perl, Important or Not?
by matze77 (Friar) on Dec 03, 2008 at 08:43 UTC

    Since i am in an similar situation ( i got no child so far), but i know how hard it is after 9-10 hours of working to kick myself to do some perl learning (not mentioning the problem its harder to concentrate after a long day then when you are fresh in the morning).

    Time "Problem": For myself this is working. I spent most time when my girlfriend is either "sleeping" (late at night) or when she is watching some "woman soap" on TV. But i find it better if i am completely uninterrupted (late at night mostly :-(). (Luckily she supports me and does more housework when i am learning which is very kind ...)

    Job perspectives: Lately i am watching for job ads and yes there is often "web programming" or explicitily coding skills in Perl are demanded, even for system administration ...

    The approach: Personally I try to do small portions every day, but its sometimes better if you can stay for a few hours on a project and dont have to relearn, finding where you stopped last, this costs me much time, but that may differ for you.

    I think you already got some book good book like Learning Perl? Or watched the videos?

    Perl Videos?
    hth and happy hacking
    MH

    btw: I used code tags for formatting i found no other way ... If this is wrong, and you have a better solution Time to dig deeper into perl and let those nasty "br" tags be implemented automatically for my posts after X characters ;-) ...

      btw: I used code tags for formatting i found no other way ...

      Simply wrap your normal text paragraphs in <p>...</p> tags (and use <br> only when you have a good reason).  In this case, the browser will do the formatting in a way that optimally fits the window width, etc....

      For example, the markup for your "Job perspectives" paragraph would've been:

      <p> Job perspectives:<br /> Lately i am watching for job ads and yes there is often "web programmi +ng" or explicitily coding skills in Perl are demanded, even for system administration ... </p>

      which renders as

      Job perspectives:
      Lately i am watching for job ads and yes there is often "web programming" or explicitily coding skills in Perl are demanded, even for system administration ...

      HTH. Cheers.

Re: Structured Learning of Perl, Important or Not?
by DrHyde (Prior) on Dec 03, 2008 at 11:16 UTC

    I can't help you with figuring out the study/family balance, but ...

    Perl is not a great language to use to learn programming. It's not clear from your post whether you're already a programmer or not - if you are, then great, carry on with perl, you'll find it really useful just for managing your own data even if you never use it for an assignment or commercially. But if you're not already a programmer, then IMO you're better off starting with something lower-level like C or even an assembler, as you'll get a much better feeling for how computers *really* work - and you'll also appreciate languages like perl, Java and Haskell much more when you get to them!

      I agree with you that you will learn more through C or assembler (I had a few steps at both).

      As sure as you learn more about your computer by using linux (with shell ofc) compared to windows, the marketing freaks want us to believe that computers are as easy to use as toasters ... ;-)

      - But - i really was annoyed by C with my first steps (in programming at all), cause it was really hard to get something working, which was bad for motivation to do more.
      (I regret now i actually never really did more, tried harder but i was a young padawan in these days ...)

      Maybe this was also related to the fact that our "instructor" professor was a very good C Programmer but a very bad teacher ...
      and we had to do C "Programming" on paper sheets cause there werent enough computers available for all students, but thats another story.


      I learned much more at a 4 week fulltime intense course at "Basic" Programming with an excellent instructor (who was not the best programmer ;-)).

      But that depends on you i am only (partly) an autodidact but its much easier for me to get a small basic (by a course e.g.) from which i can teach myself.
      hth
Re: Structured Learning of Perl, Important or Not?
by sundialsvc4 (Abbot) on Dec 09, 2008 at 21:52 UTC

    I think that the most-important thing to learn is: what are tools such as Perl used for? What sort of problems are tools like Perl used to solve, and why do real-world businesses have those problems?

    Once a business need has been identified, the manner in which Perl (e.g...) is applied to the problem is either to find or to build a program that fills that need. Most often, "building" makes very heavy use of existing constituent parts, e.g. CPAN packages. Once the solution has been built or installed, it must be applied and maintained (on an ongoing basis...) in the daily data-processing procedures of the business.

    I rather-routinely work in situations where I have to "ramp up" on whatever this-or-that project or client is doing. I might be working with Perl in the morning, and PHP or Java or Ruby in the afternoon. There is a certain art to being able to make that mental transition, but it really goes to show you: "how things change, how things stay the same." The languages are "different," yes, but then again they are not. The tasks being accomplished, and the way in which they are being accomplished using this-or-that tool, are basically the same. The same mistakes are made, too.

    So, if you can "grab ahold of 'the big picture' and never lose sight of it," as an analyst would do, that might be the very best strategy you could use. And here is where your experience ... as a mother and therefore as "manager of a family" ... is definitely relevant. Before you focus on anything, you have to constantly decide what to focus on, how much attention to devote to it, what you're trying to accomplish and whether or not you're doing it, and so on. These "soft skills" are every bit as important as "syntactic prowess."

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://726796]
Approved by Corion
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2024-03-29 06:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found