What is Agile?

Completed

Agile is a term that's used to describe approaches to software development, emphasizing incremental delivery, team collaboration, continual planning, and learning. Agile isn't a process as much as it's 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 of 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 app's email portion, and team members come from all three of the previously mentioned 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 might 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, like 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, like 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.

We can't overemphasize the importance of good communication, 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: Teams 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 already have it installed.
  • Slack: Slack provides many separate communication channels, all from a single interface. You can organize these channels in many ways, such as by project, team, or topic. Conversations are retained and are searchable. It's 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.