Thursday, December 3, 2009

Agile Project Management on the Clouds. Part II.


Preliminary Plan creation

Now we have estimate for our User Stories and Architectural tasks. Out next step is to model full development life-cycle including Phases, Iterations and Resources (developers and QA engineers). This will give us a Calendar of the Project and we would be able to see impact of tasks' dependencies and resources' limitation on this Calendar. This is a very important part of each project.

In many cases this part also gives a set of Milestones which will be used to support and control speed and effectiveness of the Project. This set of Milestones is often a subject of a signed contract between Customer and our team. For sure there is always some flexibility around inclusion of tasks into iterations in Agile projects but Milestones play the role of a skeleton for the project. So we have the rigid template of Phases and Iterations but can move tasks between them during conversations with the Customer.

So let's build Estimation Plan. We'll use another online tool for this purpose named Ganttzilla. We'll build Gantt chart with resources with the help of this tool. We'll use Free Account for this demonstration. You can create your own account here.

After logging in Ganttzilla you will be redirected to your documents page:


Press "New Document" button. Corresponding form will appear:


There are 2 scenarios here: If you select "Blank" radio button you will start an empty project plan (actually this is our case). Otherwise if you select "Upload File" then you will work with existing Project Plan in MicroSoft Project or Gnome Planner file formats.

So let's leave "Blank" selection as it is and fill document name (mandatory field) and description. Finally press "Add New Document" button.

As a result Ganttzilla will create empty document and open Gantt in edit mode:


We can see that current date is November 29, 2009 and there is one sample task in the Gantt. This task is "Default task" and its duration is 1 working day (and in calendar this task fits 2 days because Sunday is not a working day).

Our next step is to change default properties of the project. Press left mouse button in the tasks area and select "Project" item in context menu. Alternatively we can press on the gear icon near the task to bring up context menu and select "Project" there. Gantzilla will show corresponding form:


In this form we have to press on the calendar icon near "Start" property and pick December 7, 2009 as new project start date. Also we should change manager name and then press "save" button.

Now we turn to working with tasks. Double-click "Default task" text and then enter "Architectural Iteration #1". Alternatively we can press on the gear icon near this task, then select "Edit task" item in context menu and edit Task Name property in corresponding form.

Now let's add one more task. To do this click on gear icon and select "Insert Task" in context menu:


Then change "new task" name to "Functional Iteration #2":

Now let's add subtasks under each Iteration. We'll start from Architectural tasks. Press on the gear icon near "Architectural Iteration #1" task and select "Insert Subtask" action. New task will apear with some margin under Iteration task and this Iteration task itself changes its bar to parent task style. Select "Edit Task" for this new task and modify it's name and duration according to Estimation matrix:


By repeating this step for all Architectural tasks we'll fill Architecture Iteration:


Now let's play with Resources and Task Dependencies. First of all we have to fill in the table of Human Resources involved in the project. To do this bring up context menu and click on Resources item. Corresponding form will appear. By entering HR name and pressing "Add" button let's fill the HR table:


At this point let's enter short name for each resource. This information is used when converting project plan into other formats:


Now we can assign resources to each task. For example click on the blue bar of "CMS Engine development" task on the Gantt. This is a shortcut to calling "Edit Task" action from context menu. Now select Resources tab:


Select "Developer #1" and press "ADD ->" button. As a result Developer #1 becomes single resource for the task.

At some point of time we'll find that tasks begin to conflict for resources. For example here you can see that tasks 1.2 and 1.3 start the same day and have the same resource - Team Lead:


This is a good time to start using dependencies. Just click at blue bar of task 1.2 and drag cursor to blue bar of task 1.3. As a result Finish-to-Start dependency will be created between these tasks:


Then we should repeat the same actions with the rest of Architectural Iteration #1 tasks and also create Finish-to-Start dependency between iterations:


Now let's enter User Stories tasks into Functional Iteration #2. We'll enter back-office User Stories first since this is a shorter way to fill database with content objects:


Afterwards all other User Stories should be entered. Pay attention that we don't think about Test Cases and QA at the moment.

Now let's model calendar progress of the project. We'll assign resources and dependencies for all tasks. Finally we'll have something like this:


Here we have coding tasks only. And Functional Iteration #2 fits in 4 weeks. But we have to add QA, bug-fixing, presentation preparation and production deployment tasks. So we'll have around 6 weeks for the iteration. We have to split this functional iteration onto 2 iterations. 3 weeks is ideal duration for iteration for such project.

To do such a split let's pick some task in the middle of Functional Iteration. Say, it will be task 2.15. Now we insert new task after 2.15 and give "Functional Iteration #3" name to it:



Then we go through all underlying tasks and execute "Indent Task" action from context menu near each task:


At this moment we have to unindent Functional Iteration #3 task. Now we have to recreate all dependencies and also create FS dependency between Functional Iteration #2 and #3. Finally we'll have the following picture:


It's a good time to add QA and infrastructure tasks. We have 60 hours for QA activity. Let's distribute it in such a way:
  • Writing Test Cases for Functional Iteration #2 - 16 hours
  • Execution of Test Cases for Functional Iteration #2 - 14 hours
  • Writing Test Cases for Functional Iteration #3 - 16 hours
  • Execution of Test Cases for Functional Iteration #3 - 14 hours

And let's add "Bug Fixing" tasks for both Functional Iterations and "deployment to Production Environment" infrastructure task at the end of Functional Iteration #3:


And, finally let's click on "Back to Viewer" link to finish editing session. Now we're in viewer mode where we can share or publish this Project Plan (using corresponding buttons):


You can browse the final Project Plan here

1 comment: