Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Without going into the argument about "Design Patterns Aren't", you need to make yourself familiar with design patterns. Design Patterns are an alphabet used to make up the words which together become a hacker's phrasebook - the vocabulary of hackology.

Check out Object::PerlDesignPatterns and for an introduction.

Familiarize yourself with Object-Relational Mapping (ORM) and when to (and not to) use it. Take a look at DBIx::Class, Class::DBI, DBIx::Simple, SQL::Abstract (just to name a few things related to the topic).

Spend some time breaking down large problems into simple pieces, like a painter converts the vision of a sunset into curves, color and strokes. Look at the code you write this afternoon or tomorrow morning through the eyes of someone 5 years from now. What will that person need to know about your program? That is what you should document now - while it's still fresh in your mind.

Get comfortable with strict, warnings, Devel::Cover and Test::More. Together they can help you test your code to 100% code coverage.

Read "J2EE In a Nutshell" from cover to cover, two or three times. It might open your eyes to both the benefits and problems of a large cohesive system designed to work together (this is not my direct opinion of J2EE, just something I gleaned from doing so myself).

Read up on "State Machines" and the concepts involved in writing them.

Develop a skill set that allows you to code well in each tier - database, network, business logic, presentation. Read up on Jakarta Struts (O'Reilly has a book on this) and the MVC pattern. This is how web development should be done (not Struts, but MVC). Once you understand MVC, the popular frameworks like Catalyst and Ruby on Rails will make more sense. Your web applications will be predictable and maintainable.

You will get to a point at which no programming task or challenge intimidates you, no matter how complicated it might appear from the surface. You can do all this using your Perl (and whatever for the presentation layer).

Learn how to develop a large application. Although some programming is required, it will become apparent that planning, testing, documentation and communication are all very important and - just like coding - cannot be overlooked.

Read (daily)

Prepare for Perl6 by reading the synopsis documents:

Learn how do deal with SOAP as well as ad-hoc web services.

I could keep going but I won't.

In reply to More than just your Perl skills by jdrago_999
in thread Recommendations for a self-taught Perl programmer by silent11

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and all is quiet...

    How do I use this? | Other CB clients
    Other Users?
    Others scrutinizing the Monastery: (4)
    As of 2018-05-23 23:26 GMT
    Find Nodes?
      Voting Booth?