Agile

 Agile is a popular set of methods and practices that majorly focuses on interactive development. Thanks to self-organizing collaborations between cross-functional teams, the requirements from their customers and potential solutions are obtained. 

Difference between Agile and waterfall

Agile

  • It is a continuous iteration lifecycle model used for developing and testing software
  • It is a flexible method to build a software
  • It is highly collaborative, thus yielding quality output
  • The process of development is divided into sprints
  • Changes can be made even after the initial planning is completed
  • Development is a collection of many projects
  • Testing is performed in the same iteration

Waterfall

  • It is a linear sequential lifecycle model for developing and testing software
  • It is a rigid and structured method for software development
  • It follows a rigid sequence of steps, hence team collaboration is difficult
  • The process is broken down into several phases
  • Once the project development has started, development requirements cannot be changed
  • Development is completed as a simple project or deliverable
  • The testing phase follows the build phase


The different principles of Agile are:

  • Customer Satisfaction by early and quick delivery of the product.
  • Welcome Changes even they are brought in late in the development process.
  • Deliver Frequently with  frequent product delivery within a short timeframe
  • Work Together with developers and other team members collaboration with the course of the project.
  • Motivated Team by making trust to get the job done can ensure the success of the project.
  • Face-to-Face Conversations which is the most efficient method for communication.
  • Working Software which represents the primary measure of progress.
  • Constant Pace make the agile process enables optimum sustainable development.
  • Good Design can be taken by focusing on technical excellence and great design, the agility of the project can be improved drastically.
  • Simplicity time spent is not only doing work, has to be minimized and simplified.
  • Self-Organized teams provide the best architectures, requirements, and designs.
  • Reflect and Adjust - Agile process can be improved by regularly reflecting on it.

Agile: Incremental+Iterative

Incremental Development
In this form of development, the process is divided into small, workable increments. Each succeeding increment builds on the work completed in the previous increment. Over time, functionalities are added based on everything already created.

Iterative Development
This involves the development of a system that follows repeated cycles or iterations. Changes are made based on results from the most recent iteration. This enables the project to evolve over time.


The agile process involves the consideration and creation of a working product in an iteration, which is a part of the final product. Each successive iteration is one step further towards the final product. This continues until all product functionalities are satisfied. 

Organizations and users use the working product and provide feedback that’s incorporated into the next iteration. With this, product roadmaps can be built, produced, and tested before the next iteration.

Different types of Agile methodologies
  • Extreme Programming
Framework that enables teams to create high-quality software that helps improve their quality of life. It enables software development alongside relevant and appropriate engineering practices. It is applicable to handle changing software requirements, risks caused due to new software, working with a small, extended development team, and technology that allows automated unit and functional tests.
  • Kanban
A method that’s used to design, manage, and improve the flow of systems. Kanban enables organizations to visualize their flow of work and limit the amount of work in progress. It is used in situations where work arrives unpredictably, and where work needs to be deployed immediately without waiting for other work items. 

  • Lean
A set of tools and principles that focuses on identifying and removing waste, to speed up process development. Value is maximized, and waste is minimized. It is used in just about every industry that produces waste in some form or the other. 
  • Scrum
A framework that is used by teams to establish a hypothesis, test it, reflect on the experience, and make adjustments. It enables teams to incorporate practices from other frameworks depending on the requirements. It is used by cross-functional teams that are working on product development, and the work is split into more than one 2-4 week iterations
  •  Crystal
It focuses on people and their interactions, rather than on tools and processes. Aimed to streamline processes and improve optimization, Crystal works on the principle that projects are unique and dynamic. It is used when the focus is on strengthening team communication, continuous integration, active user involvement, and configurable processes. 

Principles of Agile Testing
  • Testing continuously
  • Continuous feedback to ensure the product satisfies the business requirements
  • Testers and developers need to be actively involved in the testing process
  • business team and user representatives can actively help obtain quick feedback for each iteration
  • Clean and simplified code with defect-free during the iteration
  • Documentation created only for particular iteration
  • Testing is done alongside development and implementation
  • User involement to ensure the final product matches their requirements

Agile metrics  
  • Burndown charts
  • Velocity
  • Lead time
  • Cycle time
  • Code quality
  • Code covered in unit test
  • Deployment success rate
Agile tools 
  • Jira software
  • Github
  • ZOHO
  • Versionone
Obstacles to the Agile process
  • Not having appropriate/sufficient tools and technologies
  • The lack of active involvement from the customers
  • Successfully adopting the Agile culture to the organization
  • Team members that are lacking in skills and capability
  • The inability to design systems based on unseen requirements
Kanban

Kanban is a popular framework used to implement agile and DevOps software development. It requires real-time communication of capacity and full transparency of work. Work items are represented visually on a kanban board, allowing team members to see the state of every piece of work at any time.

Agile vs crum

Agile is a set of principles that’s iterative and incremental in nature where scrum is an implementation of the Agile methodology

Agile suited for projects involving a small team of experts where scrum used in teams that need to handle constant changing requirements

In Agile project head takes care of all tasks and is vital to the project and in scrum no leader. Issues are handled by the scrum master and the team

In Agile changes cannot be handled frequently where scrum teams can react to change quickly

Agile requires frequent delivery to the end-user and in scrum sprints provide workable builds of the final product to the user for feedback

In Agile face-to-face interactions between cross-functional teams and in scrum daily stand-up meetings help with collaboration

Design and execution is simple in agile where design and execution can be innovative and experimental

Comments