Agile development has become a standard approach for most software development teams today. Most customers at VenturePact are becoming more particular about implementing Agile and Scrum methodologies in their product development process.
But many people do not know how software development has evolved in the last 30 years. In this post, we will take you through the evolution of agile development and its various methodologies.
The ‘ Heavyweight’ Era
In the ‘80s, developing a software program meant adhering to the then-prevalent Software Development Life Cycle (SDLC) or Waterfall Methodology. The SDLC process was characterized by heavy documentation, a lot of back and forth with the client, requirement analysis and months of laboring just to set the documentation right.
‘What’s wrong with that?’, you may ask.
Lloyd Wilkinson here tells us what was exactly wrong with this heavyweight software development methodology. “Does anyone believe that the document under consideration specifies in its entirety and without reservation, the system the user wants to solve his business problem? Remember, this is not our first rodeo. We’ve been down this path before. Is there a clause in the document for change requests? Of course there is. Why are we already anticipating changes to a document and requirements that we have just spent 2-3 months laboring over to make sure we have covered all the bases and gotten everything just right? Because it’s simply impossible to get it exactly right the first time. Change is inevitable. Sometimes it is because the business changes. This happens constantly. Sometimes it is because, even with great care being taken, the analysts may not get the requirements and specifications just right the first time”, writes Lloyd.
By the time the documentation was over and went into actual implementation, months or even years went by and the system was no more in line with business’ expectations. Or even worse, the business changed and thus required a different system altogether. In this process, you could not go back a step; things got tricky in the implementation phase.
These woes were common to all software developers during that period and gravely affected productivity.
Then… The Tables Turned at the Snowbird Ski Resort, Utah
The need was to adopt software development methodologies which were ‘ lightweight’, had scope for changes during the development, were iterative in nature and involved frequent feedbacks. In the mid 1990s, 17 industry thought leaders realized that change was inevitable. They realised that adapting to changes, and executing them in an incremental manner, would result in productive software development. And thereon began the promotion of an innovative approach to software development.
Earlier known as lightweight, these methodologies were soon put under an umbrella called Agile development in 2001 at the Snowbird Ski Resort, Utah, where these 17 thought-leaders came together for the first time. Thus came into existence the Agile Manifesto (below), which uncovered better ways of developing software.
Agile: As We Know it Today
Simply put, Agile is all that Waterfall was not. It is a test early and often methodology which emphasizes teamwork, collaboration, continuous planning, rapid iterative development and emergent design. And all methodologies which come under the agile umbrella, aim to do just this. Let’s quickly understand the major agile methodologies and how they work.
MAJOR AGILE METHODOLOGIES
SCRUM: It a holistic, incremental and iterative product development strategy where the development team acts like a unit working towards a common goal. It embraces creativity and uncertainty and focuses on the learning process – what is built and how it is built. SCRUM works on the principles of continuous improvement, teamwork and empiricism.
Behavior-Driven Development (BDD): As a part of this process, the programmer begins with writing functionality which is most important to the end user. The developer here steps into the users’ shoes. She first writes a test, weighs it against user expectations and then goes on to write the application. It is more than just a process, it is a paradigm.
Test-Driven Development (TDD): This pertains to the repetition of a short software development cycle where the developer first writes a test case, which defines a particular functionality, and then produces a short code snippet to pass this test. Thereon she keeps correcting the code until it meets the standards specified in the test. This improves programmers’ productivity (as proved in a 2005 study), reduces the chances of having bugs in the final product and there’s a lot more confidence in the team and the users.
Adaptive Software Development (ADP): In this methodology, instead of writing the code down on the computer system, developers carry an idea in their mind. So, whenever an adaptation or change request arises, the developer simply implements it. Since there are no pre-planning steps, the developer makes the software rapidly.
Extreme Programming (XP): Extreme programming focuses on teamwork and collaboration. It was aimed at improving developers’ responsiveness to changing customer requirements. XP touches upon 5 key points of software development: communication, simplicity, feedback, respect, and courage. It is an ancestor to most of the present agile processes and advocates frequent releases in short software development cycles to introduce points to adopt change requests and customer feedback.
Ever since Agile has come into existence, several other industry-leaders have been making continuous efforts to improve it, seeking inspiration from lessons learned in other industries – the latest being Kanban and Lean development.
And just as this methodology continues to evolve, so does our fascination about it. So we’re coming up with a series of problem-solving articles dedicated to Agile software development, that’ll explore every aspect of the methodology in detail. If you are launching a new development project, or making a shift from waterfall to agile, this series is something you should watch out for! Stay Tuned.
Want to know more about Agile Development? This E-book can answer your questions.