Agile Software Development
Agile software development refers to iterative methods of building software. This consists of a group of software development methodologies based on iterative development, incremental delivery, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams with continual planning and continual learning.
Agile focuses on keeping the process lean and creating minimum viable products (MVPs) that go through a number of iterations. Feedback is gathered and implemented continually. Agile software development is a dynamic process where everyone is working together towards one goal.
Source : https://www.visual-paradigm.com/scrum/what-is-agile-software-development/
Agile Manifesto is the foundation of most modern project management methodologies. It has four core values supplemented by 12 principles.
What is Agile Manifesto?
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a planAgile alliance
- Individuals and interactions over processes and tools
- In the past, majority of software teams concentrated on having the best possible tools or processes to build their software
- The Agile Manifesto suggests that while those things are important, the people behind the processes are even more important
- This is because people are responsible for business needs and drive the development process
- Tools or processes are unable to meet customer needs always or be responsive to changes
- Having the right group of individuals in the software team is vital to the success
- Communication is the key
- People are informed on changes or business needs via communication
- The interactions between team members greatly help to collaborate and solve any problems that arise.
- It is important to have a product owner who works and can make decisions in collaboration with the development team
2. Working software over comprehensive documentation
- Previously, software developers spend ages creating detailed documentation. This is even starting writing a single line of code
- Traditional project management involved comprehensive documentation which entailed a lag of months
- Technical specifications, technical requirements, technical prospectus, interface design documents, test plans, documentation plans, and approvals required for each. The list was extensive and was a cause for the long delays in development
- Many of the documentation was not even referred to during the project progress
- Agile does not eliminate documentation, but it streamlines it in a form that gives the developer what is needed to do the work without getting bogged down in minutiae.
- Agile documents requirements as user stories, which are sufficient for a software developer to begin the task of building a new function.
3. Customer collaboration over contract negotiation
- Negotiation means that the details are still being captured and have not been finalized
- Collaboration implies that there is still room for discussion and the communication is ongoing
- The team has the capability to do a course correction if required at an earlier stage
- This also helps the client to refine their vision and redefine their requirements if required during the course of the project
- Traditional software development models involve the customer before the development begins during the documentation and negotiation phase, and they are not as involved during the project development
- Once the requirements have been frozen, customers get to see the final product only
- Agile breaks through this barrier by allowing for customer involvement over the whole lifecycle
- Agile methods includes the customer at intervals for periodic demos
- Agile team could have an end-user as a daily part of the team and attending all meetings, ensuring the product meets the business needs of the customer
- Product owner can assist the team in real time for clarifications and aligning the work with the customer priorities to achieve high customer collaboration
4. Responding to change over following a plan
- The standard thought process is that the changes are an expensive affair and it is important to avoid changes
- In the past, the development teams tried to achive this via unnecessary focus is on documentation and elaborate plans to deliver by sticking onto the timelines and product specifications
- Changes are mostly inevitable and instead of running from it it’s important to embrace it and plan for it
- Agile doesn’t consider change as an expense
- Agile considers change as feedback that helps to improve the product
- With the sprints concept in Agile teams can obtain quick feedback and shift priorities at a short notice
- New features can be added from iteration to iteration
- Agile follows just in time planning where planning is done just enough when needed
- The plans are always open to change as the sprints progress