Some of the software development methodologies include
- Rapid Application Development (RAD)
Of all these, Agile seems to be versatile and adaptable to complex projects. Agile was developed as an alternative to phase based approaches. It is based on the following four philosophies
- Individuals and interactions
- Working software
- Customer collaboration
- Responding to change
Agile consists of several methodologies including Scrum, Extreme Programming (XP), Crystal, Dynamic Systems Development Method (DSDM), Lean, etc…
All these are good methodologies, but will they fit your workflow?
What is wrong with traditional methodologies? The biggest criticism against traditional approaches are that they are phase based, where the requirement phase precedes design and all requirements need to be well defined before design starts. Nothing wrong with that, except the assumption is that you cannot go back and request for change in requirements.
Agile is a good philosophy. It gives you a direction to walk towards your destination, but does not necessarily tell you how to take the steps. You still need to take one step at a time.
Use agile as a process not a method, use it as an overarching philosophy. Any complex system can be broken down into simpler modules. Breakdown your project into smaller projects, smaller projects into smaller tasks, and so on, into smallest unit possible. Define requirements for this smallest unit and design it to meet those requirements. You can be a customer to your own product, so you can define requirements for this unit. As the project develops, and if the requirements and or designs change, the smallest unit can be modified/discarded with minimum risk on the resources and timelines.
Using analogy, you cannot build a bungalow without laying the bricks one by one. If one brick breaks, replace it with the other.
Agile can be an easy escape from lack of necessary design and documentation. Do not let it steer you away from the fundamentals. Use it wisely and more importantly, to your advantage.
Agile or no agile, pick a method, follow a process… without that it is easy to get lost.