Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Where Do I Go Next?

by perl.j (Pilgrim)
on Jul 16, 2011 at 21:09 UTC ( [id://914881]=perlquestion: print w/replies, xml ) Need Help??

perl.j has asked for the wisdom of the Perl Monks concerning the following question:

Fellow Monks,

I have successfully finished reading Learning Perl (several times over). So where do I go next? A monk once told me I should look at some general computer science (see Re: Perl: For Newbies).

I don't want to go on to a book like Intermediate Perl just yet. I want to keep practicing what I've learned from Learning Perl before I go onto that book.

I also thought about going to a class, but was out of luck. There were no Perl or Computer Science classes within a 50 mile radius of me. My school does not give any Computer Science classes (I'm in High School) so that is not an option either.

My final thought was just rereading Learning Perl again and again until I had the whole book memorized. That sounds pretty boring and I'm sure many will agree with me on that.

After I racked my brain for ideas, I finally decided to consult the Monks. I ask you all for advice on this.

Thanks in advance

Replies are listed 'Best First'.
Re: Where Do I Go Next?
by eyepopslikeamosquito (Archbishop) on Jul 17, 2011 at 00:09 UTC

    I suggest you start at least thinking about the basic skills needed by working developers. My experience with new graduates at our company is that, despite having studied "computer science" for a number of years, there are often gaping holes in their basic, practical software development technique, such as:

    • Always use a revision control system.
    • Use a single-step automated build.
    • Avoid duplication (DRY).
    • Descriptive, explanatory, consistent and regular names.
    • Useful commenting and documentation.
    • Design the module's interface first.
    • Sound domain abstractions.
    • Wise program decomposition.
    • Encapsulation.
    • Highly cohesive, loosely coupled modules.
    • Minimize the exposure of implementation details.
    • Minimize the scope of variables, pragmas, etc.
    • Write components that are testable in isolation.
    • Write the test cases before you write the code.
    • Add new test cases before you start debugging.
    • Establish a rational error handling policy and follow it strictly.
    • "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live" (Damian Conway)
    Many of these tips were taken from On Coding Standards and Code Reviews.

    Many years ago, I was lucky enough to meet Bjarne Stroustrup. I remember him telling me that "you can't learn to ride a bicycle by a correspondence course". That is, becoming a good programmer takes practice, lots of practice. So you will need to find a little project to develop, to practice many of the techniques above. See also code kata.

      I liked the last tip :). This was great help. The only problem I have now is figuring out what to do with all of the info, advice, and tips I'm getting from everyone but I'm sure I can do that myself :).
      A Newbie To Perl
Re: Where Do I Go Next?
by Anonymous Monk on Jul 16, 2011 at 22:05 UTC

    My final thought was just rereading Learning Perl again and again until I had the whole book memorized. That sounds pretty boring and I'm sure many will agree with me on that.

    How many perl program did you create in the course of reading Learning Perl? Did you put them in version control?

    I suggest next, you read http://learn.perl.org/books/beginning-perl/, but this time, do each of the (~3 on avg) exercises listed at the end of chapters 2,3,4,5,6,7,8,11

    After each chapter, after doing the exercises, write a short review, compare it to a similar chapter in Learning Perl. Try to figure out if you learned something new, how you liked the way the information was presented, was the pace better, did you have to unlearn something...

    Next I would go to Perl Exercises: For Beginners :) and first do the .edu computer science courses exercises, then some project euler exercises (say first 10)

    Then I would take a long break, then come back and review your progress, and review some concepts that gave you trouble during the exercises

    Then i would do one or two of the katas -- and put each part into version control

    At this point, I would read through Modern Perl, and explore the modern ways to solve some of the exercises you've done so far -- this is where having lots and lots of little programs in version control helps you :)

    Next I would start solving real problem , and maybe do another euler exercise and a kata in between :)

    Good luck

      Thank You sooo much. The only thing I'm not going to do is "take a long break". I will of course take breaks but they will be short. If I take long breaks I get stupid :). Thanks again for the advice.

        The only thing I'm not going to do is "take a long break". I will of course take breaks but they will be short. If I take long breaks I get stupid :)

        :) By long I mean a more than two days, but no more than two weeks -- getting back up-to-speed after a break requires practice; and well organized notes (cheatsheet)

Re: Where Do I Go Next?
by CountZero (Bishop) on Jul 16, 2011 at 21:47 UTC
    It depends on what you want to do with Perl.

    For instance, if you want do do things with databases, then now should be a good moment to start learning SQL and how relational databases work. If on the other hand, you want to make dynamic websites, a course in HTML and CSS and reading the docs of modules such as CGI, Catalyst or Dancer will be more appropriate.

    Now is the time to start applying what you have learnt. For sure the things you now write will most likely be slow, ugly, inefficient and will re-invent the wheel over and over again, but that is OK. Once you feel up to studying Intermediate Perl, you can revisit your work and improve it.

    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

      Thanks for the advice. I would like to become a "Jack-of-all-trades, Master-of-none, when it comes to Perl. In this case, do you think Intermediate Perl is my next step, or do you think otherwise?

        I think your next step should be some actual programming, so you get some mileage on your odometer.

        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: Where Do I Go Next?
by tinita (Parson) on Jul 16, 2011 at 21:44 UTC
    I don't know if this is the best time to read it, but I recommend "Perl Best Practices" wherever I can. Not because it is a book of rules how to program (it is not) but because it teaches you to think about how you program so that you (and others) can understand your code a year later.
      Thanks for the recommendation.
      A Newbie To Perl
Re: Where Do I Go Next?
by jpl (Monk) on Jul 16, 2011 at 21:54 UTC
    You could do worse than to hang out here. Look through some messages you find interesting, see who makes comments that direct you in useful ways, see other things they have posted, particularly if they have attained the highest levels in the monastery.

      I never actually thought of doing that. This is great advice. Thanks jpl!

Re: Where Do I Go Next?
by ww (Archbishop) on Jul 16, 2011 at 23:50 UTC
    Lesson One in ww's ad hoc, OTTOMH, CS degree program: Remember to search for the info you need.

    Lesson Two, search (as applied to Google): "Computer Science" on-line site:*.edu

    Lesson Three (Reading assignment, as obtained in Lesson Two):

    1. Free Online Course Materials | Electrical Engineering and Computer ...
      ocw.mit.edu › Courses - Cached
      Free open online Electrical Engineering Computer Science course materials from MIT. Lecture notes, exams, audio video lectures, textbooks by MIT professors.
    2. Online Program | Department of Computer Science at Illinois
      cs.illinois.edu/online - Cached
      The program offers a Master in Computer Science degree, online certificate programs related to several different computing areas, and individual courses for ...
    3. Engineering and Computer Science Online | Engineering at Illinois ...
      online.engineering.illinois.edu/ - Cached
      Accredited Engineering Degrees Online at the University of Illinois at Urbana-Champaign (UIUC) online.
    4. Stanford School of Engineering - Stanford Engineering Everywhere
      see.stanford.edu/ - Cached
      ... sequences: the three-course Introduction to Computer Science taken by the majority of Stanford's ... Online social networking with fellow SEE students. ...

    Those are just the top four (non-sponsored ad) hits... in what the nice folks at big G say is a list, at least 10 pages in length. Sure, some of them will require fees or tuition, but some are free... and probably geared for individuals such as yourself.

      Some of the links are just info on different school courses. Not trying to be rude but what am I supposed to read on the 2nd link?

      Other than that though, THANK YOU SOOO MUCH. I found the last link was the most useful. I would have never found these sites. Thanks Again.
      A Newbie To Perl
Re: Where Do I Go Next?
by moritz (Cardinal) on Jul 17, 2011 at 08:48 UTC

    Write Code. Write code that you actually use. Write code that scratches your own itches.

    Find some small repetitive task that you often perform, and make your life easier by doing it in Perl.

    Seriously, there's nothing better for learning programming than programming.

    When you write code, you learn the things that actually matter for you, not the things that some book author thought that matter for you.

    If you misunderstood something, your code won't work, and you have to investigate. If you misunderstood something in the book, you will memorize it the way you wrongly understood upon rereading.

    If you write code, you will also find that some things are just cumbersome to do, and you will appreciate things like reference once you read about them in the more advanced books, because they will actually make your life easier.

    Write code. Write code you use. Write code.

      Only reason I never did this before is because I had nothing to practice on. Thanks for the great advice though.
      A Newbie To Perl
Re: Where Do I Go Next?
by JavaFan (Canon) on Jul 16, 2011 at 22:03 UTC
    I'd recommend "Advanced Programming in the UNIX Environment". It has learned me more about programming in Perl than all of the 40+ Perl books on my bookshelf combined.
      It seems like an excellent book but I think that may be a little too advanced for me right now. I will definitely come back to it though.
Re: Where Do I Go Next?
by nbezzala (Scribe) on Sep 04, 2011 at 11:47 UTC

    You could try doing something simple on one of these projects.

    Bugzilla
    Padre

Re: Where Do I Go Next?
by saurabh2k26 (Initiate) on Jan 01, 2015 at 14:15 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://914881]
Approved by tinita
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (2)
As of 2024-04-19 19:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found