Evolution of Agile Methodologies. Engineering vs Agile Methodologies.
Software Development was initially based on coding and fixing. That worked well for smaller software, but as the size and complexities of software grew a need for a proper process was felt because the debugging and testing of such software became extremely difficult. This gave birth to the Engineering Methodologies.
Engineering Methodologies or Plan-Driven Methodologies
These methodologies were developed to make the software development to happen in a more disciplined and structured manner which ultimately avoided many bugs and/or inefficiencies and/or inflexibilities of the software in the early stages of the development itself. Evidently the testing and debugging became less terrible and due to all these advantages the engineering methodologies became hugely successful. Example: Waterfall Model
If engineering methodologies were so successful why did we need this? Well... nothing is perfect and Engineering Methodologies are no exceptions either. They require hell lot of documentation (to make the software development more disciplined and structured) and hence they cause the pace of the development to slow down considerably, especially for larger software. In a way Engineering Methodologies look bureaucratic in nature.
Agile Methodologies evolved to significantly eliminate (or lessen at least) targeted this drawback of engineering methodologies. Agile Methodologies require quite less documentation than engineering methodologies as they make a useful compromise between no-process (as was the case earlier) and heavy-processes (as is the case with Engineering Methodologies). So that way it comes somewhere in between the two. Isn't it going backwards? No... Agile Methodologies use different approach to cut down on documentation and hence the software development remains almost as structured as it is with Engineering Methodologies. How do Agile Methodologies manage to chop off the documentation to that extent? Simply by emphasizing on a smaller amount of documentation for any given task and by making the documentation code-oriented most of the times. The designers of Agile Methodologies believe that source code should be a key part of the documentation. This approach not only avoids huge documentation otherwise, but also make the documentation more precise and effective. Using Agile Methodology we try to focus on the smallest workable piece of functionality to deliver business value early, then we develop this functionality, test it, and keep on adding other/new functionality throughout the life cycle of the project. This gives a chance to look at project and adapt to changes if required every few weeks instead of finalizing everything in the beginning and then continue working on it thereafter as is the case with Engineering Methodologies like the very famous Waterfall Model.
Differences between Engineering Methodologies and Agile Methodologies
- Predictive vs Adaptive - Engineering Methodologies are Predictive in nature and they focus too much on pre-planning of the processes in great detail. This obviously makes them comparatively less flexible for future changes. Agile Methodologies in contrast are Adaptive in nature and they welcome changes even to the point of changing themselves.
- Process-oriented vs People-oriented - Engineering Methodologies are Process-oriented. As mentioned in the above point they focus on pre-planning of processes in great detail and subsequently come up with a defined overall process to be used by whosoever uses it. Agile Methodologies on the other hand are People-oriented as they believe process definition is not an independent thing and the development of a software relies heavily on the skills of the development team rather than on defined processes. Agile Methodologies use processes only to support the development team in doing their work more effectively and efficiently. Process never takes a lead in agile methodologies.
Liked the article? You may like to Subscribe to this blog for regular updates. You may also like to follow the blog to manage the bookmark easily and to tell the world that you enjoy GeekExplains. You can find the 'Followers' widget in the rightmost sidebar.