June 28, 2016

Everything you never knew about The Agile Manifesto

Agile is the buzzword of IT Industry. You must have heard of agile manifesto a lot of times, but you might not be familiar with the agile manifesto architecture and principles. Today, we will look at the details of everything you never knew about the Agile Manifesto.

The Agile Manifesto originated in the software development to improve the methods for completion of software projects. It outlined some basic principles of agile methodology. These principles included:

  • collaboration among individuals
  • self-organization of individuals
  • working in small chunks
  • responding to change
  • learning from experiments
  • continually improving
  • plan as work is carried out

Although Agile methodology was developed to address the needs of software industry but its principles can be applied to other domains also. You might be surprised to know that you can not only apply agile manifesto on your work but on your personal life too. Follow up to know everything you never knew about the Agile Manifesto.

Agile Software Development

The traditional software development models are becoming obsolete in the rapidly changing business environment, as the new business requirements and the change in requirements occur more friendly which need prompt response.

To meet the new challenges in the software industry, the expert professionals sat together and gave birth to the idea of an agile manifesto that lays down the foundation of Agile Software Development.

Wikipedia defines agile software development as:

“A set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.”

Cross Functional Teams

As the name implies, a cross functional team is composed of people from different functional areas within a company. It empowers the team with the ability to see a product from different aspects. Project goals are understood by all team members so it reduces the need of further communication.

Cross functional teams have the ability to self-organize towards a process that can maximize their productivity and the quality of work. They have the authority to take decisions at lower level which enables them to expedite the process.

Cross functional team does not mean that every member can perform every task, rather we have a specialized person for each task like design, development, testing, UX. Since the members of cross functional team belong to different functional areas so they might be reluctant in working with each other. So, so it is very important for the project manager to focus on improving the communication between your cross functional team.

Evolutionary Approach

Agile manifesto promotes an evolutionary approach for development in which the software is broken down into smaller sprints an iterative manner. The duration of an iteration typically varies from one to four weeks. So, the client does not need to wait for months before he could have any idea of what is being developed. The output and progress of any iteration is measured by the features working in the product.

After every iteration, the output product is demonstrated to the client. As the client gains visibility of the product, he is able to clearly define further requirements. He may also propose any changes in the current functionality. This client-developer interaction is not limited to the end of iteration only, rather one client representative stays in collaboration with the development actively throughout the process. In this manner, the product evolve through the entire agile process as client and developers interact on regular basis.

Adaptive Planning

As a manager, planning can be very challenging in an agile environment. You create a product release plan that describes the development of specific feature from beginning to end. The product release plan divides the work in smaller sprint. A sprint plan is necessary to describe details of work to be done in a given sprint.

Agile manifesto practices the philosophy of adaptive planning. The long term targets are planned in a less detailed fashion and are susceptible to change.Detailed planning is carried out for the tasks in hand with the ability of responding to change. Before starting the daily work,a stand up meeting is called. In this meeting, all team members report their progress, i.e. the tasks completed and the tasks in hand. The purpose of this meeting is to discuss any problems or hindrances, faced by the team members, towards the completion of any task or team’s sprint goal.

Quality Product

You might have heard that agile manifesto helps in developing Quality Product in a speedy manner. We have understood the speedy manner but how do we get a quality product at then end?

In the waterfall model of software development, testing is carried out in a separate phase after development. This means that all the defects would be identified, once the development is completed. In contrast to the traditional approach, testing in agile is done concurrently in the same iteration as coding. This practices enables the team to identify the bugs and verify the fixes on the go. Besides, it also helps in cutting down the cost as it is cheaper to fix the issues in the early stages of development. Testing is done in every iteration and is handed over to users after every iteration, so it is frequently verified and validated.

Agile Methods

Popular agile software development methods include:

  • Adaptive software development
  • Agile modeling
  • Agile Unified Process
  • Business analyst designer method
  • Crystal Clear Methods
  • Disciplined agile delivery
  • Dynamic systems development method
  • Extreme programming
  • Feature-driven development
  • Lean software development
  • Kanban
  • Scrum

Agile Manifesto Principles

Agile Manifesto is a set of principles that were developed to uncover better ways of software development by doing it and by helping others to do it. It was by published by 17 software developers who gathered at Snowbird resort to discuss lightweight methods for development.

Agile manifesto promotes collaboration among individuals. It believes in learning from experiments and making errors to get on the right direction. Agile manifesto empowers the individuals with trust and independence. It urges the team members to adapt new things and plan as they work.

The Agile manifesto is based on the following principles:

Individuals and interactions over processes and tools

As organizations grow in size, they develop long and formal processes to get a certain thing done. These processes and tools are less applicable to small or start up organizations which need short time to market. People became more conscious about the use of processes and tools. However, the use of these processes and tools resulted in identification of issues at a later stage. The agile approach believes in early identification of issues so the developers keep on verifying their progress from the client.

Agile practices encourage the individuals to interact with each other on regular basis. The client who wants the software to be developed should regularly communicate with the people who are developing software.

Customer collaboration over contract negotiation

For agile projects, we require flexible contracts. Since requirements became clear over time in agile methodology so you can not rely on a fixed price project. The contract should include terms to accommodate change requests. These change requests are inevitable and should be in control of customer. This might require a little effort to convince customer for collaboration over contract negotiation.

Working software over comprehensive documentation

In the traditional waterfall approach, emphasis is given over comprehensive documentation of user requirements. The idea was to take understanding sessions with the clients and document their requirements. These requirements are then presented to customer and signed off. These approved requirements are then given to development and testing team.

Over time, it has become evident that a client can not explain all the requirements at the start of the project. The client changes his mind several times during the development phase. New requirements come over and the existing requirements are changed. Practically, the document that was created initially becomes outdated. The efforts to keep that document updated can be troublesome. So, agile methodology narrows down the scope of work and focuses on documenting only the given thing at hand. As the product evolves and new requirements come in, agile process would accommodate those easily.

Responding to change over following a plan

Responding to change is the essence of all Agile methods. Traditional approaches to planning make extensive Gantt charts, which make it almost impossible to accommodate a change. Agile process uses release schedules and burn down charts that can accommodate change effectively. Agile is more like plan as we work and results in self-organizing teams.

Why Agile Manifesto Architecture?

Predictable Cost and Schedule

Each sprint has a fixed duration and very limited to scope, so the cost and schedule is accurately predictable.

Adaptable to Change

Another benefit of agile manifesto is its ability to welcome and incorporate new requirements and changes. The client has the ability to constantly refine the requirements, introduce new features and modify the existing features.

Minimized Risk

One of the basic agile manifesto principles is collaboration between client and project team. It develops a feeling of mutual trust and goodwill between them. Frequent interaction of team with the client enables team to understand the client’s vision and requirements completely. This, in turn, increases the chances of developing a product as envisioned by the client.

Maximize Business Value

In the agile method, entire work is broken down into sprints. In each sprint, client and project team prioritize the features that provide more business value and are needed first.

Applying Agile to Life

Now, you have got a clear idea of the agile manifesto and the principles that comprise of it. If you ponder over the agile ideas, you will realize that you can apply these ideas anywhere with increased chances of getting things done as required.

Break it into smaller pieces

The philosophy behind agile is to break down the work into smaller and manageable pieces. This principle can be equally applied to anything in hand. Break down the problem into smaller components and find solution to it. A smaller component is easier to analyze and complete the required task.

Collaboration of Individuals

An agile environment is characterized by the frequent collaboration of individuals. The person who wants the job done should collaborate with the person who is doing the job, on regular basis. This would enable both of them to understand what is required and what is being done. As a result of frequent collaboration, both parties confirm that they are on the same page and work is being done in the required direction.

Adaptive Planning

Adaptive Planning is one of the strengths of agile process. You do plan things as they come over and respond to the changing circumstances. Of Course, you need to do some initial planning but prepare yourself to accept the changes as they occur.

Learn From Experiments

Agile manifesto encourages individuals to do experiments, learn from the mistakes and continually improve the process. There is no perfect way of doing things. Experiment with things and see what works for you. This enables you to continuously evolve and progress.

In summary…

The core concept of agile method include individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan.

As a result of agile techniques, better software is produced and value is delivered to the client, adding to firm’s competitive advantage. Agile concepts are not limited to software domain only but these can be applied on other domains as well to deliver better results.

Do you apply agile techniques in your everyday life? Share how agile has helped you in achieving better results.

Share article