One of the things most notable about XP that I really like is the notion of pure communication through the simplest things. For example - the whiteboard.
In an XP project - the whiteboard is your biggest friend.
- It's the best way to communicate ideas visually and fast
- It's great for letting everyone know what's going on
- It's easy to change and erase and move stuff.
One of the things that people often do in these sort of projects is create what is called a "Wall- Gantt" - that means a whole Gantt chart mounted up on a wall somewhere for everyone to see - totally made of sticky notes and other papers - making it totally flexible for changes. If you remember - an XP project is all about accommodating changes.
I, too, have my own personal preference on how to show project progress to the team. It's based on the main whiteboard that our current project's team has mounted in the room (the one wall everyone sees when they turn around).
Here's a picture of what it looked like a few weeks ago (stuff blurred for obvious reasons)
Looks.... human, doesn't it? :)
here's a short explanation of what you're seeing here:
The Project Progress Report Table
- In the lower part of this image you see grid(table). This table basically outlines all the modules to be built in the project and the various layers each module will need.
- The Y axis shows the various layers in the project : Design, DAL,BL,WorkFlow(WF),Service Interface(SI),UIP and GUI (obviously a distributed application)
- the X axis shows the names of each main module to be built (various modules taken from the design document and speaking to the client.
- When a specific phase/layer for a module is finished it is coloured Green.
- For example: for the most left module in the image - the following phases and layers have been completed: Design, DAL, BL and Workflow design. It still needs to have the following to be done: WorkFlow component, Service Interface (web service), UIP layer and the actual GUI forms.
- The green 'X's mark layers that do not need implementation in this design
- the red markers (which are actually Hebrew letters) in some of the cubes are the initials of the dev team members. This way we know who is working on what.
the easiest rule about this table is :
the more green you have - the further you are in the project. When everything is green you're done with implementation.
The Pending Tasks areas
Around the Project table you can see various cubes (5 big cubes with people names on top in red). Each cube belongs to a team member and lists the current tasks they have for the coming few days. Finished tasks are marked with "V". These tasks are listed in sync with the project progress table and give off a separate - more elaborate view of the smaller tasks each dev member needs to perform in order to finish their current layer/task.
So what do you get out of this white board?
- You can walk in to the room and know in less than 10 seconds where the project stands, where it's heading and what is still not finished.
- You can define your work either in breadth(Work on several modules at once across the diagram) or vertically (Complete each "column" in the table vertically and continue on to the next module) . in this project you can clearly see that we have taken the "breadth" approach.
- Full communication between everyone. To me one of the most annoying things is to work on a project where you have no idea where you are heading. You are working in a void with no real meaning. In this way you see exactly where in the project you fit in and what your impact on the project really is.
- It's much easier to handle than a Gantt chart - although it does not fully replace a Gantt chart. Some things cannot be expressed in terms of layers. They have to be modelled hierarchically.
- You can see that this fits most well with small teams working closely with each other. Again, another facet of agile methodologies.
The Work Flow
Each morning the whole team (5 people) gather up for a 10 minute meeting with details of what they are going to do today, questions and problems that might arise and other things. The whiteboard is updated in this meeting with the current status of all tasks and everyone now knows what everyone else is doing. There are 1-2 meetings like this on a typical day.
Anything else?
Obviously this is not all there is to it, but it's one of the core parts of managing a project for me. One of the first things I look for in a new project space is the whiteboard. it is usually the life raft of miscommunication. If there isn't one I make sure I get one at least (but 3-4 is also great. You can never have too much communication). in this post I've shown how a whiteboard can also be used to communicate project progress, not only technical ideas.
I'd love to get your feedback on these methods.