“In every triumph, there’s a lot of try” ~ Frank Tyger
True, every success is an outcome of numerous trails and failures. History of software development is not a decade or two old, rather dates to the first electronic digital computers, back in the 1940s.
Since then software development process has undergone significant changes, a lot of trials and failures too. Several methodologies, methods and techniques emerged, and Agile is one such outcome.
Agile is an approach to project management, characterized by a model which emphasizes short iterative project cycle, customer collaboration, periodic reflections, continuous integration and constant feedback from the stakeholders.
But why should you choose an agile development team?
A software development process involves specification, designing, constructing, testing, debugging, deployment and maintenance. It is similar to creating a castle house, an ill-balanced card, and the entire castle house collapses.
Application development is like creating a castle house, an ill-balanced card, and the entire castle house collapses.
The agile model is characterized by constant monitoring, simultaneous integration and adaptability to change. To help you understand, here is a drill illustrating agile’s approach:
Step 1: Design Component A.
Step 2: Communicate to get Client’s approval. Thumps Up.
Step 3: Code production for Component A.
Step 4: Run Component A.
Step 5: Communicate to Client. An alteration request.
Step 6: Alter component A.
Step 7: Run component A.
Step 8: Communicate. Thumps Up.
Step 9: Design Component B.
The cycle goes on and on. Here, the underlying formula is to understand the gravity of overall software development process. Every step is finely planned, integrated and deployed to offer the desired outcome.
Agile process is founded on a belief to develop using “better ways”.
Essentially a software development process is problem solving which involves,
- Requirement gathering
At the core every development process involves the above activities, varying only in its method of implementation. In order to understand an empirical control method let’s read how traditional software development process worked.
Traditionally a software development process took an engineering approach to software development. “These software projects were often delivered late (if at all), over budget (often significantly), and did not meet all the requirements (and often had significant bugs).” Also it emphasized a sequential movement, which worked ‘flawlessly'(or at least tried to).
A software development process is highly complex, where a step cannot be finished completely. It requires constant going backing, re-working, modifying and moving forward. The idea that analysis can be totally completed, designing totally completed and implementation totally completed, is impractical and cuts out the scope for modifications and learning.
An empirical control model follows continual inspection and adaptation.
Agile implements an empirical control model which mean continual inspection and adaptation, at every step of the process. It welcomes unpredictability and variable nature of a software. An empirical control model follows adaptive movement, not necessarily linear.
At the end of it all, the question is “does it give value?”.
The question is “does it give value?”.
If your product, service or content for that matter fails to offer value, the efforts put becomes null. Pardon me for saying that, but it becomes a waste.
The founders of agile understood the importance of value delivery. Even though the most quoted agile metric is rapidity, the Manifesto clearly mentions “Individuals and interactions” over process and tools, thereby emphasizing centrality of value delivery.
As reported in Agility at Scale: Become as Agile as You Can Be, the popularity of agile expanded in 2009 with 76% of organization adopting agile techniques. A lot of its popularity owes to its value-delivery principle.
Darwin had long established that prerequisite for survival is evolution. It implies entities following the principles of evolution have better chances of success. The hallmark of a great theory is that it’s all-inclusive in nature.
At the core agile incorporates the ideas of cultural change. Shifting paradigms have led to different set of targets and expectations. And in the fast-evolving digital business scenario, the traditional methods of development don’t yield the desired results.
Shifting paradigms have led to different set of targets and expectations
Agile practices like “stand-up” (a brief agile team meeting to report task completed), short feedback loops(continuous, rapid feedback and improvement) and iterative planning (breaking of the tasks into small increments) points towards the inherent evolutionary principles.
Agile inherits basic principle of life itself– evolution and adaptation.
As Gartner rightly points out agile is not one thing. Agile development methodologies constitutes of a bundle of approaches that share a common philosophy differing in their implementation.
Agile is not one thing
What is agile really ?
- Highly customizable
- Open to assessment
- Collaboration driven
The philosophy underlying agile is fundamentals of thinking. It isn’t limited to software development process but extends to arena like marketing, customer support and wedding planning.
The article doesn’t perpetuates Agile as a magic bullet. It doesn’t mean agile is end-all and be-all of software development process. But that it’s better-adapted to some problems, changing paradigms and desired results. The concept is to change, inspect, grow and improve.
Happy reading : )