What is Agile?
Agile has been the buzzword in the business world in 21st century.
Everyone talks about agile approach, and believe agile is the only way to survive and thrive in today’s business environment.
However, I noticed that majority has knowledge gap on understanding what agile values and principles are.
So, I would like to back to the basics, and discuss the top 4 agile values and 12 principles.
I promise, I will keep it simple and easy for you to understand.
So…. Please read on!
The Agile Values
There is one time, I was at an interview, one of the interviewer ask me to explain what agile is, and where it is from.
However, the interviewer insisted agile was originally coming from sales and marketing.
At that moment, I was stunned by the answer. I knew it at heart he is wrong, but I don’t want to make myself look bad by arguing with a stranger.
I ended up keeping quiet and tried to finish off the interview as soon as possible.
Now, you might ask, “Where does agile originally come from?”
Agile was coming from software development industry.
It was first discovered back in 2001.
The story began with 17 software developers came together to share their experience, ideas and practices, to discuss how to “uncover the best ways of developing software”.
Hence, the Agile values (manifesto) was born and became a revolutionary movement in software development world.
I know it is difficult to tell by reading those four values without much context.
Don’t worry too much. I will go through each of these values in detail with you shortly.
Value #1: Individuals and interactions over processes and tools
Some people in the agile community took an extreme by valuing people and believe tools process and tools are the root of all evils.
Well, please don’t get me wrong, tools are still powerful!
Processes and tools are required to streamline and support the team and facilitate interactions. But, at the end of the day, it is human to put in effort, innovative ideas to help solving business problems.
Value #2: Working software over comprehensive documentation
Back in the old days, an extensive, well-written documentation is required before a single line of code was written. Therefore, software often took ages to build and customers end up getting not what they expected in first place.
In agile, we knew that shipping out software in the hands of customers is the highest priority, hence we create “just enough” documentations for the delivery team, which results more efficient delivery of a working product and gather feedback from end-users at earlier stages.
Value #3: Customer collaboration over contract negotiation
Software product was written and delivered based on what was listed in the contract between customers.
It is difficult to tell whether what the software is developed in a way where it meets the customer needs and wants.
Hence, agile methodology approaches in a way where customers are encouraged to participate as part of the delivery process.
Generally It begins early in the development process and continuously building an effective, useful solutions to customers by gathering feedbacks into development process.
Value #4: Responding to change over following a plan
One of the most important benefit of agile is that it encourages frequent changes systematically based on the new information gathered and analysed in the team.
The product roadmap is not longer a fixed document, it can be changed based on different situations and reasons.
The product roadmap needs to be communicated in a transparent manner that reflects on new changes or update based on learnings found in delivery team.
12 Agile Principles
After the agile manifesto is being developed, there consists of another 12 agile principles to support the team to transition into agile.
Agile Principle #1 – Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Since agile embrace just enough documentations and cut down any unnecessary activities in software delivery process, it helps in getting the software to market faster and deliver a product that meets the customer’s needs.
Agile Principle #2 – Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
The world has been constantly changing at rapid pace, so nobody can really predict what is the next features or requirements they would like to have in a piece of software.
From a business perspective, it makes no sense to build features that is not longer relevant to the market. Hence, agile comes in place and helps customer’s business to stay competitive and ahead of the game.
Agile Principle #3 – Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
What it really means is that, software should be released frequently, with a set of new features or update, within a shorter timespan. Frequent releases provides a quick tastes to customers on the product, and shorter feedback cycle loop to delivery team.
Agile Principle #4 – Business people and developers must work together daily throughout the project.
Back then, developers are often shielded off from business people. Business Analysts plays a role and put between them to “translate” the business language to a language that developers can understand.
This agile principle calls upon organisations to remove these barriers and let developers and the business interact with each other daily.
Agile Principle #5 – Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
This is a big revolution and mindset shifting in management and leadership. Traditionally, people with power strategised, planned, and micromanaged all the work that needs to be done, and developers has to do what it takes to deliver the product.
In agile, teams should be trusted and self-organised. Everyone in the team has their specialty, hence it is best to let go and let them work together and solve all the issues or risk occurred in the project.
Managers are encouraged to foster great working environment and support in order to get the job done.
Agile Principle #6 – The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
It is always easier for teams to ask questions, suggesting idea and communicate when they are on the same location or within the same time zone. The reason being is that, you want to shorten the time between question and answers.
Agile Principle #7 – Working software is the primary measure of progress.
As a customer, they don’t really care how many bugs fixed, how many lines of code has written, how many time does it take to deliver. All they care is a working software that meets their minimum requirements or needs.
Thus, the best metric to measure team’s working progress is based on working software.
Agile Principle #8 – Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely.
Team burnout is a very common in agile software development team, especially when working on a large-scale project which takes long time to deliver.
Hence, agile promotes work should be delivered in a short, productive cycle, as excessive burst by forcing developers to work overtime will impact the quality and effectiveness. It is important to let teams to choose their right pace.
Agile Principle #9 – Continuous attention to technical excellence and good design enhances agility.
Agile teams are responsible on taking ownership of the work they produce and ensure the quality of work is easy to maintain and extendable down the track.
From time to time, teams will clean up any redundant and confusing work and improve in each iteration. Hence, it is important to take time to review the solution before it is getting too late.
Agile Principle #10 – Simplicity—the art of maximising the amount of work not being done—is essential.
To maximise the amount of work not being done can be improved in several places; either dump any irrelevant processes, automate manual work, use existing libraries instead of writing your own, etc. Not only it will save a lot of time and money, it also let the teams to focus on delivering more value to customers.
This is an ongoing process for all organisations, hence retrospective sessions are introduce to help teams identify where and how we can improve in future.
Agile Principle #11 – The best architectures, requirements and designs emerge from self-organising teams.
Great agile teams should able to identify what is the best and make their own decisions on architecture, designs and requirements. They are energetic, motivated and does no longer need to be told what needs to be done.
In addition, agile teams should resolve any issues or problems, clear any obstacles and find solutions themselves. Hence, it is a very bad agile management practice if the manager wants to micromanage an agile team.
Agile Principle #12 – At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
In a fast changing work environment in nowadays, it is important to learn take time and reflect together as a team, especially near the end of each iteration.
There are few questions we can ask at the retrospective sessions,
“Is there anything we can improve?”
“Is it any flaw in our current process? How can we change it?”
“Is there anything we can do better in our next sprint?”
Note that, retrospective sessions must be conducted in a safe, inclusive and encouraging environment to enable teams to share their thoughts and adjust their behaviour accordingly.
Here are the summary of 4 agile core values and 12 principles:
4 Agile Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer Collaboration over contract negotiation
- Responding to change over the plan
12 Core 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 maximising the amount of work not done–is essential.
- The best architectures, requirements, and designs emerge from self-organising teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
Thank you for reading this article.
Please leave a message if you have any questions or comments.