The way development projects are designed is very much donor driven. Development NGOs build projects according to what the RFA is asking them and they end up sometimes finding out that the situation on the ground is very different, that they do not have the resources they thought, or that the technical solution they are implementing does not work in that context. Often implementing organizations are aware a proposed activity/program may be unlikely to succeed if based on RFA requirements, however, current procurement practices are not necessarily consultative or responsive to those needs. This pilot project intend to pilot the use of the Agile Methodology for the implementation of ICT4D projects, knowing that it could also have effects across the whole development enterprise. With the help of an Agile Coach, the idea is to test this methodology in a chosen country and see how this methodology can be adapted to an actual development project, trying to come out with a model that would allow us to show to donors a different approach to development.
Incremental software development methods have been traced back to 1957. In 1974, a paper by E. A. Edmonds introduced an adaptive software development process, while the so-called lightweight agile software development methods evolved in the mid-1990s as a reaction against the heavyweight waterfall-oriented methods, Those last methodologies were characterized as being heavily regulated, regimented, based on premature commitment, overly incremental approaches to development. Proponents of lightweight agile methods contend that they are a return to development practices that were present early in the history of software development.
In February 2001, 17 software developers met at the Snowbird, Utah, resort, to discuss lightweight development methods. They published the Manifesto for Agile Software Development to define the approach now known as agile software development. Some of the manifesto's authors formed the Agile Alliance, a nonprofit organization that promotes software development according to the manifesto's principles.
The Agile Manifesto reads, in its entirety, as follows:
"We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
The meanings of the manifesto items on the left within the agile software development context are described below:
- Individuals and interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
- Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.
- Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
- Responding to change – agile development is focused on quick responses to change and continuous development.
The Agile Manifesto is based on twelve principles:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Close, daily cooperation between business people and developers
- Face-to-face conversation is the best form of communication (co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
Agile software development today is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen interactions throughout the development cycle."
This pilot project will try to build an Agile Prototype for Development on the basis of the actual Agile Software Development model, by using the same principles and the same methodologies but applying it to the way Human Development projects are designed. The outcome of the pilot will be a practical guide for donors, NGOs and implementers on how Agile methodology can change the way projects are designed and implemented, but also how we can adapt and reiterate Agile methods for program procurement, design and development.
The project will start with a desk research conducted on two different topics: one on model of project development and funding as it is right now, and one on the agile development methodology for software development as it is now applied to human development.
At the end of the first desk research a “Traditional Project Cycle” will be created highlighting the challenges and problems emerged from this review; the outputs will include detailed systems diagrams and graphics. The model should be created so that there is room for all of the variation that might arise. Although donor funded projects are driven by certain norms - there isn't just one model. The research will try to capture as much variation and nuance as possible.