Most project management trainings are focusing on larger project focusing on the “Waterfall life cycle” approach. As more companies are using agile method, project managers should be retrained to keep up with changing technology and method so they can be more effective. Following are some suggestions:
Keep project tasks small
Since most agile projects are small (3 to 9 people), it is important to keep project tasks small (8 to 20 hours) so team members can complete their tasks faster. Traditionally, project managers are trained to breakdown requirements into one to four week tasks; this will NOT work well with agile method. My rule is “larger project task is estimated in week, smaller project task (Agile) should be estimated in hour”.
Because you have smaller task sizes, you should plan to accomplish certain milestone in just one week at a time. Project managers should track all works within that one week long so they know what they get done in a week. If they are not making good progress, this is a warning signs that the project may NOT be completed on time. Team member must track their progress, where they are at the beginning of the week and where they are at the end. Typically each should have several tasks to be completed within a week, if they did not finish they should reevaluate their works or their estimates.
Definition of done
Any given task should have a definition of “Done”. Many software people still argue about what is “done”. My rule is “Done is ready to be released to users.” That means the code have to be done including all tests with no defect. When you finish something it must be completed, it CAN NOT be partially completed. Since it is ready to release, it must be fully tested so users can use it immediately. Of course, sometimes, a team member can NOT test their work until other people have done their parts. But team member should make their works done as much as they can.
Communication
Traditionally, project managers assign tasks to team members and track them accordingly. Agile method focuses more on teamwork so project managers should work with the team to determine what should be done to complete a one week task or to the next milestone. For agile project to be successful, team members must be experienced enough so they can contribute to the overall. A team discussion on what can be done, what tasks should be done and what can be accomplished to get to the next milestone should be encouraged. The more discussion, the more team members participate in the project, the more confidence that the project will be complete on schedule.
Because agile projects are small, it is important to focus more on functionality than on the architecture. Traditionally in larger projects, project manager is organizing the work by architecture and many tasks are focusing on the architecture layer. For agile method, you should breakdown tasks across the architecture so you can finish a feature or a function at a time, even if you don’t finish the architectural layer. This approach may seem counter-intuitive to software theories, but I found it is faster and allows you to finish your product earlier.
Iteration
Instead of create a fully schedule ahead of time, I like to use an iterative approach by set up one week schedule at a time where team members participate to let me know what they can accomplish on that week. Once they’ve reached one milestone, it’s time to estimate and plan to get to the next one. A team participating on estimates the schedule is much better than an individual’s. I ask each team member to come up with their own estimate and use a “Wideband Delphi” approach or an average approach to come up with the overall schedule. When you allow people to create their own estimates, they tend to track them, follow them, and try to make it complete successfully because their estimate is part of their works.
Because agile projects are small, you must integrate works continuously, no matter what you are doing (code, tests, documentation, plans). You must have software configuration management people to help set up proper configuration and version for your software as works are constantly changing. When the latest version is checked in, and I know the state that it has in it and I do not have to think about it.
Lead rather than manage
Some people ask me, if agile is a teamwork activity do you really need a project manager? My answer is definitely “Yes”. However, the role for project managers in agile method is more of a leader and mentor and NOT control as taught in most project management courses. The more you provide guidance and supporting the team, the more they will produce. The more you practice this collaboration approach, the more flexible you are as a project manager, which makes you a better manager. You do NOT order them, you do NOT direct them, you do NOT command them, you do NOT threaten them but you are their guidance, someone that they trust and someone that helping them to do their works. Basically, you are their leader and leader is NOT someone who has authority over them but someone that they are willing to follow.
Experienced & disciplined team
A successful agile project has two key factors: A leader as project manager and an experienced and disciplined team. Without these two factors, it would be difficult. My question is “As project manager, are you willing to change to become a better leader?” and “As a team member, do you have enough experienced and disciplines to apply the agile method into your work?”