Agile Transformation: Manifesto and Principles of Agile
Agile methods and practices have becomes the most preferred method for delivering software. If your organization
- Already uses Agile practices or
- Moving to Agile practices or
- Think about move to Agile practices in future
Whatever it is- you need to know how the most popular Agile framework works and how to leverage Agile for achieve its most advantage.
We’ll discuss about-
- What it mean by Agile
- Where you will find blockage to agility
- Implementing Agile practices using Scrum
What is Agile
Agile is an approach to project management.
The word ‘Agile’ represents ‘Fast’ and ‘Respond to Change’ and it’ll continue driving changes in all types of organizations, especially, software development.
So we can say-
Agile is a flexible way to manage projects. This is a set of values and principles designed to manage projects with changing conditions or requirements, and deliver value both early and often on a project’s deadline.
In Agile approach we highlight about-
- Incremental and iterative cycle of development
- Continuous feedback cycle
- face-to-face and regular communication
- Ability to change over perfection and plans
- Main focus on quality and speed
In this complex, uncertain, and customer-centric world, agile helps companies to deliver value to their clients by following “continuous change” methods and mindsets.
Agile enforces cultural modification and responsibility of everyone in the team, unlike traditional command and control style management patterns.
Overview of Agile
In traditional project management what we do is- at the very beginning of the project
- Define the goal
- Make the plan to achieve that goal
- Define the estimated completion date of the project
That’s why waterfall project management- a linear project management process came into the scene. For example- building a house require linear process- where you will always build the wall before you build the roof.
Developing software isn’t like building a house. Software product is intangible, so exploration and experimentation is necessary in software development. So following a linear path is not very much helpful in software development.
So in order to manage a software project in efficient manner we need some effective good practices. Lack of effective good practices can lead- unpredictability, repeated error and waste of time, cost and effort. In that case-
- Customers are disappointed by slipping of schedules, growing of budgets and poor quality of product (software).
- Developers are disheartened by working ever-long hours to produce a poor quality product (software).
Some industry experts calling them Agile Alliance observed that many of the software teams of different corporations were stuck in such ever-increasing process. So they met early 2001 and outlined some values and principles that would allow software teams to develop quickly and respond to change.
Then they worked next several months and created a statement of values. This is known as This is known as The Agile Alliance manifesto.
Manifesto for Agile Software Development
We’re finding higher ways to develop software by doing it and helping others do it. This work has given us value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile philosophy provides more priority to left objects than right ones i.e. we will give more priority on –
- Individuals & Interactions than Processes & Tools
- Working Software than Comprehensive Documentation
- Customer Collaboration than Contract Negotiation
- Responding To Change than Following a Plan
But agile does not suggest ignoring the right elements i.e. Processes & tools, Comprehensive documentation, Contract negotiation and following a plan. It just says all left items i.e. Individuals & Interactions, Working software, Customer Collaboration & Responding to change are more important than all those right items to make the software successful.
Signatories of Agile Manifesto
Kent Beck, Jim Highsmith, James Grenning, Ron Jeffries, Andrew Hunt, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Mike Beedle, Arie Van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, Dave Thomas
We are now going to discuss the details of each statement of value in the Agile Manifesto.
Individuals and Interactions over Processes and Tools
Consider following scenarios-
- We are following world best processes and tools but we don’t have any good team player then the project will fail definitely
- We have a team with best programmers but follow bad process and tools then also the software can be inefficient
- We are following world best processes and tools also have best programmers but they are unable to use those processes and tools then also the project will fail
On the other hand-
- We have a team of average programmers and they are expert in communicate each other and following the process well and make use tools successfully then the project will get success
So we see in the above scenario is-
Processes and tools are important for developing software, but it is the team members who achieve project success by using these processes and tools successfully.
So it is recommended to
- First of all build a self-organized and cross functional team
- Then let the team to configure the environment, select process and tools on the basis of need
Working Software over Comprehensive Documentation
Software working properly makes our customers happy and makes our project successful. The team will make every effort to create functional software.
Without documentation software is kind of disaster. Therefore, write a short, structured document of one or two dozen pages containing only the overall design and high positional structure of the system.
There is a simple rule for preparing such a document is-
Do not create a document unless its require immediate and significant
Client Collaboration over Contract Negotiation
We make the software for our customer. So their desires and their satisfaction will be our top priority.
To make a product successful customer feedback on a regular and frequent basis is very important. Rather than relying on a statement of work or contract, the client of the software will work closely with the development team; so that they can provide regular and frequent feedback as per development and design. On the other hand, the development team changes the developed product according to customer feedback as needed.
Responding to Change over Following a Plan
Image credit: https://leadagile.in/2017/11/26/agile-manifesto/
The success or failure of the software depends on its ability to change.
Planning is very essential part of make the system successful. But long term plan can make disaster because-
- At the beginning of developing any software, the customer often fail to explain exactly what they want but when the system become visible they feel to need some changing or adding of features and functionalities.
- If the business environment changes then in order to cope with new environment need to add or change some features and functionalities.
When we create a long-term plan, it is difficult to adapt these changes to the system because we already have the plan and we have to follow that plan. But as the customer doesn’t need some of the features of the software anymore; so the system will become quite useless. So what is recommended is that-
- Design the system flexible so that it can adapt any changes during development
- Make a detail plan for next week i.e. we need to know the details of every individual task which we are going to work on next week.
- Rough plan for next 03 months i.e. learn about the requirements that we will be working on in the next 03 months.
So in summary we can say-
Don’t make a long-term plan, as customer requirements may change at any time. Design your system in such way so that it can adapt any future changes.
Based on Agile Manifesto there have 12 principles. These principles describe some characteristics and those characteristics make the difference of agile practices from a heavyweight process.
Satisfy Customers with an early and controversial delivery of Valuable Software
- Deliver partially developed software within few weeks of start of the development
- Continue this delivery process throughout the entire life cycle of the project
- Each delivery should contain either new developed feature or update of previous delivered feature as per feedback of client
- Customers can put these systems into production if they are functional enoughotherwise they will recommend the functionality to change.
Welcome changing requirements, even late in development
- Allow change of system as per customer feedback
- Help team to learn what needed to satisfy customer
- Design software structure flexible; so that change can be easily adapt.
Deliver working Software frequently from a few weeks to a few months
- Deliver working software early and often that satisfies the customer’s goal/ meet customer’s need
Business People & Developers must work together daily
- Customers, developers and stockholders must have significant and frequent interaction.
- They will work together to make the product success.
Build projects around motivated individuals
- Build team with motivated individuals who are self-organized and cross functional
- Trust on the team to get job done
- Give better environment and all supports they needed
Face to face communication is the best form of Conversation even in co-location
Face to face conversation is the most effective and efficient method for conveying information within the team. So agile suggests
- Use face to face conversation so that attendees can see each other.
- In case of co-location can use video calls
Working software is the primary measure of progress
- Progress of a project measures by the amount of functionality of the software that meet the client’s need.
Agile strictly disregards
- In which face the project is currently in
- The volume of documentation that have been produced
- Amount of infrastructure code has written
Here 30% done means 30% functionality is working properly.
Agile processes promote sustainable development
Agile project is not like a 100 meter sprint. It’s like a marathon. So what suggested is-
- Sponsors, developers and users should be able to maintain a sustainable constant pace
- Team will not work with full speed at the beginning of the project because
- It will make team tired very soon and they will get slow down.
- It will introduce bugs, errors and obstacles.
- It will force the team to look for shortcuts that will affect the code quality i.e. reusability, flexibility and maintainability of the codebase. Resulting is difficult to change the codebase and buggy product.
So strictly avoid work with full speed
- Team will not try to do tomorrows work today although they have some time to do that. Instead they will save their energy to keep the pace.
- Team will always work at a rate so that they can ensure a constant pace as well as highest quality of the software for the entire life-cycle of the project
- Team will strictly keep their pace and don’t allow getting tired at any way.
Continuous attention to technical excellence and smart design increases agility
- Software should be clean and robust
- Team members should committed to produce high quality code
- This will ensure high speed also
Simplicity the art of maximizing the number of work that has not been done is essential
- Similar to Keep it Short and Simple (KISS) principle
- Avoid unnecessary complexity of the software
- Select the simplest path to meet the goal
- Don’t try to anticipate tomorrows work today
- Also don’t try to defend tomorrows problem today
- Do the simplest and highest quality work for today with confidence that it can be easily changes if there any problem found tomorrow
The best planning, requirements, and designs emerge from self-organizing groups
- Agile team members are self-organized and cross functional.
- They will work together in a project; they will work as a whole to determine the best way to fulfill the responsibility
- No single team member is solely responsible for design the architecture or requirements analysis or test.
- All the responsibilities should be share to entire team
- All members should have influence over all the responsibilities
Regular adaptation to changing circumstance
Image Credit: https://www.knowledgetrain.co.uk/agile/agile-principles
- Team will concentrate on how to increase their effectiveness at a regular interval basis. Then tune and adjust as per observation result.
- Team contentiously adjusts its organization, rules, conventions, relationships etc.
- Team must need to change with the change of environment to remain agile.
In next post I will discuss about different agile frameworks and how to select your best framework considering few different aspects.
Md. Mojammel Haque
Sr. Technical Lead at Insightin Technology
Md. Mojammel Haque is a passionate software engineer with more than 10 years of software development experience in using different .NET technologies like ASP.NET MVC, ASP.NET Web API, ASP.NET Web Forms, C#, Entity Framework, SQL Server, Unity IOC etc.
He has a depth knowledge of Agile methodology, Scrum Framework, Object Oriented Analysis & Design, Domain Driven Design, Unit Testing, Acceptance Testing, Integration Testing, GOF Design Patterns, Enterprise Patterns & Refactoring of existing code.
He has successfully completed Certified ScrumMaster® (CSM), Certified Scrum Product Owner® (CSPO), and Certified Scrum Developer® (CSD), Certified Scrum Professional-Product Owner® (CSP-PO), Certified Scrum Professional-ScrumMaster® (CSP-SM) certifications from Scrum Alliance Inc.