The rapidly accelerating pace of technology change and a desire to achieve a competitive edge are forcing a growing number of organizations to re-evaluate the conventional approach of simply tossing resources at various enterprise projects and challenges.
Agile Development which puts software development on the front burner focusing on broader and deeper collaboration along with a more iterative approach has emerged as a key business and IT strategy. A growing number of organizations are adopting this methodology to address the need for more frequent release cycles and higher quality software.
However, agile development is complex and tricky. As a result, many organizations struggle with the concept. Here is the basic gist of things-
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile methods
The choice of a suitable agile software development methodology is the second pillar of a successful agile project. Many agile methods have evolved over many years. A few popular ones are Scrum, Feature Driven Development (FDD) and Dynamic System Development Model (DSDM), among others.
Scrum:
Scrum is a popular approach for team collaboration and product development. Scrum enables the creation of self-organizing teams by encouraging face to face communication across all team members involved in the project. A scrum project is facilitated by a scrum master whose primary goal is to remove impediments for the team instead of “handholding” them. Work is done in short sprints (iterations) of less than 4 weeks.
FDD:
Jeff De Luca and Peter Coad created the Feature Driven Development method. FDD is a simple, but well-defined process that avoids process overheads. Also, it is logical and the worth is immediately obvious to each team member.
DSDM:
DSDM has the unique distinction of having the best-supported training and documentation amongst any of the agile software development techniques. The underlying philosophy of DSDM is that nothing is built perfectly the first time. DSDM acknowledges that software development is an exploratory endeavor where clarity emerges more during development stage of the project. DSDM advocates active user involvement and empowered teams.
It is interesting to note that all these three agile methods, does not specifically mention about the software engineering practices required for the development of software. Unfortunately, many software projects embracing agile seem to go by the book and follow the frameworks without realizing that they are only a guiding light and not a process handbook. In that sense, these are probably only frameworks and not full-fledged methodologies. Neglecting the engineering aspect in agile projects is a sure recipe for failure.