What is Agile Manifesto
Agile Manifesto is a document which was created by 17 developers in 2001 to help the software development community to guide on how to work efficiently and covert complex requirements into working softwares with quality and highest degree of customer satisfaction.
This document consists of four values and twelve principles.
Four Values of Agile Manifesto
- Individuals and interactions over processes and tools : People with whom we are talking and working day in day out should always be preferred and trusted over the processes and tools which lack the innovation
- Working software over comprehensive documentation : Give importance to building your software rather than working on the more than detailed documentation for example showing a demo of a screen is far more effective than preparing for dummy representational screens.
- Customer collaboration over contract negotiation : A lot of importance was given to contracts signed in the traditional projects over continuous relationship building with promising customers which led to business losses. We should look forward on understanding customer needs and mutual agreements rather than focusing on the contract words.
- Responding to change over following a plan : We tend to build plans on how, what and when to deliver but be ready for changes and accept them willingly as changes are the nature of today’s business world.
Twelve Principles of Agile Manifesto
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software: This principle talks about customer satisfaction by providing them small working pieces of software in order of highest priority first. Don’t wait for the full project or module to be built and completed and then deliver but think on ways on how to design your product in such a way that is iterative in nature. Build and deliver whatever potentially shippable work items.This gives a possibility of finding the edge cases sooner than later.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage : Earlier a change was considered a burden and a huge process had to be followed if you need to implement any changes requested by your clients but dealing with changes is the outmost need to be successful in today’s market. Today changes will happen frequently because of the emerging technologies and desire for improvement, we need to be ready for absorbing the changes quickly in our processes and actual software without impacting the quality. Design your project and processes such that changes are welcomed which are the utter need of customers to showcase their competitive skills in their business domains.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale : Deliver your software to customers frequently, work on building a dev-ops system that is automated to ease the process of end to end delivery so that software’s iterative pieces can be shipped as and when required. In case you are using scrum methodology, it is recommended to tie the delivery cycle with sprint your ends.
- Business people and developers must work together daily throughout the project : Cross functional teams are proven to be highly productive teams therefore choose your team which includes BAs and testers as well along with developers so that the team is able to take business specific decisions on time and with accuracy every time. Your development testing should have a flavour of user acceptance testing. Adapt a mindset to work on daily basis with your BAs as a team rather than involving them in just getting the requirements from customers.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done : Motivation is one of the key factors to success of individuals and projects. People working in the team should be provided a comfortable environment to freely express their thoughts and convert their ideas into excellent work. All ideas should be respected and provided with platform to be groomed. Recognition , work satisfaction and individual growth should also get the same importance as the project’s quality and cost.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation : Face to face is definitely the richest form of communication. Rather than exchanging information over mails prefer talking to the people by going to each others’s desk as this not only gives you an opportunity to understand the unsaid words through tone but also saves time.This also builds trust in the team. If your team is geographically distributed, preffer to make video calls over audio and audio over emails.
- Working software is the primary measure of progress : In agile world progress is gauged by the working software demonstrations done periodically. Small independent pieces are developed in iterations which are then presented to end users or customers who approve the user accept tests through these demos and feedbacks.Then these small pieces are merged to the already delivered product.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely : This principle emphasises on maintaining a pace that is possible and just comfortable for the team to maintain their highest capacity. There were days in earlier methodologies when developers , BAs , users had some time highly packed up with work and they didn’t had anything to do in the other times. Moreover working on changes / defects after the full software delivered to customers was again a pain and teams had to work night and day to get things completed. Thanks to agile which had provided a way to work in chunks, get small deliveries on time so that team works at a constant pace throughout to deliver their periodic commitments and do not have to stretch themselves at the last moment.
- Continuous attention to technical excellence and good design enhances agility : Technical excellence and good designs are the key to agility as good designs are open for changes because they have less coupling and high cohesion.Good designs also mean less errors and code transparency. Strive for technical excellence is achieved from continuous learning which goes hand in hand with agile as it promotes improvement.Choosing the right team with technical abilities and having the right attitude shapes a good skilled team which is fast and highly productive.
- Simplicity–the art of maximising the amount of work not done–is essential : This principle emphasises on doing just what is required and adds value.It focuses on keeping the designs simple.Questioning among each other on what business value is added directly or indirectly with this work to be done is important.Refining your requirements having grooming and backlog discussions are few of the actions to follow this principle.
- The best architectures, requirements, and designs emerge from self-organizing teams : Self organised teams are the teams who know how to work, how long will it take, impacts/improvements on the software with respect to any design changes and what to do when any decision fails. These teams do not rely on any one or two persons for guidance / orders at every step. Such teams come up with brilliant ideas in terms of designing or building the blueprints or even execution of the actual tasks as they work fearlessly without any authoritative commands and know exactly how to come up when not so good conditions arrive.Though it is not a one day effort to create such teams but once done they have proven to showcase extra-ordinary results.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly : Reflect and Adapt is one of the principle which makes agile so powerful. This principle is the key to every success and on going improvements. If we take an example of scrum framework, it promotes retrospection which says to look through what happened good , what to continue , what to stop etc. All these practices lead to apply the Lessons Learnt from past and nurture the benefits in future by growing and becoming effective day by day.
These Values and Principles helps in providing an overall understanding of Agile.No matter what methodology we choose agile manifesto is the backbone to all.