Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??

Along the same lines, I suggest creating a set of small projects that you typically implement after you go through the basic samples associated with a given language's tutorials.

For example, here are a few that I try my hand at before I claim I'm proficient in a new language:

  • A Report Disk Status appropriate for the OS you're working on. For example, I do a "list all storage resources, including their status, drive type, total space, space available," and so on. In GUI environments, this gets thrown into a summary grid. In console windows (or STDOUT-style outputs), it's dumped as a report.

  • A simple port of the Yahtzee game from Parker Brothers. Again, this is appropriate for the available interface (e.g. GUI vs console/STDOUT).

  • A simple port of the card game known as "Red Dog" or "Acey-Deucy." (There's a story behind this, but I won't tell it here. Suffice it to say that the game helped pay for my first laser printer.)

  • If the environment provides Internet services and related-interfaces like POP3, I do a quick-and-dirty polling device to report any new messages on my primary email server.

  • A simple address book suitable for an unknown amount of telephone numbers, addresses, and/or email addresses. (This usually gets me into the available database tools pretty quickly, not to mention the reporting skills appropriate for the development environment.)

  • A contact management application designed to track contacts (e.g. phone calls, email messages, etc) from the people listed in the above address book. (Multi-table techniques, queries, etc.)

  • A Phone Message tracking system like the little pre-printed slips of paper. It also taps into the Address Book.

  • An Employeer Roster/Callboard, e.g. "Who works here and are they in the office?" This was first written to support a consultancy I worked at, where everyone was in and out of the office on an irregular basis and we never knew how to respond to their phone calls, except by adding a new message to the previous application.

  • A Personal Task Manager, e.g. "What do I need to do today and what did I forget to do last week?" (First created to help me submit accurate status reports when I was a project manager several years back.)

  • A data import and analysis project based on one of my first "real-world" programming projects: a dBASE III (not Plus) system that imported telephone use logs, removed invalid phone numbers, and then summarized phone useage by department. It was considered a one-shot by my employer at the time, to help determine how much of the phone bill to bill back to the various departments, but it generated a lot of interesting data. I kept the original data files over the years and have gotten a lot of use out of them.

    Again, this is generally for use with database oriented environments, but I've also used with native structures in in a given language, e.g. C's structs or Pascal-style record types.

A lot depends, of course, on the target language and why I'm learning it. However, I've found that by implementing these (and several other) projects that I already understand and have implemented multiple times, I find I learn the skills I really need far more quickly than I would by tackling solely through assigned tasks, e.g. employer tasks or client projects.

I wonder if anyone else does something similar. If so, care to share the pet projects you use to help make sure you're learning what you need from a new programming language or development tool?

--f


In reply to Re: Do your homework! by footpad
in thread Do your homework! by FoxtrotUniform

Title:
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!
  • 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?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others rifling through the Monastery: (6)
    As of 2015-07-08 04:58 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









      Results (94 votes), past polls