With no rules at all
Yes! You read it right. Agile has no rules that need to be followed. It has no regulations that need to be abided with, nor it is a path that will lead to a glorious project. Agile can be visualized as the signboards that, if followed, can make the journey of project development and delivery smooth.
What Agile is NOT? 👎
To understand what is Agile, we must ret rid of the misconceptions of what we think about agile. Agile is always thought to be the following. But in reality, it isn’t anyone of these.
- Methodology: A system of methods that need to be followed
- Paradigm: A specific way of developing software
- Framework: A basic structure underlying a system
So what is Agile? 👍
The answer to “What is Agile” is so simple that it takes more time to clarify “What Agile is not”. 😅
In the simplest terms, Agile is a
- Set of VALUES and PRINCIPLES (beliefs)
- That helps you to make DECISIONS (small or big)
- About how to do the work of DEVELOPING SOFTWARE (or anything else)
The Agile Manifesto
The Agile Manifesto is a brief document that was developed over the increasing need for an alternative to documentation-driven and difficult software development processes.
The 4 Agile Values
It says that we can make better software by valuing the items on the top over the items at the bottom.
The statements are meant to be relative instead of absolute i.e. in no way, the items on the bottom can/should be ignored. It’s only that the items on the top should be valued more.
- Individuals and Interactions over Processes and Tools
While processes and tools prove to be good for any organization, the individuals using them should be considered more important. Good tools in the wrong hands are of no use at all.
Moreover, the interactions that happen between the people help them to collaborate and discuss issues when they arise.
- Working Software over Comprehensive Documentation
Many projects start with documenting all the aspects of the requirements, deliverables, test cases, etc. While this approach is good, it often takes a few days to several weeks to complete the documentation before beginning to write code.
The Agile manifesto recommends shortening the process and begin the development early so that the deliverables of the projects could be shipped quickly.
- Customer Collaboration over Contract Negotiation
Contracts are created between parties as an agreement of a project. However, many times the contract becomes a reason for conflict even for the slightest things
The Agile manifesto recommends focusing more on continuous discussions with the clients and get their feedback so that the product works for them
- Responding to Change over Following a Plan
It is always good to have a plan. However, it is often that the plan has to be modified in order to suit the current requirements. Being stringent on the plan may lead to unwanted scenarios
The Agile Manifesto focusses on changing the plan based on the current circumstances. The plan should be reviewed every few days (or months) and the changes should be accommodated accordingly.
The 12 Principles of Agile
Agile has 12 principles that are the core of its values. Below are the principles.
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity — the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Agile vs Waterfall
Comparing Agile with waterfall is like comparing a car with a boat. Both of them are a good fit for their respective purposes. Neither of them can replace the other.
The Waterfall model is suitable when the requirements are clear and the results are predictable. On the other hand, the Agile approach is suitable when the level of uncertainty is high and the results are not predictable.
Below are simple real-life examples that fir with both the approaches
- Waterfall: When you want to construct your home, all the details such as the no. of floors, rooms on each floor, doors, windows, staircases, bathroom fittings, electricity sockets, etc are finalized before the project begins. The results, time, and schedule are predictable will little or no variation.
- Agile: When you plan for a vacation, the location, duration, accommodation, etc are defined. However, the places of visit, what food to eat, etc are not finalized initially. Moreover, you may choose to extend your trip in case you’re enjoying it. These decisions can be made while you’re on vacation. The results, time, and schedule will change based on your decisions.
Benefits of Agile
- Adaptability: Unlike other approaches, Agile is flexible to accommodate changes as it doesn’t enforce any rules or processes
- Time-to-market: As it is an iterative approach, significant portions can quickly be shipped to the market even if the entire product is not developed.
- Reduced Costs: The overhead of extensive documentation and inability to accommodate changes are not prevalent in Agile, thus reducing costs
- Customer Satisfaction: As the team works closely with the customers for demonstration and feedback, the satisfaction level is higher when compared to other approaches
How to make Agile successful
Below are a few tips to make Agile successful
- Talk to the users often. Understand their requirements.
- Face to face communication. Establish communication with the engineering team. It could be over video conference as well.
- Perform short daily standup meetings. Only discuss the overview of what’s going on. Don’t get into the details. Trust the team.
- Demonstrate to the end-user. Do it on a regular basis. This establishes transparency and provides feedback early