Written By

Samantha

February 20, 2020 - 7 min read

What is Agile? 

 

Agile (adj): used for describing ways of planning and doing work in which it is understood that making changes as they are needed is an important part of the job

 

Agile is a globally accepted philosophy for handling and managing software development projects. Unlike other project management methodologies which are based on rules, frameworks and set procedures, Agile provides the freedom to keep up with changing demands as well as the opportunity to fully utilise the versatility of software development. Rather than getting bogged down in the extensive documentation that can detract from customer requirements, Agile encourages increased efficiency and performance. 

 

Agile Values & Principles 

 

The Agile philosophy is centred around the Agile Manifesto which consists of 4 high-level values and 12 supporting principles. 

 

The 4 Values of Agile Manifesto

 

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  1. Individuals and interactions over processes and tools
  2. Working product over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

 

That is, while there is value in the items on the right, we value the items on the left more.

 

The 12 Principles of Agile Manifesto

 

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

 

Agile Methods, Terminology & Tactics 

 

Scrum

 

Scrum (n): A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Scrum is a framework within which different processes and techniques can be employed. The essence of Scrum is a small, highly flexible and adaptive team of people.

 

Scrum Values

 

Courage

Scrum Team members have the courage to do the right thing and work on tough problems

Focus

Everyone focuses on the work of the Sprint and the goals of the Scrum Team

Commitment 

People personally commit to achieving the goals of the Scrum Team

Respect

Scrum Team members respect each other to be capable, independent people

Openness

The Scrum Team and its stakeholders agree to be open about all the work and the challenges with performing the work

 

Scrum Principles

 

Scrum principles are the core guidelines for applying the Scrum framework and should be used in all projects. (Aspects and processes, however, can be modified to meet the requirements of the project or the organisation.)

There are 6 main principles that apply to the Scrum framework: 

  • Empirical Process Control – making decisions based on experience and observation rather than just theory or pure logic
  • Self-Organisation – providing a higher degree of autonomy, support and trust to team members, removing the need for micro-management 
  • Collaboration – open communication between the product owner, scrum master and scrum team on a daily basis
  • Value-based Prioritisation – taking into consideration Value, Risk or Uncertainties and Dependencies
  • Time-Boxing – allotting a certain amount of time to each process and task
  • Iterative Development – breaking down complex tasks into different, small Sprints

 

Lean Software Development

 

Lean (adj): using fewer employees or less money in order to decrease waste, while continuing to operate effectively

 

The Lean Software Development methodology emphasises speed and efficiency, relying on rapid and reliable feedback between customers and programmers. With a concentration on ensuring everyone is as productive as possible at all times, Lean focuses on fast and efficient decision-making abilities of small teams and individuals. 

 

Lean Principles

 

  • Eliminate waste
  • Amplify Learning
  • Make decisions as late as possible
  • Deliver results as quickly as possible
  • Empower the team 
  • Build integrity 
  • Envision the whole project

 

The Kanban Method

 

Originating from Kanban (n): A Japanese manufacturing system in which the supply of components is regulated through the use of an instruction card sent along the production line.

 

Kanban is a method used to manage and improve work across systems. It aims to balance demands with available capacity. Work items are visualised to give the team a view of progress and process, from start to finish—usually via a Kanban board. Work is pulled as capacity permits, rather than being pushed into the process when requested.

 

Kanban Principles

 

  • Visualise what you do
  • Limit the amount of work in progress (WIP)
  • Enhance the flow

 

Extreme Programming (XP)

 

Extreme Programming or XP is a popular (and controversial) methodology. A highly disciplined method, it’s characterised by the aims to produce higher quality software (delivered in intervals of one to three weeks) and providing the development team with a higher quality of life.

 

Extreme Programming Values

  • Simplicity
  • Communication
  • Feedback
  • Courage

 

Extreme Programming Supporting Practices

  • Planning game
  • Small releases
  • Customer acceptance tests
  • Simple design
  • Pair programming
  • Test-driven development
  • Refactoring
  • Continuous integration
  • Collective code ownership
  • Coding standards
  • Metaphor
  • Sustainable pace

 

Crystal

 

Crystal methodology is a lightweight and adaptable approach. The framework focuses on individuals and their interactions as opposed to processes and tools. It emphasises direct team collaboration and de-emphasises documentation and reporting based on the beliefs that teams can find their own ways to improve and optimise their workflow and every project is unique and always changing. 

 

Crystal Tenets 

  • Teamwork
  • Communication
  • Simplicity
  • Reflection
  • Frequent adjustments
  • Improve processes

 

Dynamic Systems Development Method (DSDM)

 

DSDM (formerly known as Dynamic Systems Development Method) focuses on the entire life cycle and is a method built around the philosophy that ‘any project must be aligned to clearly defined strategic goals and focus upon early delivery of real benefits to the business’. 

 

DSDM Principles

  • Focus on the business need
  • Deliver on time
  • Collaborate
  • Never compromise quality
  • Build incrementally from firm foundations
  • Develop iteratively
  • Communicate continuously and clearly
  • Demonstrate control

 

Feature Driven Development (FDD) 

 

Feature Driven Development, or FDD, is a lightweight, iterative and incremental software development process. Its main purpose is to deliver tangible, working software repeatedly in a timely manner. 

 

FDD Best Practices

  • Domain Object modelling 
  • Developing by Feature
  • Individual Class (Code) Ownership 
  • Feature Teams
  • Inspections
  • Configuration Management
  • Regular Builds
  • Visibility of progress and results

 

Roles in Agile

 

An Agile team working in Scrum has 3 main roles. 

 

Product Owner

 

The Product Owner (PO) serves as the client proxy and is responsible for defining User Stories and prioritising the Team Backlog. This member of the Agile Team has a significant role in quality control and is the only person who can accept User Stories as done. 

 

PO Duties

  • Preparation and Participation in PI Planning
  • Iteration Execution 
  • Program Execution
  • Inspect and Adapt

 

Scrum Master

 

The Scrum Master is responsible for ensuring that the Agile Team lives agile values and principles and follows any processes and practices they agreed they would use. 

 

Scrum Master Responsibilities

  • Clearing obstacles
  • Establishing an environment where the team can be effective
  • Addressing team dynamics
  • Ensuring a good relationship between the Team and Product Owner (as well as others outside the team)
  • Minimising outside interruptions and distractions

Scrum Team

 

The Scrum Team is a collection of individuals which usually consists of between 5 and 9 members. Following a common goal, they work together to ensure the delivery of product increments. 

 

Agile Practices

 

Daily Stand-Ups

Also known as Daily Scrum Meetings, Daily Scrum meetings are brief sessions which take place each day so the team can share information and stay informed. 

 

Each member of the team answers 3 questions: 

 

  • What did I do yesterday? 
  • What will I do today?
  • What is hindering my progress? 

 

 

User Stories

A User Story is a brief description of a function wanted by an end-user written from their perspective and in the language they understand. 

 

Automated Testing

Automated testing offers a fast and efficient way to find bugs, eliminating defects at their source while protecting other features so that a working software package is delivered to the client. 

 

Automated Builds

All software development is regularly and automatically complied, built, deployed and tested. 

 

Retrospectives

There are 3 levels of development planning in Agile. 

 

Release Planning 

Clients and Developers work together to decide which User Stories to include in each release.

Iteration Planning

The client defines and prioritises the User Stories and the developers estimate how much effort is required to develop each feature.

Task Planning

User Stories are broken down into steps by the development team. Each team member is assigned a task and will provide an estimate of how much effort is required to perform the task.

 

 

The Business Benefits of Agile 

An Agile approach encourages collaboration and helps to reduce the risks associated with software development. 

 

Studies comparing Agile to traditional methods of software project management have found that Agile projects offered:

 

  • Better value
  • Quicker time-to-market speeds
  • Higher quality 
  • Reduced costs 
  • Higher productivity

 

Stakeholder Engagement

Agile provides multiple opportunities for team and client engagement. By involving clients in every step of the project, the team can truly understand their requirements.

 

Transparency

From prioritising features to frequent software builds, clients are able to see their project work in progress. 

 

Early and Predictable Delivery

Thanks to fixed Sprints of between 1 and 4 weeks, new features are delivered quickly and predictably.

 

Predictable Schedule and Costs

By using time-boxed and fixed Sprints, the cost and amount of work are easy to predict which can help the client prioritise features. 

 

Allows for Change

New items in the backlog can always be planned for the next iteration. The is always the opportunity to refine and reprioritise the product backlog. 

 

Focus on Value

Because the client determines the priority of the features, the team can deliver on what provides the business with the most value. 

 

Focus on Users

Agile focuses on the needs of real users. Incremental delivery of the product from the very beginning allows for regular user testing and valuable feedback ensuring that changes be made as needed.

Improved Quality

Frequent builds and testing ensure that high quality is achieved as defects are detected and corrected at every stage of development.

Read More

Insight
What is Human-Centred Design?

Human-Centred Design (HCD) is a creative approach to problem-solving that starts with understanding the people you’re trying to reach and …

Insight
Understanding User Stories and Acceptance Criteria

Simply put, a user story is a short, informal and simple to understand description of a single software feature or function….

Insight
Understanding User Acceptance Testing (UAT)?

User Acceptance Testing (UAT), also known as End-User, Application or Beta Testing, is the final phase of the testing process ahead of relea…