Agile

Agile / DevOps #

Mobius Loop #

The mobius loop is a navigator to bring order to the many different practices supporting agile and devops. It highlight that the deliver model is a continuous loop of delivery and discover an therefore has a strong focus on feedback mechanisms.

the mobius navigator by Red Hat

The Manifesto #

Manifesto for Agile Software Development

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to 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

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

12 principles #

The same is true for the 12 principles, which are at the core of every Agile project:

“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” #

Whether you are working to create a product for your company or for a customer, chances are that someone is awaiting its delivery. If that delivery is delayed, the result is that the customer, user, or organization is left waiting for that added value to their lives and workflows. Agile emphasizes that delivering value to users early and often creates a steady value stream, increasing you and your customer’s success. This will build trust and confidence through continuous feedback as well as early business value realization.

“Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.” #

When working in Agile, it’s important to be agile. That means being able to move swiftly, shifting direction whenever necessary. That also means that you and your team are constantly scanning your environment to make sure necessary changes are factored into the plans. Acknowledging and embracing that your plans may change (once, twice, or several times) ensures that you and your customers are maximizing your success.

“Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.” #

Delivering your product in small, frequent increments is important because it allows time and regular opportunities for stakeholders—including customers—to give feedback on its progress. This ensures that the team never spends too much time going down the wrong path.

“Business people and developers must work together daily throughout the project.” #

Removing barriers between developers and people focused on the business side of the project, builds trust and understanding and ensures that the developers, or those building the solution, are in tune with the needs of the users.

“Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.” #

A successful Agile team includes team members that not only trust each other to get the work done but are also trusted by their sponsors and executives to get the work done. Teams build better solutions when they are empowered and motivated to deliver difficult projects.

“The most efficient and effective method of conveying information to and within a development is face-to-face conversation.” #

There isn’t anything quite like face-to-face communication. Face-to-face communication allows us to catch certain cues, body language, and facial expressions that are sometimes lost when using forms of communication like email, chat, or the phone. However, we can’t always be face-to-face. Establishing effective communication norms—no matter the format—is essential to effective teams.

“Working software is the primary measure of progress.” #

In Agile teams, the main way to demonstrate meaningful completion of work is to show a working piece of the solution. In software teams, that might mean a functional piece of software. In non-software teams, that might mean a critical portion of the solution that is ready to be demonstrated to users or their representatives in order to collect feedback. This is in contrast to traditional or Waterfall projects, where the completion of project documents could be used to measure progress. In Agile project management, it is not enough to say that the team is 80% done with an activity if there is no working, demonstrable artifact available to review.

“Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.” #

Maintaining a steady but careful pace will prevent errors along the way. Also, you never want your team to feel overworked or overwhelmed. On the flip side, a team that is underutilized may become bored and lose the creative spark to innovate. The Agile ideal is to achieve a steady pace of effort for the team that avoids overtime and burnout.

“Continuous attention to technical excellence and good design enhances agility.” #

This principle conveys that just because the team is working fast doesn’t mean they sacrifice quality. By emphasizing quality and design throughout the project development phase, the agility, efficiency, and speed of the team will be increased. When a team delivers a well-built solution, they can quickly respond to user feedback and new information. However, if the product is low quality, implementing changes can become problematic, complex, and slow down the entire team.

“Simplicity—the art of maximizing the amount of work not done—is essential.” #

The team should avoid implementing extra features into the solution that weren’t explicitly requested by the user or product owner. This includes removing procedures that are no longer necessary, and reducing unnecessary documentation.

“The best architectures, requirements, and designs emerge from self-organizing teams.” #

Team members should be able to get their work done by designing their own work processes and practices, without a manager dictating how they operate. Team members should also feel empowered to speak up with questions, concerns, or feedback.

“At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.” #

In Agile, it is important to acknowledge that learning from successes and failures is continuous. No team is perfect. There will be mistakes, challenges, trials, and triumphs. Teams should reflect on all of these different aspects of their activities so that they can make necessary adjustments.

High Level Overview SCRUM #

The Scrum Guide defines Scrum as “A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.”

Pillars and values #

To recap, every person on a Scrum team subscribes to the three pillars and the five values of Scrum.

The three pillars of Scrum are: #

  • Transparency
  • Inspection
  • Adaptation

The five values of Scrum are: #

  • Courage
  • Commitment
  • Focus
  • Openness
  • Respect

In order for a team to succeed, it is incredibly important that every team member follow these core pillars and values.

Scrum only has a few rules and practices that are easy to follow. It is also easy to understand. However, Scrum can be challenging to master because mastery depends on being able to embody, live, and promote the pillars and values of Scrum.

Scrum Guide

Understanding Scrum Team roles #

Each Scrum Team member plays a vital role in the project’s success. In order to help a project get to the finish line, you will need to understand what each of these roles entail. In this reading, you will learn how the responsibilities of the Scrum Master, Product Owner, and Development Team differ from one another.

The Scrum Master #

One key responsibility of the Scrum Master is to help the team understand and follow Scrum theory. More specifically, according to the Scrum Guide, “The Scrum Master is accountable for establishing Scrum as defined in the Scrum Guide. They do this by helping everyone understand Scrum theory and practice, both within the Scrum Team and the Organization. The Scrum Master is accountable for the Scrum Team’s effectiveness. They do this by enabling the Scrum Team to improve its practices, within the Scrum framework.” The Scrum Master makes sure that important meetings occur, like the Daily Scrum. In the same way that a coach would be aware of the game clock, the Scrum Master is tasked with making sure that the meeting is kept within the appropriate timebox. A timebox is a Scrum concept that refers to the estimated duration for an event.

The Scrum Master acts as a coach to the Scrum Team—they encourage the team to build the product in the time frame. They also support the team by creating a collaborative environment so the project’s goals are achieved. The Scrum Master’s duties include:

  • Coaching the team members in self-management and cross-functionality
  • Helping the Scrum Team focus on creating high-value Increments that meet the Definition of Done (an agreed upon set of items that must be completed before a project or user story can be considered complete)
  • Causing the removal of impediments to the Scrum Team’s progress
  • Ensuring that all Scrum events take place and are positive, productive, and kept within the timebox (a Scrum concept that refers to the estimated duration for an event)

Scrum Master vs. project manager #

The role of the Scrum Master is sometimes confused with the role of the project manager. While the two roles share related skills and qualities, they are very different roles.

A Scrum Master is responsible for helping the team understand Scrum theory and practice. They ensure Scrum events take place and help the team focus on delivering value by removing impediments. But unlike a traditional project manager, they do not take on the management of changes in scope or priorities. Additionally, Scrum Masters do not maintain traditional project artifacts like Gantt charts.

The Product Owner #

According to the Scrum Guide, “The Product Owner is responsible for maximizing the value of the product resulting from work of the Scrum Team. How this is done may vary widely across organizations, Scrum Teams, and individuals.” Product Owners maximize the value of the product by representing and expressing the voice of the customer throughout the project duration. A product isn’t useful to its customers if that product doesn’t fulfill their expectations and meet their needs. The Product Owner’s duties include:

  • Developing and explicitly communicating the Product Goal
  • Creating and clearly communicating Product Backlog items (The Product Backlog contains all of the features, requirements, and activities associated with deliverables to achieve the goal of the project.)
  • Ensuring that the Product Backlog is transparent, visible, and understood

Product Owner vs. project manager #

In traditional project management, scope management is the primary responsibility of the project manager. But in Scrum, the definition and management of product scope falls to the Product Owner. Conversely, the Product Owner isn’t responsible for team performance—they aren’t considered to be a manager. The project manager leads the project team to meet the project’s objectives and oversees tasks and progress.

There are also similarities between the Product Owner and project manager roles. For instance, both roles are tasked with stakeholder management. This means they both must practice and facilitate effective communication among team members and stakeholders.

Additionally, in many companies—including Google—the definition of product or solution scope is the responsibility of a separate role called a product manager. So, it is important when joining any new company to discover how that company approaches the area of product definition, requirements development, and user research to understand what they consider to be the domain of the project manager.

Two Developers sitting next to one another, working at their computers

The Development Team #

The Development Team, also referred to as Developers, is made up of the people who do the work to build the product. According to the Scrum Guide, Developers are “the people in the Scrum Team that are committed to creating any aspect of a usable Increment each Sprint.” Their responsibilities include:

  • Creating a plan for the Sprint, the Sprint Backlog (the set of Product Backlog items that are selected to be completed during the upcoming Sprint)
  • Instilling quality by adhering to a Definition of Done
  • Adapting their plan each day toward the Sprint Goal
  • Holding each other accountable as professionals
  • Executing sprints by designing, building, and testing Product Backlog items in increments

An important aspect of the Development Team that is worth highlighting is that they are cross-functional, meaning that you will have team members who are specialists in different disciplines. In a software team, that might mean having a web developer, a database developer, and a user experience specialist. In a marketing team, that might mean having writers, editors, search engine optimization specialists, and business analysts.