Are you interested in learning about what Agile Manifesto, what Agile’s core principles and values are and what they have to offer to help you benefit from the same in your organisation?
Well, if you are, then you have come to the right place, because after reading this article, you will come to know about:
By the end of this article, you will have comprehensive knowledge about Agile Manifesto, its values and principles. Expansive as it may be, but it will feature core elements that define Agile in itself and how it can sort things out in any type of organisation.
Firstly, Agile software development, also known as Agile, is an outlook to software development, one that unfolds requirements and solutions through the collaborated effort of self-organising, cross-functional teams and their clients or end users.
It recommends planning using adaptive methods along with evolutionary development, empirical knowledge, and continual progress.
This is a very short description out of the ocean of information about what Agile actually is. However, let’s stress on what Agile Manifesto is.
The Manifesto for Agile Software Development, commonly referred to as Agile Manifesto, Is a legal official order that includes twelve principles and four values to show the way for an iterative and people-centric approach to software development. It focuses primarily on testing while keeping the code simple, delivering the functioning bits of the application as soon as they are ready. It promotes an easy, clear and simple approach to developing software in short sprints so that each functioning bit of the software could be analysed and tested based on the client’s or the end user’s requirements, and may be changed if required to meet their needs.
Although this set of values and principles were formed primarily for software development, the same can be applied to different forms of business.
This makes Agile a very effective and flexible method for all forms of business.
It all began in Snowbird, Utah from February 11 to 13, 2001, where the ‘Manifesto for Agile software’ was formed. In the meet, seventeen developers formed this manifesto, ones such as Kent Beck, Ward Cunningham, Dave Thomas, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, and Bob Martin. They already had established themselves as leaders in the software industry and abandoned the ‘Waterfall’ approach.
They realised the difficulty in creating good software and wanted to introduce new values to software development teams. This led to the desire of having a process etched on stone, a process that they were already practising on to bring a change in software development.
Together, they published the ‘Manifesto to Agile Software Development’, that marked the beginning of the Agile movement.
Agile Manifesto comprises of four fundamental values and twelve supporting principles, ones that head the Agile approach to software development. This manifesto defines the values and principles that software teams should embrace to achieve the landmark of creating good software.
We will discuss the four values of Agile, each value having two aspects, the ones at the left emphasise over the ones at the right. What is great about this manifesto is that it does not propose alternatives, but defining values, thus encouraging developers to pay attention to certain areas whilst not bypassing others.
According to the Agile Manifesto, the four values are as follows:
Let us see what these values individually have to offer and what we learn from them.
This stresses on the fact that although the right tools are vital to developing good software, it is very essential to have a cognitive unit to perform the task in the first place. A team of developers working together on a project with separate but unique tools in a single room will perform efficiently and quickly to deliver before or on the deadline day than isolated developers working with a well-defined process and a common set of state of the art and sophisticated tools in a huge office.
We are not denying the fact that tools do not play an important part in creating good software. Of course, they do but we should bear in mind that tools do not work on their own and need people to make them work.
And what are human beings in general?
We are social beings and deliver quicker and with more efficiency when working together in a group. A cognitive unit of hard working and smart employees will work in tandem without any communication gap and make the flow of work smoother
In the past, there were records of lots of time being spent on documenting the product for development and delivery under tight deadlines. Test plans, technical requirements, documentation plans, interface design documents, technical specifications, technical prospectus, and approval required; the list was endless and this caused long delays in development. Documentation is important and serves the purpose of making the end users or co-workers understand how the software works. But there are times when the developers of a company are left with an uphill task of doing the documentation even before the commencement of developing the software, and if the company follows Agile methodology, then they should remember that the primary aim of a software developing company is to develop software, not to engage in the documentation for the majority of their time.
Here, Agile comes into play and makes things easier for the developers. It breaks down the requirements of the client in the form of documents as user stories and that is exactly what each developer would need to begin working on developing the software.
Your customer is the key to your success. Logically speaking, customers are the ones who help you in making better software. And How? Well, that is easy to explain. Customers are the users who will end up using a particular software. Developing the same while taking feedback and inputs from them will help you focus on the prime objective of giving the customers what they really want. They might not help in providing you with the next breakthrough idea, one which you have to come up with, but working closely with them and listening to their input will help you create what your customers desire for and as a result, develop flexible and successfully developed software.
Sometimes, legal contracts with customers act as a barrier for you in communicating with your customers. You will need to devise a plan to separate the legal bounding that you have with your customers from the product relationship.Contract negotiations will be there as a part of the deal, but forming a relationship with the customer to facilitate communication will help you interact with the customers with a human touch, failing to do which will not help in developing great software. Creating a relationship with the customers will help in knowing their preferences, thoughts, and opinions. This might be a difficult task for you, but in the long run, doing so will help you achieve much better results.
There is only one boss. The customer. And he can fire everybody in the company from the chairman on down, simply by spending his money somewhere else.
- Sam Walton
Changes do happen in software development. Changes in technology, business trends and strategy, etc. Being flexible with the flow of change is what the fourth value of Agile all about.
Following a project plan is fine. However, the same must be flexible and should have some room for changes or it will soon be forgotten as some misplaced faith of self-righteousness.This, on the other hand, makes the life of software testers difficult. Let me tell you why.
The software testers analyse and test the functioning bits of the software after its development. However, due to sudden changes in the technical part, business plans or strategy, the testers are not aware of the sudden changes or updates that the developing team are made aware of and need to change their testing strategy accordingly.
This results in communication gaps being formed between the testers and the developers thus putting the testers under tremendous pressure to deliver on time.
In order to get this issue sorted out, you need to go back to the first value of Agile, which is communicating across teams to stay updated about the changes for a better and more effective workflow. It is more like an initiative to be taken by the testing team, that is, to communicate with the developers to stay in the loop of changes or a new course of action.
Now that we have covered on the four values of Agile, let us move ahead to show you what the twelve principles of Agile have to offer and in what way they can help.
The twelve Agile principles form the ‘twelve commandments’ of the ‘Agile Movement’ methodology, ones which embrace change and consider the customer as the focal point. They also denote the movement’s intent, that is, to bring development into alignment with business needs, as described by one of the signatories of the manifesto, Alistair Cockburn.
The twelve principles of Agile development include:
The best way to make customers happy is by delivering the software early for testing and feedback, to let them know about the progress, the implementations, and acknowledge the delivery value by fulfilling their top priority requirements first. Each iteration has an outcome, a working code that can be applied to examine and respond to the ever-changing user requirements.
This stresses on responding to change instead of staying strictly aligned to an approved plan. It involves a simplified version of handling change with the necessity of no formal documentation or approval. This is done to have control over change for the customer’s competitive advantage because it fastens the response to the latest changes in the business to bolster your advantage to emerging opportunities.
This explains how to provide immediate value to the customers by delivering working features. Each iteration or Sprint must end up in yielding a product release. The teams ensure that each feature is fully developed, tested, customised, and styled according to the customer’s satisfaction before considering it as delivered. The structure of the project team can be bettered by focussing on the delivery of value with a fixed delivery timeframe.
Agile development principles aim at keeping requirements and documentation light.The primary thought process is that it is fine and acceptable for changes to happen in software development. This results in close collaborations being given importance to clarify requirements on a timely basis to always keep all the team members notified during the development of the software.
Fruitful and competitive projects depend on focussed, trusted, and motivated individuals to get the job done. Team members are allowed to select the work they are most interested in by self-organisation with no interference of external management. Micromanagement and top-down approach is a strict no-no.
This form of interaction is the best one of the lot. No other mode of communication could beat this one, especially when you need to get to the root of an issue. Feedback via face-to-face interaction or video conference (for the teams separated geographically) is always encouraged as it involves a smoother transfer of information amongst the members.
This is done by collocating a number of teams in an open area and programmers are paired with each other at each workstation. So what that means is, each pair works in a symbiotic manner. The programmer at the keyboard, known as the ‘Driver’. The other one, known as the ‘Navigator’, actively works on the programming, thinking more about the overall direction. Normally, the job roles are to be switched to have a better understanding between each other.
This results in better coding, as these symbiotic interactions help in clarifying the complexities and hidden details in the coding task in a better way. This also leads to a smoother exchange of information and knowledge amongst the team, hence reducing coordination efforts greatly, and improving the flexibility of the pair to interruptions.
The Agile methodology aims at keeping the perfect work-life balance and never over exhaust the employees, thus keeping them happy. By maintaining close collaboration and being alert and creative, extended work after normal working hours is avoided, especially at the weekends, the time when people try to recover from their hectic lifestyle.
Self-organising teams are the key to yield the best architectures, designs, and requirements. The team engages in retrospective meetings that hold discussions on the things needed in order to be more effective, after which a decision is made on the next course of action depending on the situation. This ensures that whatever is learnt during the project can be reapplied in the next iteration.
This principle hints at the application of the Pareto principle or the 80/20 rule. It means that as a matter of fact, 80% of the results may be achieved from just 20% of your efforts. What actually needs to be done is to focus on the ‘20%’ that will yield the majority of the results. You need to focus on the things that are important to add value to the project and customers. Ignore the things that do not add value, such as components, process, etc.
In Scrum methodology, the team has complete control and is responsible to meet the target of each sprint, and on deciding how to achieve the same. Cutting long story short, the team knows the best way to carry out the task, the interference of the project manager or even the human resources department is not welcome.
To get the right results, it is imperative for teams to work as a cognitive unit by focussing on working out new plans to be more effective, checking the requirements, tuning in to the change, and adapting accordingly. Changes do happen most of the time, so you will never come to know what changes in the requirements might emerge until the software is looked at and tested. And the external conditions might have changed while you spent lots of time analysing and reviewing the requirements and designing a solution.
The basic ambition of Agile is to deliver better software, and that is achieved by presenting a structure which is transparent and direct by emphasising on iterative development, team collaboration and embracing change.
Really, it is difficult to imagine how Agile Manifesto has given rise to numerous software and activity. Before the emergence of the same, developing software was not as quick as it is nowadays. This led to the cancellation of many projects because of the continual changes in business needs and was quite unsettling for the software developing industry.
The Agile Manifesto is the heart of the Agile movement. Its twelve core principles and four values aimed at changing the process, speeding up productivity with quality and development time. It was noticed that Agile has been implemented even on fields outside software development. Agile stressed on lean manufacturing, collaboration, communication and quick development of smaller sets of features under the guidance of an all-inclusive plan whilst always adapting to changes.
Even though Agile and Scrum go along with the same system, they do differ in some aspects when compared with each other.
While Agile explains a set of principles in the Agile Manifesto employing interactive development to build software, Scrum follows a specific set of rules when practising Agile software development. Agile forms the philosophy whereas Scrum is the methodology to implement the Agile philosophy.
Scrum is one of the ways to implement Agile, so there is no surprise when both are similar in many aspects. Both base on delivering software sooner and at regular intervals. Both are iterative processes and have scope for changes too, not to forget their transparency and constant improvement.
Here are the notable differences and similarities between Agile and Scrum:
|Deliver software early and often||Yes||Yes|
When it comes to Agile and Waterfall, it can be said that Agile is much more flexible and ever-evolving while Waterfall is a rigid and inflexible process.
The chances of finding similarities between these two are remote. As a matter of fact, Agile was brought into existence because of the shortfalls of Waterfall and is its polar opposite although they both strive at delivering quality products efficiently.
Here are the notable differences and similarities between Agile and Scrum:
|Deliver quality products||Yes||Yes|
On comparing Agile with Kanban, although the latter implements the former in a visual manner, there are numerous differences and notable similarities, which are:
|Splitting projects into smaller segments||Yes||Yes|
|Upfront planning is not necessary||Yes||Yes|
|Equally beneficial to all industries||No||Yes|
No project management methodology is 100% foolproof all the time. Different methodologies are introduced in different situations and prove useful too. It depends on the type of change you want to bring in your team. For example, Kanban is a better option if you want to introduce something on the top of existing infrastructure with small but incremental changes. However, Agile would be a better choice if your goal is to go for a bigger change.
So, here we are, at the end of the line of this topic. We have discussed a lot about Agile Manifesto, its values and principles, and focussed on the benefits of its applications, not to forget about how different Agile is from the various methodologies.
You can freely implement the magnificent set of values and principles of Agile to your own business or organisation. It will work wonders if followed religiously.
All the best for your future!