April 04, 2012

Agile Project Management



Agile project management is an alternative to traditional software management methods, which helps to develop a successful product with low cost and less time. Agile methodologies are meant to be building blocks, which combined and extended to create a complete project methodology.

Agile project management is used for more complex and unclear projects though the project is very large it is divided into sub parts and submits the project in incremental manner. As many of the large organizations in the worldwide are use these methodologies to become success in their path this is geared to high speed and high change of today’s e-business projects.

Agile management is mainly focused on people who are working with the project team as well as their client. They have small number of members in a team with high expertise of technologies and they serve well to their client to fulfill the requirements successfully.

Next agile focused on the results which is the main goal of the team. They all work together to fulfill that goal with their full effort.

In agile there are less number of methods exist to use for project management like scrum, though there are many methods are available to software development such as extreme programming, AUP,etc.. [1]

As they are working in a small team, they have maximum collaboration among themselves. Team members have good understanding among themselves and though their working categories are different, all of them are works to achieve a same goal. [1]

Therefore, people, results, minimal methods and maximum collaboration are main features that agile focused on.



Against to the drawbacks of traditional development a practice agile has introduced. As an example in waterfall method, it has huge documentations and follows an ineffective methodology. As the project develops in a sequence there are no iterations, such as go back and look for the bugs and re do it. Therefore may be the team have to develop it from the scratch if any error occurs. [2]




ü  More effective in responding to change

ü  Reduce the elapsed time between making a decision to seeing the importance of that decision

ü  Place people physically closer

ü  Replace documents with talking in person

o    Improve the team’s friendliness , sense of community and morale

o    Convey valuable information quickly

ü  Make user experts available to the team

ü  Work incrementally [2]





In agile project management method, they have in person meetings among the team as well as the client. Therefore, they all have better idea about what they are doing and what they have to do.

As they are working incrementally, they have estimated time to develop the sub part of project and they have regular working hours to achieve their goal successfully.

Because of the team has less number of members in the team they trust each other and always they discuss what next to do and what are the wrong things occurred in previous work and they share their knowledge to get rid of those errors.




ü  Northrop Grumman Commercial Aircraft division

ü  Texas Instrument

ü  Marlow

ü  Loral Vought Systems

ü  Center for Collaborative Manufacturing

ü  E-systems [2]


“British Telecom has successfully implemented a huge project, involving several hundred developers situated in UK, Ireland and India, using the Agile Methodology” 

These examples indicate the strength of the agile concept.



This section emphasis various reasons, why people are moving from traditional Project Management towards Agile Project Management. Those are mentioned as below. 


Project Management and Software Development have a history of failures. Many examples exist to prove how many projects fail annually how much cost spent for them and reasons for those chaos situations. Some of the examples are stated below.

  • 30 - 40% of systems projects fail prior to completion [3]
  • Half of all systems projects overrun their budgets and schedules by 200% or more [3]
  • Failed systems projects cost more than US$100 billion per year in the USA alone 2$80 -145 billion per year is spent on failed and cancelled projects [4][5]
  • 60% - 80% of project failures can be attributed directly to poor requirements gathering, analysis, and management [6]-meta
  • 66% project failures due to miscommunication between business and IT [7]

As these examples shows large amount of money, time and effort are spent for failure, canceled of cost and budget over run projects. Because of this reason, people try to move away from traditional project management approaches and move towards agile project management.




In project management, two main parties are involved; Project Manager with the development team and the customer. Project Managers’ focus is always stick in to the estimates and schedule to complete the project on time without changing the requirements in the intermediate levels; why because changing requirements lead to extend the project completion date. However, customers are trying to change requirements frequently while project grows. Changing requirements percentage in a typical software project is 25%, In a Medium to Large project is 25 – 35% and there are no projects with stable requirements.

 Therefore, conflict exists between Project Manager with team and Customers for changing requirements. To address this issue is another reason to people to move to Agile Project Management. The way to address this issue is discussed in later sections.




Agile is intentionally customer-intimate, so customers and developers (including testers, tech writing, and customers) are on the same team. Customer can give continuous ideas to development team. It helps to maintain adversarial relationships.[8]

ü  Increase Quality

Agile depends heavily on testing, both acceptance testing and unit testing. Tests are written constantly and run constantly. This is done in order to fix bugs as early as possible to reduce costs and to minimize customer complaints.[6]

ü  Simplify Releases

Products are releases early and often as possible, and maintain code base in a perpetually releasable state. Tests and Continuous Integration also happens when releasing products.[8]

ü  Increase Operational Awareness

Agile teams track their progress via using visible charts and the kanban wall. Anyone who walk into that area and can have an idea about tasks are in progress and how close they are to being completed. [8]

ü  Drive down Risk

Once the products are produced, those are delivered to the customer. Then the Customer can immediately identify whether products are as useful as expected. Corrective steering is possible. There is a greatly reduced risk of building the wrong thing, or a gold-plated excess of the right thing. [8]

ü  Reconnect with Joy

In Agile methods, having working code nearly at all times is empowering. Having tests to rely upon is comforting. Having steady progress is refreshing. It is great to be making real progress (learning and coding) all of the time. It's why many people select this method. [8]

ü  Economic Pressures

People are developing products to put it to the Market. Everyone wants to become the “first” to put products in to the dynamic market. To do so they are finding efficient and error free mechanisms like Agile Project Management.

ü  Constant shifting on Business Strategies

Because of the Globalization Business Strategies are changing frequently and uncertainty also increases. As a reason people are moving, towards Agile Project Management since it touch changing requirements problems and reduce risks.



In this section how agile project management compares to project management on a waterfall methodology based project is described.

·         Methodology Style

Waterfall method takes a classically liner and sequential approach where as agile method has a iterative incremental approach.


Waterfall Method


Agile Method

·         Delivery of  business value early

In agile approach at the end of each tested a stage launchable product is delivered to the customer. This ensures that bugs are caught and eliminated in the development cycle, and the product is double tested again after the first bug elimination[9]

Yet this is not possible for the Waterfall method, for there is only one main release in the waterfall method and since the product is tested only at the very end, which means any bugs found results in the entire program having to be re-written. Agile Project Management, with its focus on collaboration and delivering value early on in the product lifecycle, will ensure the customer satisfaction. [9]
·         Flexibility
 Waterfall approach work hard to prevent changes in scope. Once a stage is completed in the Waterfall method, there is no going back. Most software designed and implemented under the waterfall method is hard to change according to time and user needs.
Agile was developed to get around Waterfall's biggest problem, the inability to make changes to a project's plan without essentially going back to the drawing board and starting over.
Unlike waterfall approach, agile expects and embrace scope changes, and at the end of each iteration agile support scope adjustments. With Agile, changes can be made if necessary without getting the entire program rewritten. This approach not only reduces overheads, it also helps in the upgrading of programs. [9]
·         Clear and open communication
Clear and open communication is achieved by Customer collaboration throughout the project in Agile. Customer is available in the environment and face-to-face conversation, reviews and retrospectives and demos and reviews used to gather customer feedback is used.
All of these help to deliver the right product at right time. Customer is involved in product backlog and helps prioritize exactly which features are included in the product. Acceptance of each feature is done as developed and earlier feedbacks taken from the customers. Through this higher quality could be achieved and risk could be decreased. [10] 

Parameter
Waterfall
Agile
Requirements
Fixed
Changing
Time & People
May vary
Fixed
Customer Involvement
Before, After
During
Negotiable
Estimates
Schedule
Testing
After code
Integrated
Feedback
After
During
Concentration on
Processes and Reviews
Workable software
Focus
Plan driven
Value driven
Stages
Requirements,
Design, Code, Test, Feedback
(Plan-do-adapt) Cycle
                                                                                                           
              Table 1: Waterfall Vs Agile Comparison

Advantages and Disadvantages of Agile
ü  Advantages of Agile
·         Agile Deliver business value early
o    Agile provides a continuous loop of planning and feedback in order to maximize value.
·         More flexibility and Adaptability
o     Agile is capable of adapting to your changing requirements
·         Avoid significant rework  by doing just-in-time detailed design
·         Raise quality by moving testing forward in the process
·         Become responsive by supporting scope adjustments every iteration
·         Increase estimating accuracy by working in small chunks
·         Risk
o    Agile process allows to better address business and customer needs, thus minimizing risk.
o    Decrease risk by always having working software
·         Visibility
o    Agile allows users to interact and view what is going on at every step of your project.

ü  Disadvantages
·         Agile can be hard on the product owner who has a lot of responsibility.
o    There is a heavy reliance on close business involvement, ideally on a daily basis. This places a great burden on business people who must also juggle daily operational responsibilities.
o    Teams are more efficient if they are small, co-located and have the right physical working environment, which is often hard to achieve in large, geographically separated organizations.

·         Misunderstanding of the agile methodologies may lead to team burnout due to an irrational culture of urgency. 
·         Agile is not a silver bullet – Agile can be over-hyped, thus leading to unrealistic expectations.


This chapter covers a brief introduction for agile methodologies and key agile project management principals.
  eXtreme Programming
Extreme Programming is a discipline of agile based on values of simplicity, communication, feedback, and courage. It works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation

  Scrum
Scrum is an agile process that can be use to manage and control complex software and product development using iterative, incremental practices. Scrum is use from simple projects to changing the way entire enterprises do their business.

  Crystal Methods
The Crystal methods uses a focus on people and communications as its organizing principle, and most of the properties and techniques are base on strengthening that process.

  Feature Driven Development
Feature-driven development (FDD) is an iterative and incremental project development method specially used in software development process. FDD blends a number of industry-recognized best practices into a cohesive whole.  Its main purpose is to deliver tangible, working software repeatedly in a timely manner.

  Dynamic System Development Method
DSDM is an agile project delivery framework, primarily used as a software development method. It is an iterative and incremental approach that embraces principles of agile development, including continuous user/customer involvement.

Agile principles guide practices and facilitate decision-making at the ‘coal-face’ rather than restricting it to the management levels of an organization by providing a framework that enables experienced agile developers to make intuitive decisions quickly without  waiting for instructions or permission. Some of the key agile project management principals are as follows.
  • Focus on Customer Value: Creating a customer value for the work performed is one of the main objectives of any business domain. In order to deliver better products quality, faster and cheaper it is important to align project, product and team vision appropriately. An agile process helps the customer to have a quick view of the product. As a rudimentary system provided within the first couple of weeks, Customers have a chance to make requirement changes if they feel that what they see does not match what they envision. Requirements change dynamically but they strictly adhere to deadlines.
  Small Batches: An agile methodology is incremental in nature.  It creates a flow of value to customers by “chunking” feature delivery into small increments. A rough draft will be available to customers within the first couple of weeks. The agile cycle is at most 2-3 months in size or even lesser than that. Agile encourages an incremental delivery system with shorter cycles of development. Cycle size varies based on consensus among stakeholders, size of the project, and environment of the project.
  Small, Integrated Teams: As agile methodologies are rapid in nature, a team of good players needs to be accommodated. 8-10 is the industry standard for an agile team.  Team should be collective of diversified roles integrated, self-organizing, self-disciplined. The team should consist of developers, customers, and any other business related personalities. There should be a high degree of communication between the team members in order to implement agile methodology effectively. Significant interaction between the customers, developers and stakeholder is essential. JustInTime [JIT] approaches can use for successful practice of agile methodology.

  Small, Continuous Improvement: An “Eating an elephant, one Bite at a time” policy should be implemented when focus on agile methodology. Teams reflects, learn and adapt to change, work informs the plan will well practice throughout the development.   Agile methodology advises to develop each project small in size with an incremental nature, which will reduce the risk of what you see vs. what you envision aspects. It also provides effective cost management, and less refactor cost.

Agile Project Management with Scrum
Even though there are several agile project management methodologies are available, scrum will be used as the core of all those. This chapter mainly emphasis on scrum and how it can be used for agile project management in practice.
Scrum is an iterative, incremental framework for project management often seen in agile software development, a type of software engineering. Although the Scrum approach was originally suggested for managing product development projects, its use has focused on the management of software development projects, and it can be used to run software maintenance teams or as a general project/program management approach. [12]
Scrum has not only reinforced the interest in software project management, but also challenged the conventional ideas about such management. Scrum focuses on project management institutions where it is difficult to plan ahead with mechanisms for empirical process control, such as where feedback loops constitute the core element of product development compared to traditional command-and-control oriented management. It represents a radically new approach for planning and managing software projects, bringing decision-making authority to the level of operation properties and certainties. Scrum reduces defects and makes the development process more efficient, as well as reducing long-term maintenance costs 
Scrum is a process skeleton that contains sets of practices and predefined roles. The main roles in Scrum are:
·         The Scrum Master, who maintains the processes (typically in lieu of a project manager)
·         The Product Owner, who represents the stakeholders and the business
·         The Team, a cross-functional group who do the actual analysis, design, implementation, testing, etc. [13]
The ancillary roles in Scrum teams are those with no formal role and infrequent involvement in the Scrum process—but nonetheless, must be taken into account.
·         Stakeholders (customers, vendors) 
These are the people who enable the project and for whom the project will produce the agreed-upon benefit[s], which justify its production. They are only directly involved in the process during the sprint reviews. 
·         Managers (including Project Managers)
People who will set up the environment for product development 
·         Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication between all team members and disciplines in the project. 
·         Cope better with urgent requirement changes which leads to unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner
  Increase quality of the deliverables due to strict iteration rules
  More control on project schedule and status
  Provide better estimates
Characteristics of scrum [12] [13] [14] [15]
A sprint is the basic unit of development in Scrum. Sprints tend to last between one week and one month, and are a "timeboxed" (i.e. restricted to a specific duration) effort of a constant length.
Each sprint is preceded by a planning meeting, where the tasks for the sprint are identified and an estimated commitment for the sprint goal is made, and followed by a review or retrospective meeting, where the progress is reviewed and lessons for the next sprint are identified.
 At the end of each sprint, stakeholders and team members meet to assess the progress of a project and plan its next steps which allows a project’s direction to be adjusted or re-oriented based on completed work.
A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team’s ability to deliver quickly and respond to emerging requirements.

  • Daily Scrum
 Each day during the sprint, a project status meeting occurs. This is called a daily scrum, or the daily standup. During the meeting, each team member answers three questions: 
o    What have you done since yesterday?
o    What are you planning to do today?
o    Do you have any problems that would prevent you from accomplishing your goal?
It is the role of the Scrum Master to facilitate resolution of these impediments, although the resolution should occur outside the Daily Scrum itself to keep it under 15 minutes. 

  •  Scrum of scrums
 Each day normally after the daily scrum. These meetings allow clusters of teams to discuss their work, focusing especially on areas of overlap and integration.
The agenda will be the same as the Daily Scrum, plus the following four questions:
o    What has your team done since we last met?
o    What will your team do before we meet again?
o    Is anything slowing your team down or getting in their way?
o    Are you about to put something in another team’s way? 
  •  Sprint Planning Meeting
 At the beginning of the sprint cycle (every 7–30 days), a Sprint Planning Meeting is held. Select what work needs to be done. Prepare the Sprint Backlog which details the time it will take to do that work, with the entire team. At the end of a sprint cycle, two meetings are held: the “Sprint Review Meeting” and the “Sprint Retrospective” 
  •  Sprint Review Meeting
Stakeholders review the work that was completed and not completed. Present the completed work to the stakeholders (a.k.a. “the demo”). Incomplete work will be demonstrated. 
  •  Sprint Retrospective
All team members reflect on the past sprint. Make continuous process improvements. Two main questions are asked in the sprint retrospective: What went well during the sprint? What could be improved in the next sprint?
·         Product backlog
 The product backlog is a high-level list that is maintained throughout the entire project. It aggregates broad descriptions of all potential features, prioritized as an absolute ordering by business value. Those estimates help the Product Owner to gauge the timeline and, to a limited extent prioritize.
The Product Backlog, and business value of each listed item is the property of the product owner. The associated development effort is however set by the Team.
·          Sprint backlog
 The sprint backlog is the list of work the team must address during the next sprint. Features are broken down into tasks, which, as a best practice, should normally be between four and sixteen hours of work. 
The sprint backlog is the property of the team, and all included estimates are provided by the Team. Often an accompanying task board is used to see and change the state of the tasks of the current sprint, like “to do”, “in progress” and “done”. 

·          Burn down
The sprint burn down chart is a publicly displayed chart showing remaining work in the sprint backlog. Updated every day, it gives a simple view of the sprint progress. It also provides quick visualizations for reference.
[2] “Overview of Agile Management & Development Methods” by Addicam.V.Sanjay , The PROJECT PERFECT White Paper Collection
[3] B.P. Lientz and K.P. Rea, Breakthrough Technology Project Management
[4] “Why Agile Project Management?”, Internet:http://www.computerworld.com/, [Oct.04, 2011]
[5] “Why Agile?”, Internet: http://blog.standishgroup.com/, [Oct.05, 2011]
[6] “Why Agile Project Management?”, Internet;  http://www.gartner.com/technology/home.jsp , [Oct.06, 2011]
[7] “Why Agile Project Management?”, Internet;  http://www.forrester.com/rb/research, [Oct.07, 2011]
[8] Jeff Lagner and Tim Ottinger, “Why Agile?”, Internet:http://agileinaflash.blogspot.com/2010/06/why-agile.html”, [Oct.06, 2011]
[9] “Waterfall Project Management vs. Agile Project Management, The Paradigm Shift”; Internet, http://www.daleolsonconsulting.com/blog/2009/05/03/waterfall-project-management-vs-agile-project-management-the-paradigm-shift, [Oct.04, 2011]
[10] “Agile vs. Waterfall Which is the Ethical Choice?”; Michele Sliger ; Slinger Consulting Inc
[11] “Manifesto for Agile Software Development”, Internet, http://agilemanifesto.org/, [Oct.06, 2011]
[12] “Scrum (development)”, http://en.wikipedia.org/wiki/Scrum_(development), [Oct. 13, 2011]
[13] “Agile Project Management for PMPs”, http://140.99.29.241/images/uploads/APM_50min.pdf, [Oct. 13, 2011]
[14] “Agile Project Management with Scrum”, http://www.slideshare.net/aditya.internet/agile-project-management-with-scrum, [Oct. 13, 2011]
[15] “Implementing Scrum”, http://www.implementingscrum.com/, [Oct. 13, 2011]
[16] “Scrum”, http://www.targetprocess.com/scrum.aspx, [Oct. 13, 2011]