Maintaining a Programming Journal

One of the most helpful things you can do when programming is to maintain a Programming Journal.

1) It helps to record your struggle with learning the material and gives you a way of reviewing your progress

2) Properly maintained it will act as a way of archiving your experience, especially if you review it as you go along and bring along an associated Tricks Of The Trade Journal in which you record Bug Fixes, Discoveries, Programming Nuggets, Language Idioms and Patterns.

3) Long term it is your most valuable resource when it comes to understanding your own productivity and hence being able to estimate how long it will take you to do various things.  This ability is invaluable to you since it allows you to meaningfully plan your work.

EXAMPLE:  A Programming Journal, like any journal, is a textual record of your travels through time and space, in this case Cyberspace.  The following in Courier gives an example of Program Journaling

Name: Ray Schneider
Header: Chapter One

11:09 1/26:
Opened BlueJ and the shapes project
Ex 1.1 -- Completed 11:14
Ex 1.2 -- Completed 11:16 calling make invisible twice made it disappear first and then it stayed gone on second try. 11:17
Ex 1.3 -- moved slowMoveVertical(25) and it moved slowly then tried a negative number to moveHorizontal(-70) 70 units to left which moved the circle off the screen. 11:20
Ex 1.4 -- after moving it back changed color to red 11:21
Ex 1.5 -- try an unspecified color: gave it "brown" and it turned "black" so presumably "black" is the default color -- made it red again 11:22
Ex 1.6 -- color without quotes gave Error: cannot find symbol -- variable green 11:23
Ex 1.7-- fooled around making things moving them and changing their size -- triangle requires two parameters 11:27
Ex 1.8 -- moved square left with inspector open changes x coordinate by 10 units 11:29
Ex 1.9 -- moved stuff around until I got the picture below 11:36

Then I used the inspector to look at the properties.
11:36 1/26 Finished
SUMMARY -- Completed Exercises 1.1 to 1.9
Total Time: 27 minutes 11:37

 

GENERAL FORMAT -- Programmer's Journal Report

HEADER -- Name and Title
SET OF ELEMENTS of Form
    OPENING TIME,DATE: ex. 11:55 1/26/2006 (yr. optional if year is commonly understood or given earlier)
    SET OF ITEM# ex. Ex 1.5 -- where there is a natural progression such as Exercises or Tasks just give the task title
        Often this is followed by some separator symbol such as -- or just some spaces and COMMENTARY until
    CLOSING TIME,DATE when work in a specific interval is completed. 
AFTER SET OF ELEMENTS IS COMPLETED -- say all the Exercises in a Chapter, or the Task in a Program
SUMMARY --
    SUMMARY NARRATIVE -- summarizes what was accomplished followed by METRICS
    METRICS -- specifically the # of Items or Units or whatever were accomplished and TOTAL TIME
END