Plan Convention

Improvements? Suggestions? email dna@hola.org

Consistent and Minimal

Most important rules:
Be consistent.
Be minimal.
Read these sections carefully.

Version plan

The version plan goal is to report your progress during the day. Your current task should be shortly described in the version plan header. All other tasks in the body of the version plan should be according to the version plan legend.

Header

The current task should be logged in the version plan header, together with a rough estimation of the task's duration.

stanislav (Stanislav Klyukin) infra/nir: show loading in graph header
stanislav (Stanislav Klyukin) infra/nir: show loading in graph header 5d
stanislav (Stanislav Klyukin) infra/nir: show loading in all graphs 5D
stanislav (Stanislav Klyukin) infra/nir: show loading in graph header 1D

In case the task is less than a day, include your next task.

ekaterina (Ekaterina Perepelitsa) design/nir: lum icon 2H
ekaterina (Ekaterina Perepelitsa) design/nir: lum icon 2H then hola icon 1D

In case the line is too long, make sure to add two (2) spaces at the start of the next line.

ekaterina (Ekaterina Perepelitsa) design/nir: hola cdn android and ios sdk
pages redesign 2H then hola cdn banners redesign 1D
ekaterina (Ekaterina Perepelitsa) design/nir: hola cdn android and ios sdk
  pages redesign 2H then hola cdn banners redesign 1D

Report the day you will come back from your vacation

niv (Niv Shimoni) infra/nir: 05-Nov-2017 - 10-Nov-2017: vacation
niv (Niv Shimoni) infra/nir: vacation till 10-Nov-2017

Task header

First line of a task should contain the product and a short description

- change icon
- mdoc.hola.org/cdn/lead: change activities add icon

If the requester is not you mentor, you should add him in brackets
When finishing the task, the 'Done' email should be sent to the requester and a CC to your mentor

- a task from derry: mdoc.hola.org/cdn/lead: change activities add icon
- mdoc.hola.org/cdn/lead: change activities add icon (derry)

When task is from another tasks file, you should add that file, short version name for cvsed in square brackets.
You should add your name in brackets as the begining of the task in the task file and mark it with *
When done, you should mark + in both version_plan.txt and the task file. 'Done' email

- mdoc.hola.org/cdn/lead: change activities add icon (derry) [mt]

Legend

  • - Planned task
  • * In progress task
  • + Done
  • o On hold task
  • ? Decision pending task
  • c Canceled task

Body

The body of the version plan should contain all - (Planned), * (In progress) tasks:

* c/pl -> js
  * system/host/stored_hashes.c
  * convert to js (create a file called store_hashes.js)
  - system/host/create_user.pl -> js
  - system/vpn/connect_to_vpn.c -> js
  - more from move_to_js.txt
- upgrade mongo 3.0 -> 3.2

Tasks that were requested by other then your regular mentor, should have the mentor name in brackets

- for omri: hola.org top headers are not aligned
- hola.org top headers are not aligned (omri)

Do not use uppercase as first letter

* C/pl -> js
  * System/host/stored_hashes.c

Only tasks that benefit customers should be listed, typically tasks that:

  • end with a commit
  • end with a deployment
  • fix a bug
  • improve the product
  • solve a problem for a customer

Learning is by-product of doing.

- get forms from IT
* c/pk -> js
  - convert system/host/create_user.pl -> js
    - learn perl
    - convert to js (create file called create_user.js)
    - unit-test
* c/pk -> js
  - convert system/host/create_user.pl -> js
    - convert to js (create file called create_user.js)
    - unit-test

Priorities

Tasks are sorted according to their priority (top-to-bottom).
* (In progress) tasks are usually very few (1-2), not more, representing your current work effort and should be added to the header of the version plan.
Tasks which started (code was partially written/committed) and then stopped, should be marked with o (On hold).

Work in progress

In progress (*) subtasks: at least one of them must be in * status.

* system/host/store_hashes.c
   * convert to js (create a file called store_hashes.js)
     + convert read_hash
     - convert validate_hash
     - convert invalid_hash
* system/host/store_hashes.c
   * convert to js (create a file called store_hashes.js)
     + convert read_hash
     * convert validate_hash
     - convert invalid_hash

Subtasks of a completed main task, cannot be in progress.

dekel (Dekel Cohen) cdn/ariel: search network ppc 5H
+ Google
  * search network ppc
  + display network ppc
  + remarketing
dekel (Dekel Cohen) cdn/ariel: search network ppc 5H
* Google
  * search network ppc
  + display network ppc
  + remarketing

Canceled task can be a subtask of a complete task.

dekel (Dekel Cohen) cdn/ariel: proxy-review.com (happening, not enough) 3H
+ Google
  + search network ppc
  c display network ppc
  + remarketing

Incremental

Tasks longer than 1 day must be divided to committable subtasks

- system/host/store_hashes.c
  - convert to js (create a file called store_hashes.js)
  - unit-test
  - test&debug
* system/host/store_hashes.c
   * convert to js (create a file called store_hashes.js)
     * convert read_hash
     - convert validate_hash
   - unit-test
   - test&debug

Updates

The version plan should be updated once a day, reflecting the current tasks you are dealing with.
Updating this file can be done easily with cvsed.

History: completed tasks

Done (+) and canceled (c) tasks are being cleaned automatically from the version plan every Sunday.
These tasks can be found in the doc/design/version_history.txt file.

Daily file

The goal of the daily file is to report your daily achievements, describe your commitment and state your next planned tasks.
In the commitment section, write the tasks you plan to finish tomorrow. In the planned section, write the task you will start after the tasks in the commitment section are done.
Update this file every day, usually at the end of the day (you may choose to update it in the beginning of the work day, summarizing your previous working day).

Updates

The daily should be updated at least once a day, reflecting the current tasks you are dealing with, as well as explaining what you are going to do next.
Updating this file can be done easily with cvsed.
People in Hola like to use cvsed vpd to constantly update their daily with every task they start or finish so everybody will be updated with their progress, as well as it won't take them long to update it at the end of the day.

Legend

We are using the same version plan legend.

Template

Report your daily achievements, describe the tasks you will complete for sure in the next day (commitment:), and the task/s your are about to start once completing your commitment (planned:).

01-Dec-2015:
* GIF generation for hola homepage
+ fixed a bug in hola homepage
01-dec-2015:
* GIF generation for hola homepage
+ fixed a bug in hola homepage
01-Dec-2015:
+ fixed a bug in hola homepage
* GIF generation for hola homepage
commitment:
* GIF generation for hola homepage
- complete (commit and deploy) phase 1 of GIF generation
- continue work on rest of GIF generation - expected to be around 3 days
planned:
- implement new signup wizard

No uppercase as first letter

Do not use uppercases as first letters in the body of the daily file.
Uppercase as first letter is used only for the month in the header of the daily file.

13-Oct-2016:
+ Optimize lum/cdn top bar loading
* Lum customer selector out of sync
Commitment:
* Lum customer selector out of sync
Planned:
- Unsubscribe from evaluation emails
13-Oct-2016:
+ optimize lum/cdn top bar loading
* lum customer selector out of sync
commitment:
* lum customer selector out of sync
planned:
- unsubscribe from evaluation emails

Descending order

Your latest report should be the first one in the file.

13-Oct-2016:
+ optimize lum/cdn top bar loading
* lum customer selector out of sync
commitment:
* lum customer selector out of sync
planned:
- unsubscribe from evaluation emails

14-Oct-2016:
+ lum customer selector out of sync
* unsubscribe from evaluation emails
  + add unsubscribe token generation
  * build unsubscription front-end logic
commitment:
* build unsubscription front-end logic
planned:
- add eremind pagination
14-Oct-2016:
+ lum customer selector out of sync
* unsubscribe from evaluation emails
  + add unsubscribe token generation
  * build unsubscription front-end logic
commitment:
* build unsubscription front-end logic
planned:
- add eremind pagination

13-Oct-2016:
+ optimize lum/cdn top bar loading
* lum customer selector out of sync
commitment:
* lum customer selector out of sync
planned:
- unsubscribe from evaluation emails

Work week definition

State you usual working week days and hours, so everybody will know when to reach you. Include both your local time and IL time.

WORK_WEEK: Mon-Fri 11:00-18:00
WORK_WEEK: Mon-Fri 11:00-18:00 (14:00-21:00 YEKT)

Absence

Vacations and other out-of-office cases should be reported (in advance if possible).

23-Mar-2016: sick
23-Mar-2016: miluim
23-Mar-2016: day off
23-Mar-2016: 0.5 vacation
23-Mar-2016: 0.5 day vacation
23-Mar-2016:
miluim

State if you worked only part of the day.

01-Dec-2015: 0.5 day off
+ optimize lum/cdn top bar loading
* GIF generation for hola homepage
commitment:
* GIF generation for hola homepage
- complete (commit and deploy) phase 1 of GIF generation

State planned vacations ahead of time.

23-Mar-2016 - 29-Mar-2016: vacation

Support

Support fill out every issue they work on in their daily file so we can see the big picture of what is bothering our customers and improve.

Format:

23-Mar-2016: HOURS_WORKED
+ HOURS CUSTOMER TOPIC: DESCRIPTION
23-Mar-2016: 0.15
+ 0.05 adverif billing: did not receive invoice
* 0.1 carrentals lpm: docker lpm crash over 100req/s

Hour notation is 0.1 = 1H:

+ 0.05 adverif billing: did not receive invoice
+ 0.5H adverif billing: did not receive invoice
+ 30min adverif billing: did not receive invoice

Only mention tasks above 0.05 (30min):

+ 0.05 adverif billing: did not receive invoice
+ 0.005 adverif billing: sent link to faq

Break tasks by topic:

+ 0.5 monitor: call with customers
+ 0.05 adverif billing: too many cc
+ 0.15 giboo blocked: trouble scraping buy.com/prod/123
+ 0.1 dounut cp: buttons don't work on firefox
+ 0.1 cashflow billing: account susp[eneded for late payment
+ 0.1 bighat lpm: link tester crash on centos 5

Use standard topics so we can grep issues by topic.
Topics: mdoc, billing, lpm, bext, google, unblocker, cp, blocked

+ 0.05 adverif safecharge: too many cc
+ 0.05 adverif billing: too many cc

Design documents

We write designs for specific features to usually coordinate between several programmers and to layout the way we would like it to be created.
The document will hold a technical description of the feature as well as a list of prioritized tasks. We are using Jdoc to notify the relevant people on the status of the document as well the progress of every task.

Legend

We are using the same version plan legend.

Priorities

Since we believe in incremental development most likely the newly feature will be deployed very soon and a list of tasks will start to be piled up. To coordinate between several people working on the same feature the below defines handling priorities:

  • P0: Critical functionality is completely broken. Stop everything you do and handle this task
  • P1: A specific feature is broken or partially working. Handle top-to-bottom
  • P2: Enhancement to be added. Handle top-to-bottom
  • P3: A nice to have feature. Handle top-to-bottom
  • P?: Not decided yet - task is waiting to be classified by the OWNER
- P1 bug: session_duration is broken. Should be fixed and add
  unit testing.
- P1: session_duration is broken. Add unitest.

Assignments

Once the task is assigned, the developers login will be added to the task

- P1: session_duration is broken. Should be fixed and add
  unit testing. (alex)
- P1 alex: session_duration is broken. Add unitest.

Task info

The requester should be added in brackets at the end of the task.

- P1 alex: session_duration is broken. Add unitest. (niv)

In case the task came from a customer, add him after the requester's login.

- P1 alex: session_duration is broken. Add unitest. (niv cust_id)

Once the task is completed, notify the requester and the customer.