With software development companies taking the agile route, a common question that surfaces is whether this is a set of guidelines or a methodology? The term ‘Agile’ is an umbrella term that includes numerous methodologies that are rigorous in their own identity and are used to plan, create structure and control the entire procedure of building an information system. The software development methodologies that come under ‘Agile’ practices are SCRUM, DSDM, XP, Crystal, and FDD; each of which follows standard practices and processes of software development. Each Agile methodology mentioned here takes in the principles and values of Agile software development methodologies while developing various software. Thus, the spirit of Agile is reflected in its principles, while the implementation of these stands for the methodology. So, Agile development methodologies are both a methodology as well as guideline.
This takes us to the 12 principles of Agile Manifesto that lies at the base of these methodologies. First, these practices aim to satisfy customers through quick and continuous delivery of useful and efficient software. Second, depending on the requirement and preference, say from a few weeks to a few months, working software are to be frequently delivered. Third, the agile development methodologies are capable of adapting changes in any stages of development of software in order to lend competitive advantage to the customer. Fourth, involving motivated individuals for building projects, and ensuring that they get necessary support, trust and environment to do the job. Fifth, throughout the execution of the project, developers and business people need to work closely to bring precision to their requirements.
Sixth, the chief yardstick for measurement of progress is working software. Seventh, face-to-face communication is the ideal and most effective method for passing of information within or to a development team. Eighth, developers have to lend continued attention to good design and technical excellence to achieve enhanced agility. Ninth, agile practices stand for continuous development to which developers, sponsors and users are expected to keep up. Tenth, self-organizing teams are known for coming up with the best designs, architectures capable of matching requirements. Eleventh, a well-organized team is expected to reflect at regular intervals on how to become more efficient. On finding suitable growth trends, they are expected to tune and adjust themselves to adapt to the changes accordingly. Twelfth, simplicity is crucial.
It is based on these principles; the real agility of the methodology you select can be assessed. Since agile stands for being lively and flexible, often developers try picking the practices of their choice and combine them. For instance, taking Domain Analysis, scrum meetings, Just In time, Backlog list, Just do it, Continuous Integration and etc., the developers can create processes that meet the requirements and suit the purpose of Agility in totality. In this way, one can take care of implementing both elements of management and engineering, like combining XP that focuses on engineering with SCRUM that focuses on Management, and such similar combinations that bring out the true mission of Agile development.
Since creativity is a natural aspect of being human, innovation is a facet everyone tries to achieve. To meet the innovative requirements of users, agile development methodologies allow creation of new combinations. It is not always necessary to start anything from scratch; often by customizing it to adapt to the local needs and knowledge is the key to achieve a new feature. Thus, being agile is a culture that if adapted by any organization will bring a complete change to their processes. It is not just a simple development thing; it is an entire change in the way of working, where the principles and values of agility need to be reflected and adapted regularly.