Sunday, October 6, 2013

One way to handle all the information of the programmer

Checklist

To check if you need to read this post you should have several of the following characteristics:
  • You are nearly all day at a computer
  • You manage several projects simultaneously
  • You record some pieces of code or data
  • You collect and read several documents in different formats: pdfs, docs, xlsx, etc and take notes of the main parts
  • You are subscribed to several RSS
  • You collect url links to pages that could possibly be useful in the future.

Problem

Day by day we get too much information. this is the reason why we need to arrange it to be able to handle and process it in a better way.
Taking into account that our finite resource is time; and therefore will generate many bottlenecks in the way of our professional development; we need to take control of the time that we dedicate to each of our tasks to align its use with our objectives to medium and long term.
To solve or at least alleviate this problem I developed ATaskBucket which is a desktop program that helps us to organize and handle all the information that we have.

Steps to keep organized all our information.

At the beginning we must do the following:

  1. Identify/Create the main repositories Buckets in which we can place all our tasks. These repositories must be hierarchical
  2. Identify/Create the major tasks of each bucket. Time should be set for these tasks to be executed.
  3. Each bucket/task can have associated one or more resources (files)
  4. For each task at least create the following files:
    • Notes.txt : It will contain any note related to the task.
    • Tasks.task : It will contain the small tasks that come out in the process of developing the main task.

In the day to day

  1. Use the dashboard to see the tasks assigned to be made that day. This dashboard will display the tasks that were created as:
    • asap
    • daily
    • weekly (if the day matches with the current one)
    • monthtly (if the date matches with the current one)
    • at (If it was created to be executed that current date)
  2. Before you start to perform some task click Start. This way we mark the start of the task and we can initialize the timer and keep track of the time taken to execute a task. When you need to perform another task you can click on:
    • stop (If you wish to stop the execution of the task),
    • finish (If you already finished executing the task),
    • pospone (If we want to postpone the task for another day)

Weekend review.

Check the time spent on tasks and buckets, so that we can:
  1. Know:
    • How much time we spent on each bucket
    • How much time we spent on each task
    • In which tasks we spent our time in this week
    • Our pattern of execution of tasks
  2. Set goals such as:
    • The next week I will devote more time to this bucket
    • I will avoid wasting time on this another bucket
  3. Modify the periodicity of the tasks:
    • This task should have a periodicity of daily (so that it appears in our daily dashboard)
    • This task should have a "anytime" periodicity (so that it does not appear in our dashboard, unless we add explicitly)

Tools

  1. GoTo: It allows us to show another task at any time.
  2. Full Text Search: It allows us to search in the data of the buckets, the tasks and all the resources associated with them using full text search
  3. Save information from pdfs that we are reading. For instance, we can save the page where we stayed, or the zoom with which normally we read.
  4. Feeds Reader. It allows us to subscribe to RSS and see the titles of the entries.

Cloud Friendly

The application saves all of the information in a directory; in this way if we make this directory a directory managed by DropBox, Google Drive or other similar; all of our information will be in the cloud and you can have access to it from any computer.

Example of structure

We can use the following structure :

For general tasks (B: Bucket, T:Task):

(B) General
    (T) Meals
    (T) Breaks

For reading assignments (B: Bucket, T:Task, R:Resource):

(B) Reading
    (B) General
        (T) News
        (T) Rss
    (B) Programming
        (T) Read about JQuery
            (R) Notes.txt (Here we can put some excerpts that are interesting for us)
            (R) Novice to Ninja.pdf
        (T) Read about Solr
            (R) Notes.txt

For writing assignments (B: Bucket, T:Task, R:Resource):

(B) Writing
    (B) Programming
        (B) Aplication Design
            (T) Write about DDD applied
    (B) Managment
        (T) Write about time managment
            (R) Blog Entry.md

To handle the tasks of a project (B: Bucket, T:Task, R:Resource):

(B) Project Name 
    (B) Phase I
        (T) Development
            (R) Notes.txt  (Here we can put some things that we want to remember)
            (R) Tasks.task (Here we can put the specific tasks that we are doing each day.)
        (T) Review
            (R) Notes.txt (Here we can put the observations that we found at the time of reviewing the progress of the project)
        (T) Quality Assurance
            (R) QA Report