I'm currently managing nine projects at work and I needed a way to keep tabs on all of them without spending all my time on Microsoft Project. So I came up with this lightweight way to track projects which I think works very well.
A while back GK, a senior Group Lead in our company, held an excellent session on Project Management. I asked him for some advice and came up with this simple text file (one per project) that I maintain.
project.template
Project Name [Project Id] Last Updated: 2008-04-01
===============================================================================
Brief Overview of the project.
Owner : Someone (Who defines "Success" of the project?)
Customer: Someone or some group (Who is the end "consumer"?)
Others : Other stakeholders
Team : Team Lead(s): Team Member, Team Member...
Team Lead(s): Team Member, Team Member...
Team Lead : Team Lead(s): Team Member, Team Member...
Status : WIP (or "On Hold", or "Released", etc.)
Value Provided (Objectives/Goals)
++++++++++++++
1. Be S.M.A.R.T! (Specific Measurable Achievable Realistic Time-bound)
2. Objectives in enough detail to describe the expected value of this project.
Output (Scope)
++++++++++++++
1. Library (product.lib), providing the following services:
* Does X
* Does Y
* Does Z
2. Application (product.exe), providing the following services:
* Blah Blah Blah
* And more functionality
* And yet more
3. Techical Documentation (doxygen output, uml)
* Overall Architecture
* HLD/LLD
* Class Diagrams/Sequence Diagrams
* etc etc
3. User Documentation (help.html, getting-started.pdf)
* Introduction
* How to Use
* Workflow
* etc etc
Risks & Mitigation
++++++++++++++++++
1. May fail in the field.
Strategy: Extensive testing must be done before release
2. Developers may leave project
Strategy: Ensure knowledge is duplicated and shared among team
Ensure code reviews/complete responsibility rests with lead
3. Another risk.
Strategy: (One of Avoid/Control/Accept/Transfer)
===============================================================================
Modules (WBS)
+ Major Module [Owner]
+ Major Module [Owner]
+ Sub Module [Owner]
+ Sub Module [Owner]
+ Major Module [Owner]
===============================================================================
Milestones
* Something will be done. {Team Member responsible} [Date Due->Date Done]
* Something more will be done. {Team Member responsible} [Date Due]
* Sub items in the milestone path [Date Due->Date Done]
* Sub items in the milestone path [Date Due->DROPPED]
* Sub items in the milestone path [Date Due]
* Something more will be done. {Team Member responsible} [Date Due]
* Sub items in the milestone path [Date Due]
* Sub items in the milestone path {Other Team member Responsible} [Date Due]
* Sub items in the milestone path [Date Due]
* Something more will be done. {Team Member responsible} [Date Due->DROPPED]
* Sub items in the milestone path [Date Due->Date Done]
* Sub items in the sub-item's path [Date Due->Date Done]
* Sub items in the milestone path [Date Due->Date Done]
* Sub items in the milestone path [Date Due]
* Something more will be done. {Team Member responsible} [Date Due->Date Done]
* Sub items in the milestone path [Date Due->Date Done]
* Sub items in the milestone path [Date Due->Date Done]
* Sub items in the milestone path [Date Due->DROPPED]
* Project ends. {Team Member responsible} [Date Due]
===============================================================================
Team Member
-----------
[WIP] Action item
[WIP] Action item
[WIP] Action item
[WIP] Action item
[ ] Action item
[ ] Action item
[ ] Action item
[FIN] Action item
[FIN] Action item
[XXX] Action item (dropped)
[XXX] Action item (dropped)
Team Member
-----------
[WIP] Action item
[WIP] Action item
[WIP] Action item
[WIP] Action item
[ ] Action item
[ ] Action item
[ ] Action item
[FIN] Action item
[FIN] Action item
[FIN] Action item
[FIN] Action item
[FIN] Action item
Project Diary/Change Log
===============================================================================
Record all changes, notes, lessons learnt, reasons for decisions, and so on.
All changes should also be documented:
* Risk Change * Scope Change * Objective Change * Resource Change
* Estimation Change * Design Change * Leveling Change * Task Change
* ...
The Reasons for the change should ideally also be documented.
It is a good idea for entry to begin with the date:
2008-01-01 Project started
2008-01-10 Requirement YYY changed to ZZZZ due to AAA
2008-02-08 [X] Dropped Action item
2009-02-15 Risk status of XXX changed due to ABC going on unexpected leave
2009-03-15 Project On Hold because PQR
...
This sheet is really useful because it provides a quick overview of the entire project. I also take a print out of each project and pin it up on the walls of my cubicle. I write updates on the printouts as they come up and occasionally (say once a month) I'll take a fresh print-out. This print-out also helps team members track their tasks.
While printing out, I've found that I don't need the
entire sheet, so I filter out only what's required using this sed script.
project-hardcopy.sed
# Filters a project overview sheet to
# make it more suitable for printing
# Don't print out blank lines
/^\n*$/d
#1y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
1{
s/.*/===============================================================================\n&/
t1
:1
s/ /* /
t1
s/\]\*/] /
}
# Check if we need a blank line
# [..] line followed by
# simple line
H
x
/^\[.*\].*\n\([^\[].*\)\?$/{
s/.*//
p
}
x
h
# Print blank lines before the following
/^Owner *:\|^Team *:\|^Value Provided (Objectives\/Goals)$\|^Output (Scope)$/s/^/\n/
# Don't print out finished/dropped tasks
/^\[[fF][iI][nN]\]/d
/^\[X\+\]/d
# Don't print out risks
/Risks \& Mitigation/,/^=\{79\}$/{/^=\{79\}$/!d;}
# Don't print out completed/dropped milestones
/Milestones/,/^=\{79\}$/{/->/d;/\[DONE\]/d;/\[DROPPED\]/d;}
# Drop the Log entries
/^Project Diary\/Change Log$/,$d
Each of the walls of my cubicle now look like this:
Not pretty maybe, but I just have to glance around to know the status of any project!
I find it an excellent, practical, and low stress way to manage projects effectively. If you're looking for a way to get a handle on multiple ongoing software projects try it out!