Tuesday, May 13, 2008

Agile Planning -- Challenges

Many people who are new to agile software development, particularly recently graduated university students, believe the agile software development method is the “best” development method as it is not plan-driven method. In this case, they just jump into coding process without a thoughtful plan. This is not right. Planning is even more challenging in agile development than traditional development method.

Firstly, let’s understand what agile planning aims to solve. Suppose you want to build a spaceship which takes you to Mars, and you have gotten a beautiful project plan with all the tasks and deliverables scheduled for the next ten years. You stick with this plan and ignore further changes. So when you finally release the product then, are you going to be the first person on the Mars? Then answer is no. During these 10 years, many things will change. Someone maybe ahead of you or you may die tragically in the universe as the victim of a star war. Agile planning is designed to deal with these changes. By planning in an iterative and incremental way, developers can identify and adapt to changes. Only then we build a system that really meets the users’ needs on time and within budget. However, agile planning is more challenging as it appears to be.

The first challenge may come from users. Users always have new ideas about the product and never satisfied with the current one. As a result of this, the develop team must be empowered to make decisions. We should have complete ownership on the project and be able to reject a comparable amount of work in order to make sure the project can be finished on time and within budget. But this doesn’t mean we can ignore the users’ needs and changes. So user involvement is imperative. We must sit down with users several times during the planning stage and try our best to minimize the gap. Remember, in Agile Development, the scope is always variable, not the cost and timescale.

The second challenge is the ability to prioritize features and divide them into small and incremental iterations. Developers always plan project in logical order by functions. But this is not acceptable in agile development. The purpose of agile development is to produce the right product in the shortest time at the minimum cost. The right product means 80% of the product features user will use in the future. If we don’t prioritize features, we may end up running out of time or having built some of the less important features. Developers are also not good at presenting themselves. We knew that everybody in the team worked hard to produce this feature in the most beautiful way. How about users? In their perspectives, the only measure of an effective develop team is the delivery of working product. By working in short iterations, we can deliver working product in a short period of time. This provides concrete evidence that the project team is functioning in an effective manner.
Challenge can also come from developers inside the develop team. Because agile develop team is self-managed, it is important to have the people doing the work actively involved in planning. So that each person can understand the overall structure of the project and accept the schedule. Also people should choose their work. This makes them feel motivated and responsible. If we will use new technology in future projects, training should be planned in order to make sure every project member is familiar with the new technology. These processes ensure that the overall project team can work in a harmony to produce a product effectively and efficiently.

No comments: