Innehållsförteckning

Innehållsförteckning

In the nearly 20 years since the Agile Manifesto became a rallying cry for software development teams, organizations have used Agile development practices to deliver value at a rapid pace. Compared to traditional development teams, Agile teams:

  • Are more productive
  • Create higher quality products
  • Satisfy customers more consistently

Agile Program Management: Make Work Connected and Visible

Learn the challenges facing organizations undergoing transformation and how enterprise Kanban software can help you effectively practice Agile Program Management.

Se e-boken • Agil programhantering

The Agile Manager’s Handbook: How to be an effective Agile leader

Learn the essentials of Agile leadership, including the 5 core skills that all Agile managers must have.

Se e-boken • The Agile Manager’s Handbook
Leverage Agile best practices to empower teams to innovate, adapt, and deliver value faster.
Leverage Agile best practices to empower teams to innovate, adapt, and deliver value faster.

Multiple factors affect project outcomes, but one core practice is clearly key to success: Collaboration. Collaboration:

  • Solves problems
  • Clarifies changes
  • Builds consensus
  • Creates cohesion

When the team, stakeholders and customer have a shared understanding of the goals, they are more likely to get the desired results. The most effective software development teams make collaboration and other Agile best practices their standard way of working.

Why Use Agile Teams?

Traditional software development follows the classic waterfall methodology, where teams develop a detailed project plan, then launch into a linear, step-wise development process with set deadlines and no deviations. If requirements change, there’s no turning back, no do-overs.

Instead of planning the entire project up front, Agile teams plan continuously throughout the project, making constant adjustments as changes arise.

“An Agile team can discuss priorities and potential trade-offs with business stakeholders and the customer, then quickly adapt the plan to meet the new requirements.”

Organizations operating in dynamic market environments need Agile teams who can work within short development cycles to achieve a faster time-to-market. Particularly in the technology space, Agile teams are desirable because they are more innovative, adaptable and responsive to rapidly changing conditions. Using methods designed to produce frequent, high-quality, sustainable releases, Agile teams can deliver tested, working software in two- to four-week iterations.

How is that possible? An Agile team is a tight-knit group of three to 10 highly skilled people who work together full-time, usually in close proximity. The team has what it takes to get the job done. Individual team members represent diverse functional areas, so programmers, designers, testers, analysts, technical writers and others collaborate throughout the development process. Team members learn to speak the same language, no matter what their discipline. They also put ego aside to ask for and accept help, and they share accountability for the outcomes, both the successes and the rare failures. Teams learn from every iteration, continuously adding to the list of Agile best practices that guide them.

Agile Values, Principles, and Practices

Agile projects are driven by a shared commitment to the values, principles and practices that define the Agile methodology. The 17 authors of the Agile Manifesto were practicing software developers who had experienced a better way to build software. Many of their practices derived from popular frameworks such as Scrum and Kanban. The authors committed a collection of values and principles into writing in 2001, at a gathering of software developers in Snowbird, Utah. Most notably, their Agile practices put people before processes.

From the Agile Manifesto’s core values came 12 guiding principles for Agile software development. Given the value placed on individuals and interactions, it is not surprising that fully one half of the principles relate to the human side of software development. It is the interactions between people, not processes and plans alone, that make for successful product delivery.

The following principles are based on the 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 behavior accordingly.
  13. The authors of the Agile Manifesto joined with like-minded individuals to form the Agile Alliance, dedicated to sharing information about methods and practices for building more effective software solutions.

Best Practices for Agile Teams

Using an iterative framework, the Agile methodology relies upon the interaction of self-organizing teams of people who have the cross-functional skillsets required to develop tested, working software. The most commonly used programming practices – test-driven development, code refactoring, continuous integration, simple code design, pair programming, a common codebase and a single coding standard – contribute to the quality, flexibility and sustainability of the software.

Scaling Agile across teams facilitates delivery of larger, more complex outcomes.
Scaling Agile across teams facilitates delivery of larger, more complex outcomes.

Countless Agile best practices and development strategies are now part of the body of knowledge, giving Agile teams the benefit of learning from those before them. Equally important are the best practices concerning how groups of individuals can work together more efficiently and effectively. Even the best developers and testers need to up their interpersonal games to deliver products of value to users. That calls for more effective communication and collaboration among the development team, business stakeholders and the customer.

Let’s look at the people skills required for efficient and effective interaction on Agile teams.

Collaborate with the customer

The customer is satisfied when requirements are fulfilled, expectations are met, and wants and needs are gratified. Short of mindreading, software developers have come up with various ways to discover what the customer wants and to deliver exactly that. Traditionally, teams record user requirements at one end of the funnel, then deliver the product at the other end with negligible customer interaction in between. An Agile team is in near-constant communication with the customer, clarifying expectations, collaborating on fixes, and communicating options not previously considered.

This frequent interaction between the team and the customer is what promotes creativity and heightens quality. The best teams manage the risk of customers coming back with too many changes by collaborating on how to satisfy their demands. Together, they devise a better way to make the product do what users want it to do. It may not work the way the customer initially envisioned, but it will function in a more innovative and sustainable way.

Work together daily

According to the Agile Alliance, a common pitfall among Agile teams is to equate a group of people who work together with a “team.” Teams, and teamwork, contribute to successful projects when they collaborate as a cohesive unit. Organizational science researchers identified six components of Teamwork Quality:

  • Kommunikation
  • Coordination
  • Balance of team member contributions
  • Mutual support
  • Effort
  • Cohesion

There is a direct relationship between teamwork quality, team performance, and project success.

Agile teams operate on the assumption that individuals accomplish more when they rely on each other, than when they rely upon the processes and tools that are the mainstays of software development. Working together empowers and emboldens teams to take the imaginative leaps that produce truly innovative software. Apart from collaboration, simple teamwork is perhaps the most important skill in the lexicon of Agile best practices.

Valuing individuals and interactions means practicing teamwork daily. However, Agile teams do not operate in a vacuum. They need to interact with business stakeholders on a regular basis to infuse the development process with business priorities and domain expertise. Inviting stakeholders to brainstorm about features, functionality or user-friendly solutions introduces fresh ideas and insights. It’s important to note that stakeholders do not tell the team what to do but, instead, are invited guests in the Agile team’s war room.

Build projects around motivated individuals

It takes motivation to push through an intense development cycle and get the work done right. Agile teams are passionate about their work, focused on the team goal, and supportive of each other. When there is trust and respect among peers, Agile teams establish a rhythm to their work that is fast-paced and predictable. Creating an environment where this can happen isn’t easy. The most effective teams work in an open office, where the person with the answer is just a few steps away. An Agile floor plan helps team members work together, fosters impromptu brainstorming, and focuses the team’s activity. For quiet time, team members can retreat to individual workspaces.

In Tuckman’s theory of group development, teams pass through four stages – forming, storming, norming, performing – before they are fully able to plan work, overcome obstacles and deliver the desired results. As the team gears up, members who have been accustomed to working alone become more adaptable. They are willing to:

  • Take on the required roles
  • Form collaborative relationships
  • Adopt what the team deems to be the most efficient processes
  • Work reliably without management oversight
“When they are performing at full capacity, Agile teams constantly learn from one another; it is an empowering and motivating environment.”

Agile teams that deliver value at speed belong together. Nothing kills motivation faster than reassignment or redistribution of the members. Teams grow and learn when they stay together from one iteration to the next. It is a widely accepted Agile best practice to keep teams together, except for an occasional job rotation that introduces new skills. If there is a change-up in the team’s composition, the process of getting up to speed starts all over again.

Convey information face-to-face

Whether working through a knotty problem with a teammate or reporting on the day’s accomplishments at a daily meeting, Agile team members prefer face-to-face communication. Information lost in a full email box or voice message queue slows or blocks progress. The daily meeting is one time the entire team connects to find out if there are any issues that could cause delays. This brief, face-to-face encounter demands team members be present and forthcoming. Admitting there’s a hang-up and trusting teammates to rally to the cause does not come easily to some professionals. Face-to-face conversation opens channels and builds trust, making the Agile method sustainable.

Global teams face significant challenges, not only with geographic isolation of working groups or individuals, but also with time zone differences that limit when team members are available. Creating a virtual room with videoconferencing services, FaceTime mobile devices or cloud-based collaboration software is a passable alternative to in-person conversations. Conference calls, phone/VOIP or group text messages are generally poor substitutes.

Form self-organizing teams

Self-organizing teams choose how they will execute the work, and who will do what. They divide the work into increments that can be completed within each iteration, and into tasks that can be completed each day. Management does not assign tasks or look over their shoulders. The team is entrusted with making the right decisions. For this arrangement to work, each team member has to be confident in their work and commit to pushing through the most difficult, frustrating blocks. As a whole, teams share responsibility and accountability, stepping outside of individual roles to resolve issues together. If the outcome misses the mark, the team learns and adapts. Management does not second-guess or redirect.

Unless members have extensive prior experience, Agile teams do not intuitively know how to self-organize, and plan and execute an Agile software development project. It takes training, coaching and mentoring to make an Agile team. A team that is performing at full throttle still benefits from a mentor who can help them grow their skills.

Exercising the freedom to be self-organizing, Agile teams across the organization choose their own processes and tools, which may differ from those used by other teams or the organization at large. The organization can provide the tools but does not dictate how they are used. Communicating and collaborating with individuals in other business units, office locations or time zones can be problematic if they aren’t using the same toolset in the same way. Agreeing on a collaboration platform removes barriers to communication and streamlines the process of organizing the work.

Reflect on how teams can become more effective

Agile teams routinely examine their performance and look for ways to do better. In fact, they are dedicated to continuous improvement. As individuals and as a group, teams are open to mentoring and coaching but, as one Agile coach notes, they don’t respond well to command and control behavior from management. Agile teams prefer to figure things out on their own. One scheduled time for reflection is the retrospective, typically held right after a development iteration. Team members share what went well and what went wrong, then identify how to improve the process on the next go-round. In a Scrum team retrospective, each member suggests something the team should start doing, stop doing and continue doing.

The most effective teams take this reflection to heart and adjust their behavior accordingly. Over time, teams build up their own catalog of Agile best practices that contribute to their velocity – a measure of how much work a team can successfully complete within one two-week iteration.

Valuing individuals and interactions over processes and tools does not mean eschewing technology that can make the team more effective and productive. Agile teams use countless software applications to enable their work and streamline the development process. One such tool is the online Kanban board, which helps Agile teams to visualize the workflow, plan everyday tasks and track progress. The Kanban board provides the visual awareness to spot potential problems and imminent successes – for a single team or across multiple teams in the organization.

Scaling Agile Best Practices for Global Teams

When Agile teams consistently produce high-quality output, organizations that started small often want to scale the Agile development process to more products. Using the Agile methodology, multiple teams can work simultaneously on individual product releases or on multiple product releases in the portfolio. These teams can synchronize the planning and execution of their work using an Agile delivery solution that automates Agile practices and accelerates delivery. Even at scale, Agile teams can continue to self-organize and collaborate to achieve product goals.

Organizations also apply Agile practices across functional areas, business units or geographic locations to achieve the benefits of agility on other types of projects. Teams in these areas adopt Agile values, principles and practices for projects that run the gamut from digital transformation to human resource management. Adaptations of the Agile methodology, such as the Scaled Agile Framework (SAFe), provide roadmaps for enterprise-level implementation. Despite concerns about top-down decision-making and other organizational issues, SAFe has produced notable successes, from 30- to 50-percent gains in productivity to two- to three-times faster time-to-market.

Scaling Agile is most effective when organizations apply Agile methods regardless of how large or complex the project. Successful practices include keeping teams small, sticking to short iterations, getting rapid feedback from customers, setting value-based business priorities and engaging users in refining requirements. It is the core values and guiding principles for how people work together that make Agile methods sustainable. As Agile teams come together in organizations large and small, they will be better positioned for success if they make these Agile best practices a priority: collaboration, daily interaction, individual motivation, face-to-face conversation, self-organization and continuous improvement.