Wednesday, December 2, 2009

Agile Project Management on the Clouds. Part I.


Intro

Some time ago I decided to write long article or short eBook about simple approach in Project Management.

In comparison with existing books about PM this eBook will describe agile approach in Estimation, Planning, Tracking and Managing of Projects using only web-based tools (Google Docs and Ganttzilla) where Software Development used as domain for real examples.

So this is it. I'll post fragments of this eBook in the Blog. I'll appreciate any comments and criticism.

New project was born

In the very beginning I was contacted by USA representative of our company with the request for development of new project. Customer is the owner of popular golf club and he wants to create web site for his business. Benefits he is expecting are the following:
  • attraction of potential clients with the help of interactive content (google maps with club's fields, web cameras video broadcasting, interesting game videos, on-line booking and reservation services);
  • creation of virtual community around the business;
  • social networks marketing initiated by integration with linkedin, facebook, and twitter services.

Defining User Stories

We'll go with agile approach for this project and start with defining User Stories.

Marketing content

  • Allow visitor to view home page content.
  • Allow visitor to view news.
  • Allow visitor to view upcoming events.
  • Allow visitor to view popular Blog Post, Video and Photo created by Virtual Community.
  • Allow visitor to view featured Blog Post, Video and Photo created by Virtual Community.
  • Allow visitor to view Picture Gallery.
  • Allow visitor to view map of the Golf Club fields and buildings.
  • Allow visitor to view materials on golf training.
  • Allow visitor to view price list for Club services.
  • Allow visitor to add social bookmarks to this web site under his linkedin, twitter and facebook profile.
  • Allow visitor to join public profile of the Club in linkedin, twitter and facebook.



On-line Services

  • Allow visitor to register an account on the web site.
  • Allow visitor to login the website. After successful login visitor becomes user.
  • Allow user to view calendar with already assigned reservations for each golf field.
  • Allow user to book golf field for playing. During this arrangement user will be forwarded to order payment page on PayPal.
  • Allow user to view hour/date calendar with already assigned training reservations.
  • Allow user to order training. During this arrangement user will be forwarded to order payment page on PayPal.
  • Allow user to subscribe to the Club's newsletter distributed over email.


Virtual Community

  • Allow user to manage his Community Profile. This profile will include Wall, Photos, Videos, Blog Posts, Messages, Followers (twitter-like approach for RoF) and Following sections.
  • Allow user to follow another user.
  • Allow user to vote for another user's Photo, Video, Blog Post.
  • Allow user to exchange private messages with one another.



Back Office

  • Allow administrator to manage contents of the home page.
  • Allow administrator to create/edit/delete Public Event.
  • Allow administrator to create/edit/delete News Article.
  • Allow administrator to select/deselect Virtual Community Blog Posts, Photos and Videos for presentation on the Home page.
  • Allow administrator to create/modify/delete photos in Gallery.
  • Allow administrator to manage contents of the Golf Trainings page.
  • Allow administrator to add special markers and polygons on Google Map for presentation of Club's facilities.
  • Allow administrator to view and print arrangement reports.
  • Allow administrator to view and print payment reports.


Development platform

Customer has no strict recommendations concerning development platform for this web application. Also there is no requirement to support extra traffic. This will be rather *usual* web application tied to some local environment rather than N-billion-users-web-2.0-Super-Star.

We decided to use available developers from our Ruby-on-Rails team. So development platform will be Ruby-on-Rails 2.x.

Estimation Matrix

Some time ago I've started using simple table for presentation of influence of crossing Architectural aspects onto User Stories. Let's look at such a table for our Golf Club project. By the way I've used Google Spreadsheet for this purpose.

Here is a first step - creation of new spreadsheet. Go to http://docs.google.com and then click "Create New" - "Spreadsheet" menu item:


Then copy the following table or create similar one:


Starting from row #5 enter User Stories to be developed (or another Functional items if you split functionality in another way):


Let's look at column names. These names reflect important parts of Architecture. You can see typical Fowler's layers or MVC parts here. Also you can see some architectural components or external APIs to be integrated. In our case we'll use MVC model for Architectural layers so you can see UI code, Controllers and Model columns. Also we'll use content management approach for static pages so you can see CMS (Content Management System). Also we're planning to use Google Maps and Addthis Javascript APIs for maps and social bookmarking. Standard actions like writing Test Cases and deployment to Production environment are added as Architectural patterns.

Now we're in the most interesting part of the game. We have to forecast time expenses for each User Story in appliance to each architectural task.

For example lets look at User Story "allow visitor to view home page content". How many pages this User Story will affect? I think only one page: the home page. Which sub-tasks will be there? HTML and CSS formatting, most probably general layout creation. I predict that for this work "average" Rails developer will spend approximately 5 hours.

Now let's look at controller and model columns. At this point I can't see some valuable coding for home page in the context of controllers and model. Let's estimate controller and model in 0 hours.

CMS. We need to locate 2-3 placeholders for static content for home page. Also there will be some SEO efforts like HTML Title optimization. Let's include 2 hours for content-related work for this page.

Other 4 columns will not be involved during home page development. As a result no time expenses expected.

Let's look at "Architecture" yellow row. This is the estimate for development of infrastructure parts which will be used as foundation for Functionality development. Architecture row also includes some common tasks like Data Model creation, writing Test Cases and prototypes for 2 external APIs.

Other User Stories can be analysed and estimated in a similar manner. Many of them have Model hours. Here I used the following approach. In Architecture row (yellow) basic Model was created as the result of Data Modelling. This work includes creation of DB schema and UML Diagram of Model Classes. Corresponding tasks are estimated in 8 hours. But it is only one part of Model activity. During development of business functionality we need to extend Model classes and to add some methods to them. This additional part of work is distributed over User Stories rows inside Model column.

I made estimation in this example by myself. But in real project it is better to involve as many people in this game as you can. This activity has much in common with Estimation Poker from Scrum methodology. So you have to invite, say, 4 developers to work INDEPENDENTLY with 4 instances of Estimation Matrix. And after filling all tables you have to organize discussion around each estimate and finally create some summary estimate.

Now we are finished with estimates. Lets look at our table at this point.

No comments:

Post a Comment