- Agile is a time-boxed, iterative approach to build the projects incrementally instead of all at once.
- Agile is a practice that promotes continuous iterations of development and testing throughout the software.
What is NOT AGILE?
- Conducting meetings
The team conducts frequent meetings for 10-15 minutes daily, and they think that conducting frequent meetings will be Agile. However, only the following meetings will not be Agile.
- Requirements changing anytime
Requirements can be changed at any time, then it is not Agile. For example, a client wants to add some new features and want the changes to be updated at the same time, then this will not be Agile.
- Unstructured development
Suppose you are not following any plan and you are working on Adhoc basis then it is not Agile wherein Adhoc testing, testers randomly test the application without following any documents and test design techniques.
- No documentation
If the company does not make the documentation, then it is not Agile.
What is Agile?
- Agile is a philosophy, i.e., a set of values and principles to make a decision for developing software.
- Agile is based on the iterative-incremental model. In an incremental model, we create the system in increments, where each increment is developed and tested individually.
The above diagram shows how agile model works incrementally.
What are values?
|Individuals and interactions
||over processes and tools.
||over comprehensive documentation.
||over contract negotiation
|Responding to change
||over following a plan
In Agile, you need to perform all the eight tasks which are mentioned in the above table. However, we have to make sure that the left task should be given higher priority than the right tasks.
- Individuals and interactions, Over processes and tools
Suppose the team finds any issue in software then they search for another process or tool to resolve the issue. But, in Agile, it is preferable to interact with client, manager or team regarding issue and make sure that the issue gets resolved.
- Working software, Over comprehensive documentation
Documentation is needed, but working software is much needed. Agile is not saying that documentation is not needed, but working software is much needed. For example, you have 20-page documents, but you do not have a single prototype of the software. In such a case, the client will not be happy because, in the end, the client needs a document.
- Customer collaboration, Over contract negotiation
Contract negotiation is important as they make the budget of software, but customer collaboration is more important than over contract negotiation. For example, if you stuck with the requirements or process, then do not go for a contract which we have negotiated. You need to interact with the customer, gather their requirements.
- Responding to change, over following a plan
In the waterfall model, everything is planned, i.e., at what time, each phase will be completed. Sometimes you need to implement the new requirements in the middle of the software, so you need to be versatile to make changes in the software.
Note: According to the Agile methodology, left tasks should be given more priority than the right tasks.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. According to the Agile principle, the customer is everything for them. Whatever the customer needs, they have any issues or want to add new requirements, they always give priority to the customers. Listen to the customer what they are saying and provide the quality software to them.
- It welcomes changing requirements, even late in development. Agile processes harness change for the customer?s competitive advantage. In the waterfall model, if any new changes to be made in the middle of the software, the whole process is to be done again. Therefore, the waterfall model is rigid and not versatile. Agile says work like so that new changes can be easily incorporated in software.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. As in a waterfall model, when the whole system is developed then only it is delivered to the customer while Agile says that do not wait for too long, wait only for some weeks or months. Whatever you have developed, give a demo to the client, and this gives the glimpse of the software to the client that what you are developing at the initial phases.
- Business people and developers must work together daily throughout the project. This means that the customer, client, and team should interact daily.
- Build projects around motivated individuals, give them the environment and support they need, and trust them to get the job done. Agile says that believe on your team, customer, company. Suppose a task is given to the team member then provide all the resources whatever he needs such as documentation, system, information study, etc.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Suppose there are situations when you need to interact with the client, development team which is usually done through mails or phone calls, but it is better to have face-to-face conversation.
- Working software is the primary measure of progress. Agile says that whatever has been developed is neither through documentation or what your project manager is saying, how much software has been developed or working is the measure of the progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Agile says that make your team constant in delivery so that the team should have fixed working hours means if the company working timing is 8 hours then the team should work for 8 hours in a day.
- Continuous attention to technical excellence and good design enhances agility means that the team members should be technically sound so that they can make good designs if any changes are made, then they can be easily incorporated in the software.
- The best architectures, requirements, and designs emerge from the self-organizing teams. Whatever the architecture team made designs, they make sure that they sit with the development team and discuss the architecture of the software.
- At regular intervals, the team reflects on how to become more effective then tunes and adjusts its behavior accordingly. This principle says that the teams should frequently meet so that they can discuss the issues that they are facing and can be resolved effectively.