Agile Software Development



  1. Agile Software Development Processes
  2. Agile Software Development Certification
  3. Agile Glossary Of Terms
-->

By: Dan Hellem

Agile Software Development Processes

Agile developmentis a term used to describe iterative software development. Iterativesoftware development shortens the software development lifecycle. Agiledevelopment teams execute the entire software development lifecycle insmaller increments, usually called sprints. Sprints are typically 1-4weeks long. Agile development is often contrasted with traditional orwaterfall development, where larger projects are planned up front andexecuted against that plan.

Delivering production quality code every sprint requires the agiledevelopment team to account for the accelerated pace. All coding,testing, and quality verification must be done each and every sprint.Unless a team is properly set up, it can fail. And sometimes failmiserably.

Agile developers focus on sustainable development–not heroics. Sustainability is about good estimation, effective branching strategies for managing code, automated testing to protect quality, and continuous deployment to get fast feedback from users. Agile Manifesto. The agile manifesto outlines 4 values and 12 principles for teams, but—decades. Written by a software developer for software developers, this book is a unique collection of the latest software development methods. The author incudes OOD, UML, Design Patterns, Agile and XP methods with a detailed description of a complete software design for reusable programs in C and Java. We would like to show you a description here but the site won’t allow us. Prerequisite: You need basic knowledge of software development process and software development methodologies. After completing this course, you will be able to: 1) Demonstrate the ability to participate effectively in agile practices/process for software development. 2) Explain the purpose behind common agile.

This article lays out a few key success factors for agile developmentteams:

  • Diligent backlog refinement
  • Integrate early and often
  • Minimize technical debt

Diligent backlog refinement

An agile development team works off of a backlog of requirements, oftencalled “user stories”. The backlog is prioritized so the most importantuser stories are at the top. The product owner owns the backlog andadds, changes, and reprioritizes user stories based on the customer’sneeds.

One of the biggest drags on an agile team’s productivity is a poorlydefined backlog. A team cannot be expected to consistently deliver highquality software each sprint unless they have clearly definedrequirements.

The product owner’s job is to ensure that every sprint, the engineershave clearly defined user stories to work with. The user stories at thetop of the backlog should always be ready for the team to execute on.This is called backlog refinement. Keeping a backlog ready for an agiledevelopment team takes an incredible amount of effort and discipline.

When refining the backlog, remember the following:

Refining user stories is often a long-lead activity

Elegant user interfaces, beautiful screen designs, and customerdelighting solutions all take time and energy to create. Diligentproduct owners refine user stories 2-3 sprints in advance. They accountfor design iterations and customer reviews. They work to ensure everyuser story is something the agile team is proud to deliver to thecustomer.

A user story is not refined unless the team says it is

Agile

The team needs to review the user story, and agree it’s ready to workon. If a team has not seen the user story until day 1 of a sprint,that’s a big red flag.

User stories further down the backlog can remain ambiguous

Don’t waste time refining lower priority items. Stay intently focused onthe top of the backlog.

Integrate early and often

Continuous integrationand continuous delivery(CICD) sets your team up for the fast pace of Agile Development. As soonas possible, automate your build, test and deployment pipeline. Itshould be one of the first things you complete when starting a newproject.

With automation, your team will avoid slow, error prone, andtime-intensive manual deployment processes. And let’s face it, if youare releasing every sprint, your team doesn’t have time to do thismanually.

CICD also influences your software architecture. They ensure youdeliver buildable and deployable software. When you implement adifficult-to-deploy feature, you become aware immediately as the buildand deployments will fail. CICD forces you to fix deployment issues asthey occur, ensuring your product is ever ready to ship.

CICD key activities are:

Unit testing

Unit tests are your first defense against human error. Unit tests shouldbe considered part of coding and checked in with the code. Executingunit tests should be considered part of your build. Failed unit testsmean a failed build.

Development

Build automation

Have your build system automatically pull code and tests directly fromsource control when builds execute.

Branch and build policies

Configure your branch and build policies to build automatically as yourteam checks code into a specific branch.

Deploy to an environment

Setup a release pipeline that automatically deploys your builtproject(s) to an environment that mimics production.

Minimize technical debt

With personal finances, it’s easier to stay out of debt than to dig outfrom under it. The same rule applies for technical debt. Technical debtincludes anything the team must do to deploy production quality code andkeep it running in production. Examples are bugs, performance issues,operational issues, accessibility, and others.

Keeping on top of technical debt requires courage. There are manypressures to delay fixing bugs. It feels good to work on features andignore debt. Don’t be fooled. Sooner or later, somebody must pay thetechnical debt. Just like financial debt, technical debt becomes harderto pay off the longer it exists. A smart product owner works with theirteam to ensure there is time to pay off technical debt in every sprint.Balancing technical debt reduction with feature development is adifficult task. Read Creating productive, customer focused teamsfor ideas on how to manage this.

Always Be Agile

Being agile means learning from what you do and continually improving.Agile development provides many more learning cycles than traditionalproject planning. Each sprint provides something new for the team tolearn.

For example:

  • A team delivers value to the customer, gets feedback, and thenmodifies their backlog based on that feedback.
  • They learn that their automated builds are missing key tests andinclude work in their next sprint to address it.
  • They find that certain features perform poorly in production andmake plans to improve performance.
  • Someone on the team hears of a new practice and the team decides totry it out for a few sprints.

Agile Software Development Certification

If you are starting with agile development, expect more learningopportunities. Way more. An Agile team doesn’t waste thoseopportunities.

Get started with free agile tools in Azure Boards.

Agile Glossary Of Terms

Dan is a Senior Program Manager with Microsoft's Azure DevOps. Dan focuses on the Agile space as well as the customer adoption of the service. Before coming to Microsoft in 2012 Dan spent his career building applications using Microsoft technologies and assembling Agile teams centered on delivering high quality software to customers.