Agile Methods

The Agile is not just following Scrum or XP. There are many other agile frameworks or methodologies available in the Agile world which are leveraged based on type of work or a project. There is none better than other. The use completely depends on the type of the project you have. There are many methodologies available in the market while I will be listing down high-level details about some of the core methodologies below.

Scrum The team works in iterations (Called sprints) that are typically 2 or 4 weeks. The engineering practices are not prescribed. The scrum does not encourage change within sprint once a commitment is made. The backlog is prioritized while within sprints team decides how to go about picking items. The priority is typically given by product owner. The releases happened after the end of iterations. The scrum can be used for non-software products. Encourages feedback early while it’s fine to reach to the point till you have sprint review.



Extreme Programming (XP) The team works in iterations that are typically 1 or 2 weeks. The engineering practices (TDD, BDD, pair programming, automated testing, refactoring etc.) are prescribed. The XP teams are open for changes as long as the feature hasn’t started or they have similar size of an item which can be swapped. The work is done in strictly priority order. The priority is determined by the customer. The focus is more on small and frequent releases. XP focuses on programming. Immediate Feedback loops.



Lean and Kanban The lean concept has come from lean manufacturing where the focus was a continuous flow of work and eliminating waste (Muda). Kanban (Billboard or signal board or visual board in Japanese) is one of the lean methodology sometimes referred as Lean Kanban. The core focus is on visualization, work in progress limits, flow, and continuous delivery. The work is in one of the categories (to-do, doing or done). There could be N-number of categories. When we talk about software, it is most suitable for support kind of work. No required time-boxes or iterations. No set process roles are prescribed unlike Scrum where you have three roles defined (Scrum master, product owner, and team member)



Feature Driven Development (FDD) An iterative and incremental software development process which is often referred as a lightweight Agile process. The focus is on features. The main purpose of FDD is to deliver tangible, working software repeatedly in a timely fashion. The unit testing, pair programming, refactoring is not important. Modeling language (like UML) is leveraged and documentation is not mandatory at all.



Agile Unified Process (AUP) Simplified version of RUP (Rational Unified Process) The four phases are inception, elaboration, construction and transition. Inception – Stack holder acceptance, Initial requirements, high-level architecture, and scope is baselined here. Elaboration – The detailed design and architecture are accomplished in this phase. Construction – Working software building incrementally. Transition – Release and deployment The focus is on TDD, Refactoring, change management etc.



Dynamic Systems Development Method (DSDM) Focus on developing the system dynamically based originally on Rapid Application Development. Incremental prototyping It has primarily 5 phases Feasibility Study Business Study Functional/Business Model Iteration Design and Build Iteration Implementation



Above is very high-level information to get a hang of it. I shall be writing individual blogs about these methodologies in detail in my upcoming blogs.