Organizational anarchists they call themselves: those who have summoned up the ideas of Agile software and system development in 2001. More philosophical than strictly methodological document, Manifesto of Agile Software Development has defined 4 main values and 12 principles of a new methodology.
Agile development methodology emerged as a response to classical waterfall models of software development. Those traditional models have proven to be tardy, bureaucratic, not effective enough, and limiting teams’ creativity, especially in certain projects.
In a situation where some new, quick and productive methodology of product development was needed, Agile was invented as a set of principles and tools. As a contemporary philosophy of software development, agile is embracing the working process using different techniques. For instance, SCRUM, Crystal Clear, Dynamic system development method, Feature driven development, Lean software development, and many other “lightweight” methods and frameworks that require minimal documentation and maximal communication during the development cycle.
Agile development model provides clues on how to create software products as based on the values of collaboration, individuality, creativity, usability, and humanity.
There are several concepts resulting from those and characterizing agile development model in large. They help seeing how values stated in Agile Manifesto transform into successful practice.
Communication. Members of Agile-based teams work co-located. Plus, they actively collaborate with product-owners. This makes the whole agile development life cycle transparent, more effective for both software -owners and -users, and actually more fun.
Small software development life-cycles (iterations). Each time-box is being seen as a mini-project with one aim: to create something operable at the end of each short period of work. Testing and evaluating the product on each phase allows working on new ideas, constantly. Short iterations of agile development cycle give product-owners a possibility to bring in new decisions on every stage.
Producing working software. As soon as a “raw” version of product is ready, it is meant to go live quickly. This is a rich source of reactions from real users: people interested in the product can tell developers what is good and what is missing in it.
Being open to changes. The ability of agile development environment to react on changes is a core feature that makes it different from, say, waterfall-based system. Their classical methods try to avoid and minimize any possible changes. Agile is making a turbulent situation on the market its source of inspiration, profit, and productivity.
These characteristics help developing software that is needed on the market, incrementally. Belief in self-managing teams, creativity, and developers’ competence results in high performance. For instance, agile development tools are successfully used in the work of such companies as Nokia, IBM, Google AdWords, BT Group.
To adapt Agile methodology, one needs certain basis. If you are a product owner, you have to think over the images of your future product and your dream-team to develop it. Here is a short description of product expectations that make agile development methodology productive.
You are not sure about features you want to see in your product;
Your future product may demand constant change;
You need to be able to implement the changes even on the latest stages of the development cycle;
You need regular feedback from users to improve your software;
You need the first results quickly.
There are some important features of working environment that makes Agile usable. They are:
The team of developers is experienced and motivated;
The software development company is open to communication and discussion;
Product-owners trust the solutions for future product madeprovided by developers;
Team members accept the decisions made by product-owners;
Team members cooperate.
Financial benefits from the first version of your project are clear already on the early stage of agile development life cycle;
You will have constant feed-back from your customers, and you can use it to improve your understanding of what is demanded on the market;
Agile development model allows you to provide your stakeholders with full transparency about the whole process of product development;
You can deal with any risks concerning your product whenever they occur;
You can control your expenses, because agile development environment works on fixed budget;
After all, the whole process of agile software development is enjoyable for everybody.