Agile Development vs Traditional Development
Heavyweight methodologies are considered to be the traditional way of developing software. These methodologies are based on a sequential series of steps, such as requirements definition, solution building, testing and deployment. Heavyweight methodologies require defining and documenting a stable set of requirements at the beginning of a project. A very popular example of Traditional Software development methodology is the waterfall model.
What is Agile and why we chose it?
The following principles of agile methodologies are seen as the main differences between agile and heavyweight:
People Oriented– Agile methodologies consider people as the most important factor of software methodologies.
Adaptive – The people working in agile process are not afraid of change. They welcome changes at all stages of the project. They view changes as good things, because they mean that the team has learned more about what it will take to satisfy the market. Their challenge is not stopping change but rather determining how to better handle changes that occur throughout a project.
Balancing Flexibility and Planning – Although planning is important, the problem is that software projects cannot be accurately predicted into the future, because of the many variables to take into account. A better strategy is to make detailed plans for a few weeks, very rough plans for the next few months, and crude plans beyond that. One of the main sources of complexity is the irreversibility of decisions. If you can easily change your decisions, it means it’s less important to get them right – which makes your life much simpler. The consequence is that designers need to think about how they can avoid irreversibility. Rather than trying to get the right decision now, look for a way to either put off the decision until later or make the decision in such a way that you will be able to reverse it later on.
Simplicity – Agile always take the simplest path consistent with their goals. The reason is so as to make it easy to change the design if needed later. Never produce more than what is necessary and never produce documents attempting to predict the future, as they will become out-dated. “The larger the amount of documentation becomes, the more effort is needed to find the required information, and the more effort is needed to keep the information up to date”.
Collaboration – Agile methods involve feedback on a regular and frequent basis. The customer works closely with the developers, providing frequent feedback. Constant collaboration between agile team members is essential. Due to the decentralized approach of the agile methods, collaboration encourages discussion.
Small teams – An agile team is a self-organizing team where responsibilities are communicated to the team as a whole and then they determine the best way to fulfil them. Agile teams discuss and communicate on all aspects of the project. That is why agility works well in small teams.
Unlike Heavyweight approach, Agile methodologies focus on the talents and skills of individuals, moulding the process to specific people and teams. Whilst in Heavyweight methods all tasks and roles are assigned to individuals and it is expected that the individuals will perform their tasks accordingly.
All in all, Agile ensures a flexible environment along with a minimal overhead of documentation etc. Poor communication is the biggest reason for failure of software projects. Poor communication can be between the client and the developing team, the developers and the team leader or even among the developers themselves. Agile development strikes a blow at this drawback of traditional development, and ensures maximum possible interaction between the client, team head and the developers. Thus ensuring a highly reduced failure rate as compared to traditional software development.
HOW CAN WE HELP?