Choose an Agile approach to software development

Introduction

You’ve met the Tailspin team and learned a bit about their problems. Mara, the newest team member, is trying to convince her teammates that a DevOps approach, using the services in Azure DevOps, is a great way to solve them. She’s taken it upon herself to do a value stream mapping (VSM) exercise, and she’s shown everyone the results.

Her next goal is to convince the Tailspin team to take their first DevOps steps by using an Agile approach and Azure Boards, a part of the Azure DevOps suite. Azure Boards helps teams collaborate and plan their work better. This module shows how the team creates its first board.

In this module, you will:

  • Create an Azure DevOps project
  • Add work items to Azure Boards by using the Basic process
  • Assign work items to team members

Prerequisites

The modules in this learning path form a progression. We recommend you start at the beginning of the Evolve your DevOps practices  learning path before you work on this module.

If you’d rather do only this module, go through Get started with Azure DevOps  first to set up your Azure DevOps organization.

Meet the team

You met the Space Game web team at Tailspin Toys in previous modules. As a refresher, here’s who you’ll work with in this module.

Cartoon depiction of Andy

Andy is the development lead.

Cartoon depiction of Amita

Amita is in QA.

Cartoon depiction of Tim

Tim is in operations.

Cartoon depiction of Mara

Mara just joined as a developer and reports to Andy.

Mara has prior experience with DevOps and is helping the team adopt a more streamlined process by using Azure DevOps.


What is Agile?

Agile is a term that’s used to describe approaches to software development, emphasizing incremental delivery, team collaboration, continual planning, and continual learning. Agile isn’t a process as much as it is a philosophy or mindset for planning the work that a team will do. It’s based on iterative development and helps a team better plan for and react to the inevitable changes that occur in software development. Let’s listen in on Mara’s discussion with Andy after the latest release.

Mara felt she’d made a few small steps toward interesting the team in DevOps, but progress has stalled. The team has been too busy fixing bugs in the last release to think about anything else.

Recall that Irwin, the product manager, provided the team with some rather critical customer feedback about the racing game website. Resolving these issues wasn’t fun. Andy and Mara would write code and then hand it to Amita, the tester. Amita always seemed to find new bugs and had to hand the code back. The build server failed. Tim couldn’t get the game’s website to work in production, even after it worked in dev and test. Everyone worked long hours and lost a couple weekends.

After they shipped the release, Mara and Andy sat down for coffee. They were both tired. Mara was discouraged but Andy had a different attitude.

Andy: I don’t know why you’re surprised. Getting software out the door is hard. It’s always a slog. Have you ever done it differently?

Mara: I have and I think we could make things easier here, too. I really believe DevOps can help us.

Andy: I remember we did a value-stream mapping exercise, but now what? We’ve got to get started on the new release. I thought we were done with DevOps.

Mara: There’s a lot more we can do. I think we should take the first step and do some Agile planning. We can use Azure Boards to help us.

Andy: What do you mean by Agile?

Mara: Agile is an approach to software development. The term “Agile” was coined in 2001 in the Agile Manifesto . The manifesto established some guiding principles for a better approach to software development. The manifesto says:

We value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Andy: Look, if you know some magic way to make life easier, I’m all for it. My kids are always asleep by the time I get home. But this sounds very touchy-feely without any concrete solutions.

Mara: It’s not magic, but we can do it bit by bit, and Azure DevOps gives us the tools we need to implement Agile practices. For now, when we want to plan, we can use Azure Boards. First, can you explain the build process to me and help me identify the big problems?

After lots of coffee, Mara and Andy identify the biggest problems in the build process. All the issues came up during the last release. After Andy leaves, Mara looks at her scribbled notes and decides to do a little Agile planning herself. On her own, she uses the Basic process on Azure Boards to get all the problems in one place.

Her next step is to show the board to the team and get them involved.

Recommendations for adopting Agile

The team is getting ready to take their first steps toward adopting Agile. Here are some general recommendations that any team can use to incorporate Agile into their organization.

Create an organizational structure that supports Agile practices

For most organizations, adopting Agile can be difficult. It requires a mind-shift and a culture-shift that challenges many existing policies and processes within the organization. Traditionally, most companies use a horizontal team structure. In practice, this means teams correspond to the software architecture. For example, there might be a team responsible for an application’s user interface, another team responsible for data, and another team responsible for the service-oriented architecture.

However, vertical teams provide better results for Agile projects. Vertical teams span the architecture and are aligned with product outcomes. For example, there might be a team responsible for the email portion of the app and team members come from all three of the abovementioned disciplines. Another benefit of the vertical team structure is that scaling occurs by adding teams.

Mentor team members on Agile techniques and practices

When they first start to adopt Agile techniques and practices, some teams decide to hire external coaches. Coaches may even work with multiple teams to help remove organizational roadblocks and silos, so they often have both teaching and managerial skills. They can also train team members in Agile techniques such as how to run stand-up and review meetings. Over time though, it’s important for team members to develop an ability to mentor each other. This means that most work should be done collaboratively and not by individuals who spend most of their time working alone.

Enable in-team and cross-team collaboration

If collaboration is the key to becoming successful at Agile, what are some of the ways you can encourage it? Here are some ideas.

Cultural change

When changing a culture, keep a few things in mind. It’s important that team members have a quiet, comfortable place to work. They need spaces where they can focus, without a lot of distractions and noise.

Meetings are a fact of life and they can feel like they take over a person’s working life. To give team members more control, meetings need an agenda and strict time frames.

Asynchronous communications, such as email and messages, can feel overwhelming and people often feel they have to be answered right away. Make it clear that not all of these communications need an immediate response.

Remote team members are now the norm in many companies. Everyone needs to feel comfortable with all their team members and to treat them equally, whether they’re in the office or working offsite. Collaboration via communication should become part of the organization’s DNA.

The importance of good communication can’t be overemphasized, even when there are disagreements. Conflict resolution is a good skill for any Agile team to have.

Cross-functional teams

Just as it’s important for team members to work collaboratively, it’s also important for teams to collaborate with each other. Cross-functional teams add new skills and perspectives that can broaden everyone’s ability to solve challenges creatively. Cross-functional teams also make the entire organization more cohesive. They reduce turf wars and increase the sense that everyone is working toward a common goal.

Tools for collaboration

Good tools can help your Agile team members collaborate more effectively, both within the team and with other teams. Here are a few suggestions to help you get started.

  • Microsoft Teams . This is an application that provides a workplace for chat, meetings, notes, and file storage.
  • Skype . Skype is easy to use and a good general-purpose tool. Many people have it already installed.
  • Slack . Slack provides many separate communication channels, all from a single interface. These can be organized in many ways, such as by project, team, or topic. Conversations are retained and are searchable. It is very easy to add both internal and external team members. Slack directly integrates with many third-party tools, like GitHub for source code.

Other common tools include Google Hangouts, Asana, Trello, GoToMeeting and monday.com. Try to familiarize yourself with the options to see which of them suit the needs of your team and your company.

What is Azure Boards?

Azure Boards is a tool in Azure DevOps to help teams plan the work that needs to be done. The Tailspin team will use this tool to get a better idea of what work needs to be done and how to prioritize it.

Mara created her own project on Azure Boards using the Basic process. It shows the problems in the build process that she and Andy identified. Mara gets the team together for a quick demo.

Mara: Hi everyone. I set up Azure Boards and wanted to show you some work items I came up with.

Andy: What’s a work item?

Mara: Work items help us plan and manage a project. A work item can track all kinds of activities. Maybe it’s a task to do, a bug to fix, or some other issue. We can assign them to people and keep track of their progress.

Perhaps it’s easier to show you. Here’s Azure Boards using the Basic process.

Azure Boards showing the initial three tasks

Amita: Tell us about the Basic process. Are there other options?

Mara: There are four processes to choose from. We can use:

  • Capability Maturity Model Integration (CMMI). This is really for large organizations and it’s pretty complicated so I didn’t use it.
  • Scrum. Scrum depends on a Scrum master who leads the Scrum team. The Scrum master makes sure everybody understands Scrum theory, practices, and rules. We don’t have a Scrum master; that’s someone who’s usually received some training and certification so I didn’t pick that one either.
  • Agile. This seemed like the obvious choice since I’m always talking about Agile, but it has a few more things to consider than the simplest option.
  • Basic. Basic is, well, basic. It’s simple but gives us enough power to start doing effective planning right away, and that’s why I picked it. In the Basic workflow, you move work from To Do to Doing to Done.

Amita: OK, let’s use it to get started. We can switch to something else, right?

Mara: Right! So, let’s pick a few work items we think we can fix in a couple weeks.

Andy can identify with these issues, but the rest of the team has questions.

Tim: These are mostly dev problems. But while we’re on the subject, other teams are talking about code vulnerabilities, and I’ve been asked to show that our code is secure. Is there a way we can add that?

Mara: I know the list isn’t complete. The problems on the board are the ones Andy and I talked about earlier. And even some of these problems really need to get broken down into smaller tasks. I understand your concerns about code vulnerabilities. Andy, what do you think?

Andy: Right now, just getting a build out the door is hard. Let’s start with some of the basic problems. I do like that we have a central place where we can keep track of our issues. We can add issues to the backlog and prioritize them once we’re ready.

Mara: Before we add any issues, let’s talk a bit more about what everyone is working on.

Each team member shares what they’re working on and other concerns they have. As a brainstorming activity, they add sticky notes to a whiteboard. Their whiteboard fills up quickly.

A whiteboard containing sticky notes

Eventually the team settles on seven top issues. Andy volunteers to add tasks to Azure Boards while everyone watches. Here’s what the board looks like.

Backlog of tasks

Amita: Wow, that’s a lot of problems. How are we ever going to fix all those?

Mara: We don’t have to fix them all right away. For now, we’ve identified a backlog or list of work we could pull from. When we plan work, we get to choose what’s most urgent or important.

After some more discussion, the team decides to take on the three issues Mara originally proposed:

  • Stabilize the build server.
  • Create a Git-based workflow.
  • Create unit tests.

Mara: These seem like the easiest issues to take on, and they address some recent challenges that came up. Let’s set up a project, a team, and a sprint. Then we can decide who does what.

Tim: What’s a sprint?

Mara: Good question. A sprint is the amount of time we have to complete our tasks. Sprints help keep us focused. At the end, we can have a short retrospective meeting to share what we’ve accomplished. After that, we can plan the next one.

Everyone looks nervous.

Mara: We’re still learning. A sprint is typically two to four weeks long. Let’s just say two weeks and see how that goes. These are mostly tasks Andy and I can tackle. We’ll share our progress as we go. Then we can find ways to include everybody.

Mara and the team are off to a good start. Next, you’ll set up the project, team, and some tasks on Azure Boards.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s