Agile methodology has its roots in the Waterfall model, which was mainly used for project management. In the Waterfall model, each stage of the project is completed in sequence, from requirement gathering to ultimate project/product launch.
Agile software development emphasizes flexibility—for example, changes can be made at any time. Instead of focusing on the instruments used, it focuses more on the people involved and collaboration. Agile does not give specifics about the documentation required, so stakeholders can spend less time and energy on materials that are not needed later or that eager employees will replace. Communication and the tools involved are crucial to this methodology.
1- Some Key Principles of Agile Methodology
- Continous and early delivery; keeping customer satisfaction at a high is of the utmost important. This can be achieved by delivering valuable software beforehand which allows the end result to be a continuous process
- Requirement changes at later stages in the development stage. Agile support supports these changes at any stage while keeping the competitive market in consideration.
- Agile project management does not let the client wait 6-12 months to see his product or service mature and develop and instead delivers the working software in a couple of weeks.
- Business and development cross-functional teams must work collectively till the end of the project.
- Motivated employees must be offered a trusting and supportive environment to hand over the project to. This empowers employees as it does not involve micromanagement.
- Even though teams now collaborate via video calls, it was highly appreciated to have a face-to-face conversation as it was considered more effective.
- The key goal is to have a working and functional software. All the hours the team has spent would be useless if the software is not working at all.
- Agile method advocates for sustainable development which includes users, sponsors, and developers.
- Giving attention to the technical aspects and the design continously which guarentees achieveing excellence daily.
- Keeping things simple; if there is an easy way to do a project, why not take that easy route?
- Designs and architectures are best delivered on when teams are self organized.
- Teams should make a habit of reflecting regularly, keeping their meetings aligned and consequently becoming more effective.
2- The Most Used Agile Frameworks
- This is a framework where the teams involved work 2-4 weeks at a stretch but do not cross a working period of one month.
- Sprint Goals are generated, before creating sprints, by the involved team in order to get product backlog items that are needed for delivery.
- The team in the sprint creates the product backlog.
- Daily scrum of 15 minutes allows sufficient time to administer changes to the project/sprint progress if required.
- The completed tasks are termed ‘ready for release’ at the end of each sprint.
- When the sprint is completed, a sprint review takes place in order to highlight what has been done and then feedback is discussed.
- Sprint Retrospective; the team discusses how they can improve in the future and what they have learned from the last sprint.
Another popular agile framework is Kanban, which is mentioned in the Agile Manifesto. Kanban differs from Scrum by keeping tasks/sprints going rather than getting stuck or blocked or delayed.
- Kanban limits what team members work on at any given time, but this doesn’t mean they do less. The workflow is outlined in a way that all team members understand the process and contribute to it willingly.
- All stakeholders are able to see the progress; the team puts tasks across the board and use columns to view the work status.
- Unblocking items and the development process is faster due to active workflow which enables identification of where the task is stuck.
- Better teamwork and continuous improvement
Extreme Programming (XP)
- The framework focuses on delivering quality where developers adhere to specific coding standards.
- A developer proceeds further in development after writing the code and testing it.
- One developer writes the test code while the other writes the feature code.
- After planning, 2 weeks are utilized for development.
- The current iteration is built using enough design and architecture that has been developed.
- A master code is used to countercheck the code frequently.
3 – Examples of agile project management
Backlog: requirements are broken down into tasks in an intake system and are put into backlog before development.
Sprints: A short time period of upto 4 weeks where doable tasks are worked on after which they are moved on for a sprint review.
Agile board: A Kanban board fits here. Progress can be tracked by the business/development.
- Differences between:
- Agile is a methodology, scrum is one of the frameworks of agile methodology.
- Scrum uses small deliverables while agile methodology delivers everything at the end of the project.
- Scrum project team usually has a Scrum Master and Product Owner while Agile consists of members from cross-functional teams.
- When it comes to software development, Waterfall is rigid while Agile methodology is flexible.
- During later stages of development, Waterfall does not allow changes while Agil is adaptive towards project management.
- Agile works best for complex projects while Waterfall works best for small projects.
- Waterfall does not involve client feedback, while Agile does.
- Kaban is one of the agile frameworks while agil itself is a project management methodology.
- Workflow visualization in agile is concerned with the end product while in the Kanban board, it happens in the Kanban framework
- Agile refers to an overall project management process while in Kanban, it is focused on task management from column to column as they complete
- DevOps allows for operation teams for continuous integration and deployment while agile focuses on developers and development cycles.
- Agile focuses on moving the organization away from conventional and rigid development processes while DevOps nurtures the relationship between two teams working in silos.
- DevOps can possibly have hyper releases per day while Agile involves sprints etc.
- Kind of projects ideal for agile software development
There often is confusion among clients about whether their project is meant for agile software development or other frameworks, such as those mentioned above.
In Agile project management, the focus lays on continuous development delivery with changes being made on the demand of the client. Agile project management is meant to cater to complex and long projects.
For simpler projects, the Waterfall methodology can be used. Agile project management promises well-organized software, that is highly sensitive to changing environments. In case of having sufficient time, agile software development should not be used.
In most cases, clients demand clear detailing of each phase of development. Agile does not support that type of documentation since there is continuous development.
Without continuous feedback and a high level of involvement from the customer, agile software development is impossible. If all the benefits of agile methodology are laid down for a given software project and the client seems reluctant, then do not force or push.