SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
UDERSTANDING AGILE METHODOLOGIES 1
Understanding Agile Methodologies: Scrum, XP, Lean, and Kanban
Phu Nguyen
Bellevue College
UDERSTANDING AGILE METHODOLOGIES 2
Abstract
This paper summarizes a study of Agile methodologies for project management. The
study is based on the book Learning Agile by Andrew Stellman and Jennifer Greene as well as
six online resources for Agile project management and software development. The paper
explores four Agile school of thoughts: Scrum, Extreme Programing (XP), Lean, and Kanban.
Even though all of these Agile ways of thinking and doing are built around incremental and
iterative processes, each is developed for specific purpose. Scrum is an Agile methodology for
project management that relies on self-organization and collective commitment. XP is an Agile
methodology for software development that embraces changes. Lean is an Agile mindset that
promotes eliminating waste and seeing the whole. Kanban is an Agile method for process
improvement that focuses on flow and constantly improving. Agile practices can help teams
achieve better results than traditional project management and software development process
if teams and their organizations embrace the mindset behinds each Agile methodologies.
Keywords: Agile, Agile Manifesto, Agile values, Agile Principles, Agile Methodologies,
Scrum, XP, Lean, Kanban
UDERSTANDING AGILE METHODOLOGIES 3
Introduction
Agile project management has become popular in project management field, especially
Information Technology (IT) project management. Agile Manifesto organization was established
in 2001 to promote Agile software development. Since then, many groups have been formed by
Agile practitioners during its revolution, and often claim that Agile project management and
software development process give better results than the traditional project management and
the waterfall software development process. This study examines the four popular Agile
mindsets and methodologies Scrum, XP, Lean, and Kanban that have been practiced in project
management and software development fields.
Agile
According to Stellman and Greene (2015), Agile movement in software development
starts with ideas, values, and principles. In other words, it is a mindset that helps individuals
become more agile as practitioners, and more valuable as project team members.
Agile Manifesto
Understanding Agile begins with understanding its four simple values called Agile
Manifesto. According to the Manifesto for Agile Software Development, the Agile Manifesto
values are:
 Individual and interaction over processes and tools
 Working software over comprehensive documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan
It is important to notice that Agile Manifesto acknowledges the values of the items on
the right side in the above bullets, but it values the items on the left side (in bold font) more.
Stellman and Greene (2015) interpret these values as: a team should focus on its
members and their interaction first, and tools and processes second; delivering software that
UDERSTANDING AGILE METHODOLOGIES 4
users need is more important than delivering a specification of the software; treating
customers like team members to collaborate with; and incorporating changes to deliver
valuable software at the current moment is more important than working the plan.
The Agile Principles
There are twelve Agile principles besides the Agile Manifesto that guide Agile
practitioners to work on software project teams. According to the Manifesto for Agile Software
Development, the twelve Agile principles are:
1. Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
2. Welcome changing requirements, even late in the 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. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
5. Businesspeople and developers must work together daily throughout the project.
6. Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
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 reflect on how to become more effective, then turns
and adjusts its behavior accordingly.
UDERSTANDING AGILE METHODOLOGIES 5
Principles to Practices and Methodologies
Stellman & Greene (2015) group these twelve principles into four categories to help
practitioners understand the directions and insights these principles provide for Agile practices
and methodologies. The four categories are delivery, communication, execution, and
improvement.
Delivery (delivery the project): “Agile teams satisfy their customers by getting feedback
early in the project, and continuously delivering software to keep the feedback up to date
(Principle #1)” (p. 64). “They embrace change by treating project changes as positive and
healthy developments for the project (Principle #2)” (p. 64). “By using timeboxed iteration to
deliver working software frequently, agile teams constantly adjust the project so that it delivers
the most value to the customer (Principle #3)” (p. 64).
Communication (communication and working together): “Agile teams communicate
most effectively when they focus on face-to-face conversation and rely on the minimum
amount of documentation necessary for the project (Principle #4)” (p. 74). “Developers work
with business users every days so that they can deliver the most value (Principle #5)” (p. 74).
“Everyone on the agile team feels responsible for the project, and feels accountable for its
success (Principle #6)” (p. 74).
Execution (project execution): “The most effective way to communicate the progress of
the project is to deliver working software and put it in the hands of the users (Principle #7)” (p.
78). “Teams are most productive when they work at a sustainable pace and avoid heroics,
shortcuts, and overtime (Principle #8)” (p. 78). “Software that’s designed and implemented well
is fastest to deliver because it’s easiest to change (Principle #9)” (p. 78).
Improvement (constantly improving the project and the team): “Agile team keep their
solutions as simple as possible by avoiding building unnecessary features or overly complex
software (Principle #10)” (p. 81). “Self-organizing teams share responsibility for all aspects of
the project, from conceiving the product to project management to design and implementation
(Principle #11)” (p. 81). “By taking the time to look back and talk about lessons they learned
UDERSTANDING AGILE METHODOLOGIES 6
after each iteration and also at the end of the project, agile teams constantly get better at
building software (Principle #12)” (p. 81).
UDERSTANDING AGILE METHODOLOGIES 7
Scrum
Ken Schwaber and Jeff Sutherland developed an Agile methodology for software
development in 1990 that is now known as Scrum. According to Schwaber and Sutherland
(2013), Scrum is “a framework within which you can employ various processes and techniques.
[It] makes clear the relative efficacy of your product management and development practices
so that you can improve” (p. 3). In other words, Scrum is an Agile methodology for managing
projects. It has its own practices, values and principles that focus on self-organization and
collective commitment.
Scrum Values
Stellman and Greene (2015) listed five values that a team must embrace to become an
effective Scrum team: commitment, respect, focus, openness, and courage. They elaborate that
(p. 104-108):
Each person is committed to the projects’ goals. The level of commitment can be
achieved when the team has the authority to make decision in order to meet those
goals, and everyone has a say in how the project is planned and executed.
Team members respect each other. When team members have mutual respect, they’re
able to trust each other to do a good job with the work they’ve taken on.
Everyone is focused on the work. When a Scrum team member is working on a sprint,
that’s his only job for the duration of the sprint.
The teams value openness. When you’re working on a Scrum team, everyone else on
the team should always be aware of what you’re working on and how it moves the
project toward its current goals.
Team members have the courage to stand up for the project. Scrum teams have the
courage to live by values and principles that benefit the project.
UDERSTANDING AGILE METHODOLOGIES 8
Rules of Scrum
Schwaber and Sutherland (2013) explain that the rules of Scrum bind together the
events, roles, and artifacts, governing the relationships and interaction between them. The
detailed rules of Scrum can be found in The Scrum GuideTM, by Ken Schwaber and Jeff
Sutherland. A typical Scrum project follows these rules:
Scrum Team
The Scrum Team is a self-organizing and cross-functional team that consists of a Product
Owner, the Development Team, and a Scrum Master. The Product Owner is solely responsible
for managing the Product Backlog. The Development Team consists of 3 to 9 professionals who
organize and manage their own works to deliver a useable product increment at the end of
each Sprint. The Scrum Master is responsible for ensuring the Scrum team and related
organizations understand and adhere to Scrum theory, practices, and rules.
Product Backlog
Every project has a Product Backlog that lists all features, functions, requirements,
enhancements, and fixes that the users and stakeholders have bought into. Throughout the life
of the product, the Product Owner works with the Scrum Team to maintain and prioritize the
Product Backlog items based on feedback from the users and stakeholders.
Sprint
The product is incrementally and iteratively developed using a series of Sprints. A Sprint
is a time-box of one month or less during which a “Done”, useable, and potentially product
increment is created. A new Sprint starts immediately after the conclusion of the previous
Sprint. Sprints contain and consist of the Sprint Planning, Daily Scrums, the development work,
the Sprint Review, and the Sprint Retrospective. The Scrum Master coordinates these events
for a Scrum team during the product development. When doing development work, each
member of the Development Team collaboratively picks up tasks from the prioritized Sprint
Backlog and works on them.
UDERSTANDING AGILE METHODOLOGIES 9
Increment and Definition of Done
Each Sprint delivers a useable product increment. According to Schwaber and
Shutherland (2013, p. 15):
The Increment is the sum of all the Product Backlog items completed during a Sprint and
the value of the increments of all previous Sprints. At the end of a Sprint, the new
Increment must be “Done,” which means it must be in useable condition and meet the
Scrum Team’s definition of “Done.” It must be in useable condition regardless of
whether the Product Owner decides to actually release it.
Schwaber and Shutherland (2013, p. 15) also discuss about “Done” as follows:
When a Product Backlog item or an Increment is described as “Done”, everyone must
understand what “Done” means. Although this varies significantly per Scrum Team,
members must have a shared understanding of what it means for work to be complete,
to ensure transparency. This is the definition of “Done” for the Scrum Team and is used
to assess when work is complete on the product Increment.
Sprint Planning and Sprint Backlog
Each Sprint starts with a Sprint Planning done by the Scrum Master, Product Owner, and
the Development Team. The planning meeting is divided into two parts, each is time-boxed to
four hours. In the first part of the Sprint Planning meeting, the Product Owner works with the
Development Team to select the Product Backlog items for delivery in the product Increment at
the end of the Sprint, based on the Sprint objectives, the items’ functions, and the team’s
estimates. After selecting the items, the Scrum Team crafts a Sprint Goal that will be met
through the implementation of the selected items. In the second part of the Sprint Planning
meeting, the Development Team, with the Product Owner’s help, figure out the individual tasks
to implement the selected items. These tasks are work units of one day or less. The
Development Team negotiates with the Product Owner to keep the effort within one month
time-box. At the end of Sprint Planning, the selected items plus a plan for delivering them and
realizing the Sprint Goal become the Sprint Backlog.
UDERSTANDING AGILE METHODOLOGIES 10
Daily Scrum
After a Sprint Planning, the Scrum Team holds a 15-minute Daily Scrum meeting every
day during the Sprint to synchronize activities and create a plan for the current day. All team
members including the Scrum Master and Product Owner must attend. Each Development
Team member answer three questions:
 What did I do yesterday that helped the team meet the Sprint Goal?
 What will I do today to help the team meet the Sprint Goal?
 Do I see any impediment that prevents me or the team from meeting the Sprint
Goal?
If needed, the Development Team or team members will meet after the Daily Scrum for
detailed discussions, or adaptation for the remaining work of the Sprint. The Product Owner
must keep the Sprint Backlog up to date and visible to everyone. The Development Team can
request to add more work to the Sprint Backlog if they find that they will complete all work
early. If they however discover that they overcommitted, they need to inform the Product
Owner as soon as they realize that. The Product Owner can reset the expectations with the
users and stakeholders, and update the Sprint Backlog to match the team’s actual capacity. If
the team discovers that they cannot deliver working software, the Product Owner can
terminate the Sprint early and initiate new Sprint Planning.
Sprint Review
At the end of the Sprint, the Scrum Team holds a Sprint Review to demonstrate working
software to users and stakeholders. This is a four hour meeting for one month Sprints. The
demo only includes items that are completely implemented, tested and accepted by the
Product Owner as complete (or “Done”). Incomplete items are added back to the Product
Backlog together with the estimates for their remaining works. The Scrum Team will collaborate
with users and stakeholders about the Sprint’s result during the Sprint Review, answer their
questions, and get their feedback on the working software. The Product Owner will update
work items or add new work items to the Product Backlog to address all necessary changes
UDERSTANDING AGILE METHODOLOGIES 11
based on the feedback and collaboration. These changes will be considered in the next Sprint
Planning.
Sprint Retrospection
After each Sprint, the Scrum Team holds a Sprint Retrospective meeting with the
participation of the Development Team and Scrum Master (and optionally the Product Owner)
to identify process improvements. This is a three hour meeting for one month Sprints. Each
person will give feedback on what went well during the Sprint, and what can be improved in the
future. The Scrum Master documents any improvements that will be added to the Product
Backlog as nonfunctional items.
UDERSTANDING AGILE METHODOLOGIES 12
Extreme Programing (XP)
XP is an Agile methodology for software development that embraces changes. It
recognize the nature of change in system requirements during a software development cycle.
XP is made up of practices, values and principles developed by Kent Beck in early 1990s when
he worked on the Chrysler Comprehensive Compensation System project.
In a nutshell, a XP team uses a release planning meeting to collaboratively create a
release plan for the overall project. This release plan is then used to develop iteration plans for
each iteration which is typically one week long. The team holds an iteration planning meeting at
the beginning of each iteration to select adequate user stories and create a plan of
programming tasks. The whole team sits together in an informative workspace. They start each
day with a standup meeting. They write code in pair, develop unit tests first before coding, and
integrate their code continuously. They focus on simple solutions and incremental design, and
refactor whenever and wherever possible to improve the system design (Wells D., 2009).
The XP Values
Wells D. (2009) states on his page The Values of Extreme Programming that XP is based
on five core values that help individuals work in harmony with their personal and corporate
values. They help get the team into a mindset that naturally see great practices as the obvious
way to build quality software. The five XP values are (Wells D., 2009):
Simplicity: We will do what is needed and asked for, but no more. This will maximize the
value created for the investment made to date. We will take small simple steps to our
goal and mitigate failures as they happen. We will create something we are proud of
and maintain it long term for reasonable costs.
Communication: Everyone is part of the team and we communicate face to face daily.
We will work together on everything from requirements to code. We will create the best
solution to our problem that we can together.
Feedback: We will take every iteration commitment seriously by delivering working
software. We demonstrate our software early and often then listen carefully and make
UDERSTANDING AGILE METHODOLOGIES 13
any changes needed. We will talk about the project and adapt our process to it, not the
other way around.
Respect: Everyone gives and feels the respect they deserve as a valued team member.
Everyone contributes value even if it's simply enthusiasm. Developers respect the
expertise of the customers and vice versa. Management respects our right to accept
responsibility and receive authority over our own work.
Courage: We will tell the truth about progress and estimates. We don't document
excuses for failure because we plan to succeed. We don't fear anything because no one
ever works alone. We will adapt to changes whenever they happen.
In other words, “XP team focus on writing the most simple and direct solutions
possible”. “Each team member is aware of the work everyone else is doing”. “Constant tests
and feedback loops keep the quality of the product in check. Each team member is focused on
making the best choices for the projects, even if it means having to discard failing solutions or
approach things differently”. “Every team member is important and valuable to the project”
(Stellman and Greene, 2015, p. 196).
The XP Principles
In addition to the five core values, XP has a set of principles that provide more details
about how XP team think about their problems. Together, XP values and principles help guild
team in applying XP practices to their project. According to Stellman and Greene (2015, p. 201-
202), the XP principles are as follows:
Humanity: Remember that software is built by people, and there’s a balance between
the needs of each team member and the project’s need.
Economics: Somebody is always paying for software project and everybody has to keep
the budget in mind.
Mutual benefit: Search for practices that benefit the individual, the team, and the
customer together.
UDERSTANDING AGILE METHODOLOGIES 14
Self similarity: The pattern of a monthly cycle is the same as a weekly cycle and the
same as a daily cycle.
Improvement: Do your best today, and stay aware of what you need to do to get better
tomorrow.
Diversity: Lots of different opinions and perspectives work together to come up with
better solutions.
Reflection: Good teams stay aware of what’s working and what isn’t in their software
process.
Flow: Constant delivery means a continuous flow of development work, not distinct
phases.
Opportunity: Each problem the team encounters is a change to learn something new
about software development.
Redundancy: Even though it can seem wasteful at first blush, redundancy avoids big
quality problems.
Failure: You can learn a lot from failing. It’s OK to try things that don’t work.
Quality: You can’t deliver faster by accepting a lower quality product.
Accepted responsibility: If someone is responsible for something, they need to have the
authority to get it done.
Baby steps: Take small steps in the right direction rather than making wholesale
changes when adopting new practices.
The XP Primary Practices
The best known concept of XP methodologies are its 13 primary practices. To help make
a good sense of these practices, Stellman and Greene (2015) divide them into 5 categories in
term of software developments: programming practices, integration practices, planning
practices, team practices, and holistic practices.
UDERSTANDING AGILE METHODOLOGIES 15
Programming Practices
There are two practices that are designed to help those programmers write better code.
They are test-first programming and pair programing. Stellman and Greene (2015, p. 178-179)
wrote:
Test-first programing, also known as test-driven development (or TDD), it means that
before he writes code, he builds an automated test. These automated tests are usually
called unit tests.
In pair programing, two developers sit together at a single workstation when writing
code. In most case, one programmer types, while the other watches-and they constantly
discuss what is going on. One developer can take over typing when the other gets
mentally tired.
When build unit tests first, XP teams express the behavior that is expected of the code
to be developed. Then they write code that pass these tests. This practice creates a feedback
loop that helps to prevent defects. In addition, pair-programing provides immediate feedback
that will help catch any potential bugs as early as possible.
Integration Practices
Two XP practices focus on integration to assure the quality of the code that is developed
in to the codebase. They are as follows (Stellman and Greene, 2015, p. 180):
In 10-minute build, the team creates an automated build for the entire codebase that
runs in under 10 minutes. This build includes automatically running all of the unit tests
and generating a report of which tests passed and which failed.
In continuous integration, the team will use a version control system that has a central
master set of files, which individual developers will check out, or copy into a private
copy of the entire codebase that’s only used by that programmer (often called a
sandbox). The developer will work on the copy of the code in her sandbox, and
periodically check it back into the repository. Integrating continuously means that each
team member constantly keeps his or her own copy of the codebase up to date. Team
UDERSTANDING AGILE METHODOLOGIES 16
members periodically integrate the latest code from the repository back into their
sandboxes.
The 10-minute build helps XP encouraging continuous integration for quality check.
Individual developers use continuous integration to constantly integrate code changes from
their teammates so everyone’s sandbox is up to date. Any bugs introduced by new code will be
detected and fixed quickly.
Planning Practices
XP teams use iterative development to manage their project. These concept is well
demonstrated in three XP practices that are described by Stellman and Greene (2015, p. 181) as
follows:
In quarterly cycle, the team meets to take a look at the big picture. XP teams will talk
about themes, or larger ideas in the real world that they can use to tie their project’s
stories together. The team also steps back and talks about internal and external
problems that they’re experiencing, nagging bugs, and repairs that haven’t been
addressed yet. They take the time to reflect on the progress they’ve made so far, how
well they’re meeting their users’ needs, and how the project is going overall.
In weekly cycle, the XP team uses one-week iterations, and it works closely with the
stories practice. Each cycle starts with a planning meeting, where the team members
review the progress they’ve made on the project, work with the customers to pick the
stories for the iteration, and then break the stories into tasks that are estimated and
assigned to developers.
In slack, the team add minor, lower-priority stories to each weekly cycle. These stories
are broken down into tasks during the planning meeting, but those tasks are left for the
end of the iteration. That way, if the team runs into unexpected problems, it’s very easy
for them to cut out those “slack” stories and still deliver complete, working software at
the end of the cycle.
UDERSTANDING AGILE METHODOLOGIES 17
Another XP primary practice should be included in this category is Story. The software
developers work with their customers and users to write user stories which address who use
the system, how they use it, and what they use it for (Westfall, 2009, p. 208).
By practicing iterative development, XP teams make their planning decisions in last
responsible moment where they have enough information to make the best choices for their
development. In addition, making decisions as late as possible helps the teams stay flexible to
any changes occur during their projects.
Team Practices
XP is not just about programming. It is also about how teams work together. Stellman
and Greene (2015, p. 181-182) explain:
In sit together, the team sits near each other, and have easy access to everyone else on
the team. Team members constantly consult each other about problems, ask each other
for advice, and alert each other to problems.
In informative workspace, the team’s working environment is set up to automatically
communicate important project information to anyone who happens to be working in it.
When sitting together, XP teams absorb project information through osmotic
communication. Together with using information radiators like wall charts, they become truly
working in an informative workspace.
Holistic Practices
Stellman and Greene (2015) call these three XP practices holistic practices because they
are closely interconnected, and have to work together to be effective. They are described as
follows (p. 247):
Incremental design is about making code design decision at the last responsible
moment, avoiding trying to build everything at once. When the team has developed the
habits that lead them to build decoupled code made up of small, solid, independent
units, they don’t need to come up with the complete design up front. They can come up
with a high-level design, without having to think of every possible scenario that might
UDERSTANDING AGILE METHODOLOGIES 18
not fit into it. They can be confident that when they discover an edge case that isn’t
handled, they’ll have the tools in place to deal with it later. This frees people up to think
about the problem in the way they would naturally think about it, and to build the code
piece by piece as they learn more about the problem they are tackling. This is the idea
behind incremental design, and it results in a highly flexible, adaptable, and changeable
codebase. But it only works when every developer truly believes in making design and
code decisions at the last responsible moment. Everyone on the team needs to believe
that it’s faster to build a small, decoupled piece of the system today, and trust
themselves to fix it tomorrow if it isn’t quite right.
Energized work means establishing an environment where every team member is given
enough time and freedom to do the job. This keeps them in the mental space where
they can develop and use good habits that lead to better, more naturally changeable
code. This, in turn, lets them produce much more code, and deliver more valuable
features (and features that are more valuable) to the users and customers, in a shorter
period of time.
Whole Team is about helping the individuals on the team come together as a whole.
They encounter obstacles, they work together to overcome them. When there’s an
important decision that affects the direction of the project, that decision is made
together. Everyone on the team learns to trust the rest of the team members to figure
out which decisions can be made individually, and which decisions need to be brought
to the rest of the team.
The XP Corollary Practices
In addition to the 13 primary practices, XP also has 11 corollary practices. Stellman and
Greene (2015) describe them as follows (p. 214-215):
Real customer involvement: Bring customers into the quarterly and weekly planning
sessions-and actually listening to them.
UDERSTANDING AGILE METHODOLOGIES 19
Incremental deployment: Deploy small pieces of the system individually, rather than
one “big shot” deployment (also, believing that a system can really be deployed this
way).
Team continuity: Keeping effective teams together.
Shrinking teams: As a team improves, they can get more work done more quickly;
instead of adding work each week, remove a team member (and use that person to
bring the XP culture to another team).
Root-cause analysis: When something goes wrong, figure out what the problem was,
and then figure out why that problem occurred, and what caused that occurrence, and
eliminate the problem further upstream.
Shared code: Every person on the team feels comfortable working on any piece of it,
and everyone owns it collectively.
Code and test: Only the code and tests are maintained by the team; the documentation
is generated automatically from the codebase, and history is kept alive as word-of-
mouth culture (because people rarely crack open dusty binders of old project plans,
anyway).
Single codebase: Don’t manage multiple version of the code.
Daily deployment: Push a new version of the software into production every day.
Negotiated scope contract: For a consulting company, instead of fixing the scope and
negotiating time (and, often, sacrificing quality to meet the deadline), fix the time and
have an ongoing negotiation of the scope.
Pay-per-use: This another consulting-related practice-instead of charging for
development work, charge the customer when they use the system; this gives real-time,
constant feedback about which features are being used, and which aren’t.
UDERSTANDING AGILE METHODOLOGIES 20
Refactoring Practice
One practice XP teams adopt and use constantly is refactoring code, “changing the
structure of the code without changing its behavior” (Stellman and Greene, 2015, p. 237).
According to Stellman and Greene, each iteration as XP teams learn more about the system
functions, they try to refactor existing code to create simple code units that do unique
functions that can be reused in different areas of the system. This practice helps XP team
practice incremental design and make design and code decisions in the last responsible
moment. In addition, refactoring code help “build a codebase that is much easier to change” (p.
240) that enables XP teams to embrace changes during the software development.
UDERSTANDING AGILE METHODOLOGIES 21
Lean
Lean, also known as lean thinking, is an Agile mindset that aims to provide a new way to
think about organizing activities to deliver more value while eliminating waste. It was coined by
James P. Womack and Daniel T. Jones based on their study about Toyota Production System
that centers on Value, Value streams, Flow, Pull, and Perfection.
Lean Values
As any other mindsets, Lean comes with a set of values that provide guidance for lean
thinking. According to Stellman and Greene (2015), The Lean values are as follows (p. 270-271):
Eliminate waste: Find the work that you’re doing that doesn’t directly help to create
valuable software and remove it from the project
Amplify learning: Use feedback from your project to improve how you build software
Decide as late as possible: Make every important decision for your project when you
have the most information about it-at the last responsible moment.
Deliver as fast as possible: Understand the cost of delay, and minimize it using pull
system and queues.
Empower the team: Establish a focused and effective work environment, and build a
whole team of energized people.
Build integrity in: Build software that intuitively makes sense to the users, and which
forms a coherent whole.
See the whole: Understand the work that happens on your project-and take the right
kind of measurements to make sure you’re actually seeing everything clearly, warts and
all.
Lean Principles
Besides the Lean values, lean thinking have five fundamental principles for guiding the
implementation of lean techniques. Womack and Jones (2003) describe the five principle of
lean thinking as follows:
UDERSTANDING AGILE METHODOLOGIES 22
1. Specify Value: from the end users standpoint on specific products or services with
specific capabilities.
2. Identify the Value Stream: including all the activities necessary to create products or
services. These activities can be (1) activities that unambiguously create value, (2)
activities that create no value but seem to be unavoidable with current technologies
or production assets, and (3) activities that create no value and are immediately
avoidable. Eliminate activities that do not create value if possible.
3. Flow: Make the value-creating steps occur in tight sequence so the product will flow
smoothly toward the customer.
4. Pull: let customers pull value from the next upstream activity as flow is introduced.
5. Perfection: begin the process again [(from principle #1)] and continue it until a state
of perfection is reached in which perfect value is created with no waste.
Lean Thinking Tools
Lean comes with a set of ways to think that support Lean values. Stellman and Greene
(2015) call them Lean thinking tools (p. 272-273, 284, 288-289, 292-299, 304):
Last responsible moment: Support decide as late as possible value. Similar to Scrum and
SX, it is about making decisions at the last responsible moment.
Feedback: Support amplify learning. Similar to Scrum and XP.
Iterations: Support amplify learning. Similar to Scrum and XP.
Synchronization: Support amplify learning. Similar to continuous integration and
collective ownership in XP.
Set-based development: Support amplify learning. Running a project in a way that gives
you more options by having the team follow several paths simultaneously to build
alternatives that they can compare.
Self-determination: Support empower the team. Similar to ideas behind the XP
practices of whole team and energized work.
UDERSTANDING AGILE METHODOLOGIES 23
Motivation: Support empower the team. Similar to ideas behind the XP practices of
whole team and energized work.
Leadership: Support empower the team. Similar to ideas behind the XP practices of
whole team and energized work.
Expertise: Support empower the team. Similar to ideas behind the XP practices of whole
team and energized work.
Options thinking: Support commitment (part of Lean thinking). Seeing the difference
between something that you’re committed to and something that you have the right
(but not the obligation) to do.
Seeing waste: Support eliminating waste
Refactoring: Support build integrity in (internal integrity). Similar to refactoring of XP.
Testing: Support build integrity in (internal integrity). Similar to test-driven development
of XP.
Perceived integrity: Support build integrity in (external). How well the product meets
the needs of the person using it-and how well the person immediately see that his or
her needs are met.
Conceptual integrity: Support build integrity in (external). How well the features of the
software work together to form a single, unified product.
Measurements: Support see the whole. Everyone can see the project the same way.
Choosing the right measurement helps the team get a better picture of the project.
They will take different measurement depending on what problem they want to solve.
Taking objective measurement helps get everyone to see the project on the same term.
Root cause: Support see the whole. Understanding the actual reason that the problem
is happening. XP teams and Lean teams both utilize a technique called Five Why to
figure out the root cause of a problem. The team members ask why a problem
UDERSTANDING AGILE METHODOLOGIES 24
happened, and when they answer the question they continue to ask why (usually
around five times) until they discover a root cause.
Pull system: Support Deliver As Fast As Possible. A way of running a project or a process
that uses queues or buffers to eliminate constraints.
Queuing theory: Support Deliver As Fast As Possible. Make sure that people are not
overloaded with work; so that they have time to do things the right way. Queue is a list
of tasks, features, or to-do items for a team or for an individual developer. Queue has an
order, and are typically first-in, first-out. Lean tells us that making a team’s queue of
work public, and making it central to the decision-making process, helps teams to
deliver more quickly.
Cost of delay: Support Deliver As Fast As Possible. If a part was in short supply, a delay
in getting that part to the assembly line was very expensive; if the part was abundant,
the cost of delay was low.
Value stream map: Support See the Whole. A visual tool to help team see the reality of
how their project works by showing the entire lifespan of a minimal marketable feature
(MMF), including the work and waiting time at every state. MMF is the smallest “chunk”
of value or functionality that the team can deliver, such as a story or a user request-
something that might end up on a Product Owner’s backlog.
Work In Progress (WIP) area chart: Support Deliver As Fast As Possible. A visual tool
that shows how MMFs flow through your project’s value stream.
UDERSTANDING AGILE METHODOLOGIES 25
Kanban
According to Stellman and Greene (2015), Kanban is a method for process improvement
used by Agile teams. It is an application of Lean mindset to the way Agile teams work that
create a solid foundation for continuously improving their process. “When teams use Kanban to
improve, they focus on eliminating the waste from their process” (p. 315).
Kanban Principles and Practice:
According to Kanban Yahoo! Group Using the Kanban Method, David J. Anderson
describes Kanban defined Kanban method as follows:
First follow the foundational principles:
 Start with what you do now
 Agree to pursue incremental, evolutionary change
 Initially, respect current roles, responsibilities and job titles
Then adopt the core practices:
 Visualize.
 Limit WIP
 Manage Flow
 Make Process Policies Explicit
 Implement Feedback Loops
 Improve Collaboratively, Evolve Experimentally (using models/scientific method)
It is not expected that implementations adopt all six practices initially. Partial
implementation are referred to as “shallow” with the expectation that they gradually
increase in depth as more practices are adopted and implemented with greater
capability.
Stellman and Greene (2015) interpret the Kanban principles as Kanban teams should
start with understanding the current system for running their project, setting a goal of making
UDERSTANDING AGILE METHODOLOGIES 26
small improvements to that system, recognizing that the current roles, responsibilities and job
titles are important part of the system.
Visualize the Workflow
Stellman and Greene (2015) describes Kanban “visualizing means writing down exactly
what the team does, warts and all, without embellishing it” (p. 327). A Kanban team visualize
their system workflow using a Kanban board, consisting of columns represent each stage in the
workflow of a work item. Each work item in the system flows across the board as it advances
through the system. Each column has sticky notes to represent work items, usually stories not
task, in the associated stage. “It is important to understand that a kanban board visualizes the
underlying workflow and process in use” (p. 328), not what is on a process documentation.
During a “walking the board” meeting, which is often held daily, the team discusses the
state of each work item listed on the board. Items that are completed in the current stage
should be moved to the next stage in the workflow by moving the associated sticky notes to the
next column on the board.
Limit Work in Progress
According to Stellman and Greene (2015), “limiting work in progress (WIP) means
setting a limit on the number of work items that can be in a particular stage in the project’s
workflow” (p. 333). The WIP of a column limits the stories or features that can flow into the
associated stage of the workflow. It means to prevent the overburden because of work items
piling up at a bottleneck stage. Kanban teams initially choose a WIP limit that makes sense for
everyone in the team, then measure the workflow to adjust the WIP limit experimentally to
optimize the system performance.
After a column WIP limit is reached, the teams avoid performing work that will advance
work items into that column, and focus their effort on the work items on other columns whose
WIP limits have not been reached or columns that have no WIP limits. In other words, a column
with WIP limit becomes a queue where work items are managed smoothly and orderly. This will
keep the work items flowing through the system as efficiently as they can be.
UDERSTANDING AGILE METHODOLOGIES 27
To set a WIP limit for a column on a Kanban board, Kanban teams add a number to the
column that represent the maximum number of work items allowed in that stage in the
workflow. “Kanban teams work with their users, managers, and other stakeholders to make
sure that everyone agrees that when a column is at its WIP limit, they will focus their work
elsewhere in the project and not advance any more work items into that workflow stage” (p.
339).
Measure and Manage Flow
Stellman and Greene (2015) explain the rate at which work items advance through the
system is called the system flow. The system flow reaches maximum level when a team
deliveries work items at their optimal space with a comfortable amount of feedback. The less
unevenness and overburdening, the better chance for maximizing the system flow. As the team
is able to finish their work without dealing with bottleneck in the system, the system flow will
increase. If the team experience unevenness in the system because of work piling in a stage of
the workflow, the system flow will decrease. A Kanban team practices managing flow by
measuring the system flow and making necessary process improvements. They work
collaboratively to increase the system flow so that the unevenness and lead times can be
decreased.
Cumulative flow diagram (CFD) is an effective tool for visualizing the system flow using
area chart where each area on the chart represents accumulated work items in a stage of the
system workflow. In other words, the areas are corresponded to the columns on a Kanban
board (Stellman and Greene, 2015). In addition to the areas, CFD also shows the arrival rate
(the number of work items added to the workflow every day), the inventory (the total number
of work items in the workflow), and the lead time (the amount of time each work item flows
through the entire system).
The CFD helps Kanban teams see the performance patterns of their process over time,
so they can identify the bottlenecks and eliminate the root causes in the long run. As we know
Kanban teams use WIP limits to control the workflow in the day-by-day basis, and find the
optimal WIP limits by experimentation. When they get the WIP limits right, the arrival rate of
UDERSTANDING AGILE METHODOLOGIES 28
work items will eventually match the rate that the team can complete the work items. As a
result, the inventory trend and arrival rates will be flat, and the system becomes stable.
Little’s Law, a theorem that’s part of queueing theory, states (Stellman and Greene,
2015) that when the system is stable, the following is true:
L (average inventory) = W (average lead time) * λ (average arrival rate)
W = L / λ
When the system is stable (average inventory L is constant), Kanban teams can cut
down the work items’ lead time by increasing the arrival rate such as extending the starting
time between work items or features.
Stellman and Greene conclude that (2015, p. 357):
Controlling the flow across the entire project helps everyone on the team relax and
focus on the work that they’re doing now, without having to worry that tasks are piling
up behind them. They can trust the WIP limits to keep the chaos out. And they know
that if chaos starts to leak in, it will show up when they measure the workflow, and they
can adjust the WIP limits and cadence to keep work focused and flowing.
Make Process Policies Explicit So Everyone Is on the Same Page
Stellman and Greene (2015) elaborate that Kanban teams can make policies explicit to
everyone by simply writing WIP limits at the tops of the columns in a Kanban board, and adding
“definitions of done” or “exit criteria” to the bottom of each column to guide the team on when
work items can be advanced through the stages of their workflow. “This is especially effective
when these policies were established collaboratively and evolved experimentally by the whole
team, because it means that everyone understands why they’re there” (p. 358).
UDERSTANDING AGILE METHODOLOGIES 29
Conclusion
Agile Manifesto for Software Development provides four simple values for all Agile
methodologies and mindsets: individuals and interaction over processes and tools, working
software over comprehensive documentation, customer collaboration over contract
negotiation, and responding to change over following a plan. Scrum, XP, Lean, and Kanban are
built on these values with specific practices, values and principles that are applicable for
different purposes. Scrum is an Agile methodology for project management that relies on self-
organization and collective comment. XP is an Agile methodology for software development
that embraces changes. Lean is an Agile mindset that promotes eliminating waste and seeing
the whole. Kanban is an Agile method for process improvement that focuses on flow and
constantly improving. All of these Agile methodologies and mindsets are based on the concept
of incremental and iterative evolvement. Although teams may achieve better results by
implementing Agile practices, Agile mindsets help them to achieve the best results of applying
Agile methodologies within their projects and organizations.
UDERSTANDING AGILE METHODOLOGIES 30
References
Stellman, A., & Greene, J. (2015). Learning Agile: Understanding Scrum, XP, Lean, and Kanban.
Sebastopol, CA: O’Reilly Media.
Beck, K., Beedle, M., Bennekum, V. A., Cockburn, A., Cunningham, W., Fowler, M., . . . Thomas,
D. (2001). Manifesto for Agile Software Development.
Retried from http://www.agilemanifesto.org.
Schwaber, K., Sutherland, J. (2013). The Scrum GuideTM. Retried from
http://www.scrumguides.org.
Wells, D. (2009). The Values of Extreme Programming. Retried from
http://www.extremeprogramming.org/values.html.
Womack, P. J. and Jones, T. D. (2003). Lean Thinking: Banish Waste and Create Wealth in Your
Corporation. New York, NY: FREE PRESS. (Retried from http://www.amazon.com/)
Westfall, L. (2009). The Certified Software Quality Engineer Handbook.
Milwaukee, Wisconsin: American Society for Quality Press.
(Retried from http://www.amazon.com/)
Yahoo! Group Using the Kanban Method. Group Description.
Retried from https://groups.yahoo.com/neo/groups/kanbandev/info.

Contenu connexe

Tendances

Agile Methodology in Software Development
Agile Methodology in Software DevelopmentAgile Methodology in Software Development
Agile Methodology in Software DevelopmentRaghav Seth
 
DevSecOps Fundamentals and the Scars to Prove it.
DevSecOps Fundamentals and the Scars to Prove it.DevSecOps Fundamentals and the Scars to Prove it.
DevSecOps Fundamentals and the Scars to Prove it.Matt Tesauro
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodologyAmit Verma
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubePatroklos Papapetrou (Pat)
 
Agile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesAgile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesCelerity
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesPieter de Bruin
 
Agile Software Development Methodologies
Agile Software Development MethodologiesAgile Software Development Methodologies
Agile Software Development Methodologieselvinefendi
 
Agile Security—Field of Dreams
Agile Security—Field of DreamsAgile Security—Field of Dreams
Agile Security—Field of DreamsPriyanka Aash
 
Leveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsLeveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsSeniorStoryteller
 
Code Quality in Ruby and Java
Code Quality in Ruby and JavaCode Quality in Ruby and Java
Code Quality in Ruby and JavaSteve Hayes
 
2 a introduction to agile
2 a introduction to agile2 a introduction to agile
2 a introduction to agileqtntpam
 
Agile Project Management for IT Projects
Agile Project Management for IT ProjectsAgile Project Management for IT Projects
Agile Project Management for IT Projectsrachna_nainani
 
Agile methodologiesvswaterfall
Agile methodologiesvswaterfallAgile methodologiesvswaterfall
Agile methodologiesvswaterfallMuthu Natarajan
 
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanie
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanieWstęp do SCRUM - jak dostarczyć właściwe oprogramowanie
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanieMaciej Grajcarek
 
What is Scaled Agile Framework | Edureka
What is Scaled Agile Framework | EdurekaWhat is Scaled Agile Framework | Edureka
What is Scaled Agile Framework | EdurekaEdureka!
 
An Introduction to Agile
An Introduction to AgileAn Introduction to Agile
An Introduction to AgileDavidMcLachlan1
 
Scrum role introduction – the scrum master
Scrum role introduction – the scrum masterScrum role introduction – the scrum master
Scrum role introduction – the scrum masterLê Trọng-Hiệp
 
Agile Software Development Model
Agile Software Development ModelAgile Software Development Model
Agile Software Development ModelRitika Balagan
 

Tendances (20)

Agile Methodology in Software Development
Agile Methodology in Software DevelopmentAgile Methodology in Software Development
Agile Methodology in Software Development
 
DevSecOps Fundamentals and the Scars to Prove it.
DevSecOps Fundamentals and the Scars to Prove it.DevSecOps Fundamentals and the Scars to Prove it.
DevSecOps Fundamentals and the Scars to Prove it.
 
Introduction agile scrum methodology
Introduction agile scrum methodologyIntroduction agile scrum methodology
Introduction agile scrum methodology
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQube
 
Agile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesAgile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use Cases
 
Overview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled KubernetesOverview of Azure Arc enabled Kubernetes
Overview of Azure Arc enabled Kubernetes
 
Agile Software Development Methodologies
Agile Software Development MethodologiesAgile Software Development Methodologies
Agile Software Development Methodologies
 
What is Scrum? SlideShare
What is Scrum? SlideShareWhat is Scrum? SlideShare
What is Scrum? SlideShare
 
Agile Security—Field of Dreams
Agile Security—Field of DreamsAgile Security—Field of Dreams
Agile Security—Field of Dreams
 
Leveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOpsLeveraging Nexus Repository Manager at the Heart of DevOps
Leveraging Nexus Repository Manager at the Heart of DevOps
 
Code Quality in Ruby and Java
Code Quality in Ruby and JavaCode Quality in Ruby and Java
Code Quality in Ruby and Java
 
2 a introduction to agile
2 a introduction to agile2 a introduction to agile
2 a introduction to agile
 
Agile Project Management for IT Projects
Agile Project Management for IT ProjectsAgile Project Management for IT Projects
Agile Project Management for IT Projects
 
Agile methodologiesvswaterfall
Agile methodologiesvswaterfallAgile methodologiesvswaterfall
Agile methodologiesvswaterfall
 
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanie
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanieWstęp do SCRUM - jak dostarczyć właściwe oprogramowanie
Wstęp do SCRUM - jak dostarczyć właściwe oprogramowanie
 
What is Scaled Agile Framework | Edureka
What is Scaled Agile Framework | EdurekaWhat is Scaled Agile Framework | Edureka
What is Scaled Agile Framework | Edureka
 
Understand SAFe in 8 Pictures
Understand SAFe in 8 PicturesUnderstand SAFe in 8 Pictures
Understand SAFe in 8 Pictures
 
An Introduction to Agile
An Introduction to AgileAn Introduction to Agile
An Introduction to Agile
 
Scrum role introduction – the scrum master
Scrum role introduction – the scrum masterScrum role introduction – the scrum master
Scrum role introduction – the scrum master
 
Agile Software Development Model
Agile Software Development ModelAgile Software Development Model
Agile Software Development Model
 

En vedette

1-s2.0-S1359835X15003553-main
1-s2.0-S1359835X15003553-main1-s2.0-S1359835X15003553-main
1-s2.0-S1359835X15003553-mainLuigi Gigliotti
 
Techniline Brochure
Techniline BrochureTechniline Brochure
Techniline BrochureAlee Raza
 
Gigliotti_Pinho_MST_Accepted_Manuscript
Gigliotti_Pinho_MST_Accepted_ManuscriptGigliotti_Pinho_MST_Accepted_Manuscript
Gigliotti_Pinho_MST_Accepted_ManuscriptLuigi Gigliotti
 
Gigliotti_Luigi_PBCs_Accepted manuscritp
Gigliotti_Luigi_PBCs_Accepted manuscritpGigliotti_Luigi_PBCs_Accepted manuscritp
Gigliotti_Luigi_PBCs_Accepted manuscritpLuigi Gigliotti
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB WebinerHakan Özler
 
JSON-P 1.1 EDR1 Webinar
JSON-P 1.1 EDR1 WebinarJSON-P 1.1 EDR1 Webinar
JSON-P 1.1 EDR1 WebinarHakan Özler
 
Deploy a MongoDB Replica Set using Docker
Deploy a MongoDB Replica Set using DockerDeploy a MongoDB Replica Set using Docker
Deploy a MongoDB Replica Set using DockerHakan Özler
 
Summer Training Report Ntpc barh (ajeet)
Summer Training Report Ntpc barh (ajeet)Summer Training Report Ntpc barh (ajeet)
Summer Training Report Ntpc barh (ajeet)Ajeet Chaurasia
 
Knowledge-Power/Resistance in Indian Campus Fiction
Knowledge-Power/Resistance in Indian Campus FictionKnowledge-Power/Resistance in Indian Campus Fiction
Knowledge-Power/Resistance in Indian Campus FictionVinod Kumar Rawat
 
Phased Array Ultrasonic Testing in lieu of Radiography
Phased Array Ultrasonic Testing in lieu of RadiographyPhased Array Ultrasonic Testing in lieu of Radiography
Phased Array Ultrasonic Testing in lieu of RadiographyMike Belcher
 

En vedette (17)

Albert einstein report
Albert einstein reportAlbert einstein report
Albert einstein report
 
1-s2.0-S1359835X15003553-main
1-s2.0-S1359835X15003553-main1-s2.0-S1359835X15003553-main
1-s2.0-S1359835X15003553-main
 
FULLTEXT01
FULLTEXT01FULLTEXT01
FULLTEXT01
 
Techniline Brochure
Techniline BrochureTechniline Brochure
Techniline Brochure
 
resume_J P S_
resume_J P S_resume_J P S_
resume_J P S_
 
MadhuResume
MadhuResumeMadhuResume
MadhuResume
 
skakira sales 2
skakira sales 2skakira sales 2
skakira sales 2
 
Tithing system
Tithing systemTithing system
Tithing system
 
Gigliotti_Pinho_MST_Accepted_Manuscript
Gigliotti_Pinho_MST_Accepted_ManuscriptGigliotti_Pinho_MST_Accepted_Manuscript
Gigliotti_Pinho_MST_Accepted_Manuscript
 
Gigliotti_Luigi_PBCs_Accepted manuscritp
Gigliotti_Luigi_PBCs_Accepted manuscritpGigliotti_Luigi_PBCs_Accepted manuscritp
Gigliotti_Luigi_PBCs_Accepted manuscritp
 
s1756973715500080
s1756973715500080s1756973715500080
s1756973715500080
 
Spring Data MongoDB Webiner
Spring Data MongoDB WebinerSpring Data MongoDB Webiner
Spring Data MongoDB Webiner
 
JSON-P 1.1 EDR1 Webinar
JSON-P 1.1 EDR1 WebinarJSON-P 1.1 EDR1 Webinar
JSON-P 1.1 EDR1 Webinar
 
Deploy a MongoDB Replica Set using Docker
Deploy a MongoDB Replica Set using DockerDeploy a MongoDB Replica Set using Docker
Deploy a MongoDB Replica Set using Docker
 
Summer Training Report Ntpc barh (ajeet)
Summer Training Report Ntpc barh (ajeet)Summer Training Report Ntpc barh (ajeet)
Summer Training Report Ntpc barh (ajeet)
 
Knowledge-Power/Resistance in Indian Campus Fiction
Knowledge-Power/Resistance in Indian Campus FictionKnowledge-Power/Resistance in Indian Campus Fiction
Knowledge-Power/Resistance in Indian Campus Fiction
 
Phased Array Ultrasonic Testing in lieu of Radiography
Phased Array Ultrasonic Testing in lieu of RadiographyPhased Array Ultrasonic Testing in lieu of Radiography
Phased Array Ultrasonic Testing in lieu of Radiography
 

Similaire à PhuNguyeAgileStudyReport201506

What is Agile Software Development?
What is Agile Software Development?What is Agile Software Development?
What is Agile Software Development?Baek Yongsun
 
The Agile Method and AGILE ISD; how to use each to improve your training program
The Agile Method and AGILE ISD; how to use each to improve your training programThe Agile Method and AGILE ISD; how to use each to improve your training program
The Agile Method and AGILE ISD; how to use each to improve your training programChristopher King
 
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...Agile ME
 
Agile methodology Interview Question Document File
Agile methodology Interview Question Document FileAgile methodology Interview Question Document File
Agile methodology Interview Question Document FileDilipPinto4
 
SOFTWARE DEVELOPMENT BUSINESS PLAN
SOFTWARE DEVELOPMENT BUSINESS PLANSOFTWARE DEVELOPMENT BUSINESS PLAN
SOFTWARE DEVELOPMENT BUSINESS PLANNimble Appgenie LLP
 
What agile teams think about agile principles
What agile teams think about agile principlesWhat agile teams think about agile principles
What agile teams think about agile principlesJaguaraci Silva
 
Scrum presentation jyoti
Scrum presentation jyotiScrum presentation jyoti
Scrum presentation jyotijbhanda1
 
AGILE PROJECT MANAGEMENT NOTES.docx
AGILE PROJECT MANAGEMENT NOTES.docxAGILE PROJECT MANAGEMENT NOTES.docx
AGILE PROJECT MANAGEMENT NOTES.docxVardha Mago
 
HOT TOPIC REPORT DIVYA
HOT TOPIC REPORT DIVYAHOT TOPIC REPORT DIVYA
HOT TOPIC REPORT DIVYADivya Tadi
 
Agile methodology
Agile methodologyAgile methodology
Agile methodologyC.P. Maurya
 
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1Is There Room For Project Managers In An Agile Like Environment Such As Scrum1
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1alexnasiri
 
Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesAgile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesBalaji Sathram
 
Top 50 Agile Interview Questions and Answers.pdf
Top 50 Agile Interview Questions and Answers.pdfTop 50 Agile Interview Questions and Answers.pdf
Top 50 Agile Interview Questions and Answers.pdfJazmine Brown
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineeringZeeshan Masood S
 

Similaire à PhuNguyeAgileStudyReport201506 (20)

What is Agile Software Development?
What is Agile Software Development?What is Agile Software Development?
What is Agile Software Development?
 
The Agile Method and AGILE ISD; how to use each to improve your training program
The Agile Method and AGILE ISD; how to use each to improve your training programThe Agile Method and AGILE ISD; how to use each to improve your training program
The Agile Method and AGILE ISD; how to use each to improve your training program
 
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...
A Practical Approach to Agile Adoption - Case Studies from Egypt by Amr Noama...
 
Agile methodology Interview Question Document File
Agile methodology Interview Question Document FileAgile methodology Interview Question Document File
Agile methodology Interview Question Document File
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 
SOFTWARE DEVELOPMENT BUSINESS PLAN
SOFTWARE DEVELOPMENT BUSINESS PLANSOFTWARE DEVELOPMENT BUSINESS PLAN
SOFTWARE DEVELOPMENT BUSINESS PLAN
 
What agile teams think about agile principles
What agile teams think about agile principlesWhat agile teams think about agile principles
What agile teams think about agile principles
 
Scrum presentation jyoti
Scrum presentation jyotiScrum presentation jyoti
Scrum presentation jyoti
 
AGILE PROJECT MANAGEMENT NOTES.docx
AGILE PROJECT MANAGEMENT NOTES.docxAGILE PROJECT MANAGEMENT NOTES.docx
AGILE PROJECT MANAGEMENT NOTES.docx
 
A littlebook about agile
A littlebook about agileA littlebook about agile
A littlebook about agile
 
HOT TOPIC REPORT DIVYA
HOT TOPIC REPORT DIVYAHOT TOPIC REPORT DIVYA
HOT TOPIC REPORT DIVYA
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 
Agile Practice Guide Notes
Agile Practice Guide NotesAgile Practice Guide Notes
Agile Practice Guide Notes
 
Agile~overview
Agile~overviewAgile~overview
Agile~overview
 
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1Is There Room For Project Managers In An Agile Like Environment Such As Scrum1
Is There Room For Project Managers In An Agile Like Environment Such As Scrum1
 
Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile MethodologiesAgile-overview: Agile Manifesto, Agile principles and Agile Methodologies
Agile-overview: Agile Manifesto, Agile principles and Agile Methodologies
 
Top 50 Agile Interview Questions and Answers.pdf
Top 50 Agile Interview Questions and Answers.pdfTop 50 Agile Interview Questions and Answers.pdf
Top 50 Agile Interview Questions and Answers.pdf
 
Agile+Slides.pdf
Agile+Slides.pdfAgile+Slides.pdf
Agile+Slides.pdf
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 
Flavours of agile software engineering
Flavours of agile software engineeringFlavours of agile software engineering
Flavours of agile software engineering
 

PhuNguyeAgileStudyReport201506

  • 1. UDERSTANDING AGILE METHODOLOGIES 1 Understanding Agile Methodologies: Scrum, XP, Lean, and Kanban Phu Nguyen Bellevue College
  • 2. UDERSTANDING AGILE METHODOLOGIES 2 Abstract This paper summarizes a study of Agile methodologies for project management. The study is based on the book Learning Agile by Andrew Stellman and Jennifer Greene as well as six online resources for Agile project management and software development. The paper explores four Agile school of thoughts: Scrum, Extreme Programing (XP), Lean, and Kanban. Even though all of these Agile ways of thinking and doing are built around incremental and iterative processes, each is developed for specific purpose. Scrum is an Agile methodology for project management that relies on self-organization and collective commitment. XP is an Agile methodology for software development that embraces changes. Lean is an Agile mindset that promotes eliminating waste and seeing the whole. Kanban is an Agile method for process improvement that focuses on flow and constantly improving. Agile practices can help teams achieve better results than traditional project management and software development process if teams and their organizations embrace the mindset behinds each Agile methodologies. Keywords: Agile, Agile Manifesto, Agile values, Agile Principles, Agile Methodologies, Scrum, XP, Lean, Kanban
  • 3. UDERSTANDING AGILE METHODOLOGIES 3 Introduction Agile project management has become popular in project management field, especially Information Technology (IT) project management. Agile Manifesto organization was established in 2001 to promote Agile software development. Since then, many groups have been formed by Agile practitioners during its revolution, and often claim that Agile project management and software development process give better results than the traditional project management and the waterfall software development process. This study examines the four popular Agile mindsets and methodologies Scrum, XP, Lean, and Kanban that have been practiced in project management and software development fields. Agile According to Stellman and Greene (2015), Agile movement in software development starts with ideas, values, and principles. In other words, it is a mindset that helps individuals become more agile as practitioners, and more valuable as project team members. Agile Manifesto Understanding Agile begins with understanding its four simple values called Agile Manifesto. According to the Manifesto for Agile Software Development, the Agile Manifesto values are:  Individual and interaction over processes and tools  Working software over comprehensive documentation  Customer collaboration over contract negotiation  Responding to change over following a plan It is important to notice that Agile Manifesto acknowledges the values of the items on the right side in the above bullets, but it values the items on the left side (in bold font) more. Stellman and Greene (2015) interpret these values as: a team should focus on its members and their interaction first, and tools and processes second; delivering software that
  • 4. UDERSTANDING AGILE METHODOLOGIES 4 users need is more important than delivering a specification of the software; treating customers like team members to collaborate with; and incorporating changes to deliver valuable software at the current moment is more important than working the plan. The Agile Principles There are twelve Agile principles besides the Agile Manifesto that guide Agile practitioners to work on software project teams. According to the Manifesto for Agile Software Development, the twelve Agile principles are: 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in the 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. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 5. Businesspeople and developers must work together daily throughout the project. 6. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 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 reflect on how to become more effective, then turns and adjusts its behavior accordingly.
  • 5. UDERSTANDING AGILE METHODOLOGIES 5 Principles to Practices and Methodologies Stellman & Greene (2015) group these twelve principles into four categories to help practitioners understand the directions and insights these principles provide for Agile practices and methodologies. The four categories are delivery, communication, execution, and improvement. Delivery (delivery the project): “Agile teams satisfy their customers by getting feedback early in the project, and continuously delivering software to keep the feedback up to date (Principle #1)” (p. 64). “They embrace change by treating project changes as positive and healthy developments for the project (Principle #2)” (p. 64). “By using timeboxed iteration to deliver working software frequently, agile teams constantly adjust the project so that it delivers the most value to the customer (Principle #3)” (p. 64). Communication (communication and working together): “Agile teams communicate most effectively when they focus on face-to-face conversation and rely on the minimum amount of documentation necessary for the project (Principle #4)” (p. 74). “Developers work with business users every days so that they can deliver the most value (Principle #5)” (p. 74). “Everyone on the agile team feels responsible for the project, and feels accountable for its success (Principle #6)” (p. 74). Execution (project execution): “The most effective way to communicate the progress of the project is to deliver working software and put it in the hands of the users (Principle #7)” (p. 78). “Teams are most productive when they work at a sustainable pace and avoid heroics, shortcuts, and overtime (Principle #8)” (p. 78). “Software that’s designed and implemented well is fastest to deliver because it’s easiest to change (Principle #9)” (p. 78). Improvement (constantly improving the project and the team): “Agile team keep their solutions as simple as possible by avoiding building unnecessary features or overly complex software (Principle #10)” (p. 81). “Self-organizing teams share responsibility for all aspects of the project, from conceiving the product to project management to design and implementation (Principle #11)” (p. 81). “By taking the time to look back and talk about lessons they learned
  • 6. UDERSTANDING AGILE METHODOLOGIES 6 after each iteration and also at the end of the project, agile teams constantly get better at building software (Principle #12)” (p. 81).
  • 7. UDERSTANDING AGILE METHODOLOGIES 7 Scrum Ken Schwaber and Jeff Sutherland developed an Agile methodology for software development in 1990 that is now known as Scrum. According to Schwaber and Sutherland (2013), Scrum is “a framework within which you can employ various processes and techniques. [It] makes clear the relative efficacy of your product management and development practices so that you can improve” (p. 3). In other words, Scrum is an Agile methodology for managing projects. It has its own practices, values and principles that focus on self-organization and collective commitment. Scrum Values Stellman and Greene (2015) listed five values that a team must embrace to become an effective Scrum team: commitment, respect, focus, openness, and courage. They elaborate that (p. 104-108): Each person is committed to the projects’ goals. The level of commitment can be achieved when the team has the authority to make decision in order to meet those goals, and everyone has a say in how the project is planned and executed. Team members respect each other. When team members have mutual respect, they’re able to trust each other to do a good job with the work they’ve taken on. Everyone is focused on the work. When a Scrum team member is working on a sprint, that’s his only job for the duration of the sprint. The teams value openness. When you’re working on a Scrum team, everyone else on the team should always be aware of what you’re working on and how it moves the project toward its current goals. Team members have the courage to stand up for the project. Scrum teams have the courage to live by values and principles that benefit the project.
  • 8. UDERSTANDING AGILE METHODOLOGIES 8 Rules of Scrum Schwaber and Sutherland (2013) explain that the rules of Scrum bind together the events, roles, and artifacts, governing the relationships and interaction between them. The detailed rules of Scrum can be found in The Scrum GuideTM, by Ken Schwaber and Jeff Sutherland. A typical Scrum project follows these rules: Scrum Team The Scrum Team is a self-organizing and cross-functional team that consists of a Product Owner, the Development Team, and a Scrum Master. The Product Owner is solely responsible for managing the Product Backlog. The Development Team consists of 3 to 9 professionals who organize and manage their own works to deliver a useable product increment at the end of each Sprint. The Scrum Master is responsible for ensuring the Scrum team and related organizations understand and adhere to Scrum theory, practices, and rules. Product Backlog Every project has a Product Backlog that lists all features, functions, requirements, enhancements, and fixes that the users and stakeholders have bought into. Throughout the life of the product, the Product Owner works with the Scrum Team to maintain and prioritize the Product Backlog items based on feedback from the users and stakeholders. Sprint The product is incrementally and iteratively developed using a series of Sprints. A Sprint is a time-box of one month or less during which a “Done”, useable, and potentially product increment is created. A new Sprint starts immediately after the conclusion of the previous Sprint. Sprints contain and consist of the Sprint Planning, Daily Scrums, the development work, the Sprint Review, and the Sprint Retrospective. The Scrum Master coordinates these events for a Scrum team during the product development. When doing development work, each member of the Development Team collaboratively picks up tasks from the prioritized Sprint Backlog and works on them.
  • 9. UDERSTANDING AGILE METHODOLOGIES 9 Increment and Definition of Done Each Sprint delivers a useable product increment. According to Schwaber and Shutherland (2013, p. 15): The Increment is the sum of all the Product Backlog items completed during a Sprint and the value of the increments of all previous Sprints. At the end of a Sprint, the new Increment must be “Done,” which means it must be in useable condition and meet the Scrum Team’s definition of “Done.” It must be in useable condition regardless of whether the Product Owner decides to actually release it. Schwaber and Shutherland (2013, p. 15) also discuss about “Done” as follows: When a Product Backlog item or an Increment is described as “Done”, everyone must understand what “Done” means. Although this varies significantly per Scrum Team, members must have a shared understanding of what it means for work to be complete, to ensure transparency. This is the definition of “Done” for the Scrum Team and is used to assess when work is complete on the product Increment. Sprint Planning and Sprint Backlog Each Sprint starts with a Sprint Planning done by the Scrum Master, Product Owner, and the Development Team. The planning meeting is divided into two parts, each is time-boxed to four hours. In the first part of the Sprint Planning meeting, the Product Owner works with the Development Team to select the Product Backlog items for delivery in the product Increment at the end of the Sprint, based on the Sprint objectives, the items’ functions, and the team’s estimates. After selecting the items, the Scrum Team crafts a Sprint Goal that will be met through the implementation of the selected items. In the second part of the Sprint Planning meeting, the Development Team, with the Product Owner’s help, figure out the individual tasks to implement the selected items. These tasks are work units of one day or less. The Development Team negotiates with the Product Owner to keep the effort within one month time-box. At the end of Sprint Planning, the selected items plus a plan for delivering them and realizing the Sprint Goal become the Sprint Backlog.
  • 10. UDERSTANDING AGILE METHODOLOGIES 10 Daily Scrum After a Sprint Planning, the Scrum Team holds a 15-minute Daily Scrum meeting every day during the Sprint to synchronize activities and create a plan for the current day. All team members including the Scrum Master and Product Owner must attend. Each Development Team member answer three questions:  What did I do yesterday that helped the team meet the Sprint Goal?  What will I do today to help the team meet the Sprint Goal?  Do I see any impediment that prevents me or the team from meeting the Sprint Goal? If needed, the Development Team or team members will meet after the Daily Scrum for detailed discussions, or adaptation for the remaining work of the Sprint. The Product Owner must keep the Sprint Backlog up to date and visible to everyone. The Development Team can request to add more work to the Sprint Backlog if they find that they will complete all work early. If they however discover that they overcommitted, they need to inform the Product Owner as soon as they realize that. The Product Owner can reset the expectations with the users and stakeholders, and update the Sprint Backlog to match the team’s actual capacity. If the team discovers that they cannot deliver working software, the Product Owner can terminate the Sprint early and initiate new Sprint Planning. Sprint Review At the end of the Sprint, the Scrum Team holds a Sprint Review to demonstrate working software to users and stakeholders. This is a four hour meeting for one month Sprints. The demo only includes items that are completely implemented, tested and accepted by the Product Owner as complete (or “Done”). Incomplete items are added back to the Product Backlog together with the estimates for their remaining works. The Scrum Team will collaborate with users and stakeholders about the Sprint’s result during the Sprint Review, answer their questions, and get their feedback on the working software. The Product Owner will update work items or add new work items to the Product Backlog to address all necessary changes
  • 11. UDERSTANDING AGILE METHODOLOGIES 11 based on the feedback and collaboration. These changes will be considered in the next Sprint Planning. Sprint Retrospection After each Sprint, the Scrum Team holds a Sprint Retrospective meeting with the participation of the Development Team and Scrum Master (and optionally the Product Owner) to identify process improvements. This is a three hour meeting for one month Sprints. Each person will give feedback on what went well during the Sprint, and what can be improved in the future. The Scrum Master documents any improvements that will be added to the Product Backlog as nonfunctional items.
  • 12. UDERSTANDING AGILE METHODOLOGIES 12 Extreme Programing (XP) XP is an Agile methodology for software development that embraces changes. It recognize the nature of change in system requirements during a software development cycle. XP is made up of practices, values and principles developed by Kent Beck in early 1990s when he worked on the Chrysler Comprehensive Compensation System project. In a nutshell, a XP team uses a release planning meeting to collaboratively create a release plan for the overall project. This release plan is then used to develop iteration plans for each iteration which is typically one week long. The team holds an iteration planning meeting at the beginning of each iteration to select adequate user stories and create a plan of programming tasks. The whole team sits together in an informative workspace. They start each day with a standup meeting. They write code in pair, develop unit tests first before coding, and integrate their code continuously. They focus on simple solutions and incremental design, and refactor whenever and wherever possible to improve the system design (Wells D., 2009). The XP Values Wells D. (2009) states on his page The Values of Extreme Programming that XP is based on five core values that help individuals work in harmony with their personal and corporate values. They help get the team into a mindset that naturally see great practices as the obvious way to build quality software. The five XP values are (Wells D., 2009): Simplicity: We will do what is needed and asked for, but no more. This will maximize the value created for the investment made to date. We will take small simple steps to our goal and mitigate failures as they happen. We will create something we are proud of and maintain it long term for reasonable costs. Communication: Everyone is part of the team and we communicate face to face daily. We will work together on everything from requirements to code. We will create the best solution to our problem that we can together. Feedback: We will take every iteration commitment seriously by delivering working software. We demonstrate our software early and often then listen carefully and make
  • 13. UDERSTANDING AGILE METHODOLOGIES 13 any changes needed. We will talk about the project and adapt our process to it, not the other way around. Respect: Everyone gives and feels the respect they deserve as a valued team member. Everyone contributes value even if it's simply enthusiasm. Developers respect the expertise of the customers and vice versa. Management respects our right to accept responsibility and receive authority over our own work. Courage: We will tell the truth about progress and estimates. We don't document excuses for failure because we plan to succeed. We don't fear anything because no one ever works alone. We will adapt to changes whenever they happen. In other words, “XP team focus on writing the most simple and direct solutions possible”. “Each team member is aware of the work everyone else is doing”. “Constant tests and feedback loops keep the quality of the product in check. Each team member is focused on making the best choices for the projects, even if it means having to discard failing solutions or approach things differently”. “Every team member is important and valuable to the project” (Stellman and Greene, 2015, p. 196). The XP Principles In addition to the five core values, XP has a set of principles that provide more details about how XP team think about their problems. Together, XP values and principles help guild team in applying XP practices to their project. According to Stellman and Greene (2015, p. 201- 202), the XP principles are as follows: Humanity: Remember that software is built by people, and there’s a balance between the needs of each team member and the project’s need. Economics: Somebody is always paying for software project and everybody has to keep the budget in mind. Mutual benefit: Search for practices that benefit the individual, the team, and the customer together.
  • 14. UDERSTANDING AGILE METHODOLOGIES 14 Self similarity: The pattern of a monthly cycle is the same as a weekly cycle and the same as a daily cycle. Improvement: Do your best today, and stay aware of what you need to do to get better tomorrow. Diversity: Lots of different opinions and perspectives work together to come up with better solutions. Reflection: Good teams stay aware of what’s working and what isn’t in their software process. Flow: Constant delivery means a continuous flow of development work, not distinct phases. Opportunity: Each problem the team encounters is a change to learn something new about software development. Redundancy: Even though it can seem wasteful at first blush, redundancy avoids big quality problems. Failure: You can learn a lot from failing. It’s OK to try things that don’t work. Quality: You can’t deliver faster by accepting a lower quality product. Accepted responsibility: If someone is responsible for something, they need to have the authority to get it done. Baby steps: Take small steps in the right direction rather than making wholesale changes when adopting new practices. The XP Primary Practices The best known concept of XP methodologies are its 13 primary practices. To help make a good sense of these practices, Stellman and Greene (2015) divide them into 5 categories in term of software developments: programming practices, integration practices, planning practices, team practices, and holistic practices.
  • 15. UDERSTANDING AGILE METHODOLOGIES 15 Programming Practices There are two practices that are designed to help those programmers write better code. They are test-first programming and pair programing. Stellman and Greene (2015, p. 178-179) wrote: Test-first programing, also known as test-driven development (or TDD), it means that before he writes code, he builds an automated test. These automated tests are usually called unit tests. In pair programing, two developers sit together at a single workstation when writing code. In most case, one programmer types, while the other watches-and they constantly discuss what is going on. One developer can take over typing when the other gets mentally tired. When build unit tests first, XP teams express the behavior that is expected of the code to be developed. Then they write code that pass these tests. This practice creates a feedback loop that helps to prevent defects. In addition, pair-programing provides immediate feedback that will help catch any potential bugs as early as possible. Integration Practices Two XP practices focus on integration to assure the quality of the code that is developed in to the codebase. They are as follows (Stellman and Greene, 2015, p. 180): In 10-minute build, the team creates an automated build for the entire codebase that runs in under 10 minutes. This build includes automatically running all of the unit tests and generating a report of which tests passed and which failed. In continuous integration, the team will use a version control system that has a central master set of files, which individual developers will check out, or copy into a private copy of the entire codebase that’s only used by that programmer (often called a sandbox). The developer will work on the copy of the code in her sandbox, and periodically check it back into the repository. Integrating continuously means that each team member constantly keeps his or her own copy of the codebase up to date. Team
  • 16. UDERSTANDING AGILE METHODOLOGIES 16 members periodically integrate the latest code from the repository back into their sandboxes. The 10-minute build helps XP encouraging continuous integration for quality check. Individual developers use continuous integration to constantly integrate code changes from their teammates so everyone’s sandbox is up to date. Any bugs introduced by new code will be detected and fixed quickly. Planning Practices XP teams use iterative development to manage their project. These concept is well demonstrated in three XP practices that are described by Stellman and Greene (2015, p. 181) as follows: In quarterly cycle, the team meets to take a look at the big picture. XP teams will talk about themes, or larger ideas in the real world that they can use to tie their project’s stories together. The team also steps back and talks about internal and external problems that they’re experiencing, nagging bugs, and repairs that haven’t been addressed yet. They take the time to reflect on the progress they’ve made so far, how well they’re meeting their users’ needs, and how the project is going overall. In weekly cycle, the XP team uses one-week iterations, and it works closely with the stories practice. Each cycle starts with a planning meeting, where the team members review the progress they’ve made on the project, work with the customers to pick the stories for the iteration, and then break the stories into tasks that are estimated and assigned to developers. In slack, the team add minor, lower-priority stories to each weekly cycle. These stories are broken down into tasks during the planning meeting, but those tasks are left for the end of the iteration. That way, if the team runs into unexpected problems, it’s very easy for them to cut out those “slack” stories and still deliver complete, working software at the end of the cycle.
  • 17. UDERSTANDING AGILE METHODOLOGIES 17 Another XP primary practice should be included in this category is Story. The software developers work with their customers and users to write user stories which address who use the system, how they use it, and what they use it for (Westfall, 2009, p. 208). By practicing iterative development, XP teams make their planning decisions in last responsible moment where they have enough information to make the best choices for their development. In addition, making decisions as late as possible helps the teams stay flexible to any changes occur during their projects. Team Practices XP is not just about programming. It is also about how teams work together. Stellman and Greene (2015, p. 181-182) explain: In sit together, the team sits near each other, and have easy access to everyone else on the team. Team members constantly consult each other about problems, ask each other for advice, and alert each other to problems. In informative workspace, the team’s working environment is set up to automatically communicate important project information to anyone who happens to be working in it. When sitting together, XP teams absorb project information through osmotic communication. Together with using information radiators like wall charts, they become truly working in an informative workspace. Holistic Practices Stellman and Greene (2015) call these three XP practices holistic practices because they are closely interconnected, and have to work together to be effective. They are described as follows (p. 247): Incremental design is about making code design decision at the last responsible moment, avoiding trying to build everything at once. When the team has developed the habits that lead them to build decoupled code made up of small, solid, independent units, they don’t need to come up with the complete design up front. They can come up with a high-level design, without having to think of every possible scenario that might
  • 18. UDERSTANDING AGILE METHODOLOGIES 18 not fit into it. They can be confident that when they discover an edge case that isn’t handled, they’ll have the tools in place to deal with it later. This frees people up to think about the problem in the way they would naturally think about it, and to build the code piece by piece as they learn more about the problem they are tackling. This is the idea behind incremental design, and it results in a highly flexible, adaptable, and changeable codebase. But it only works when every developer truly believes in making design and code decisions at the last responsible moment. Everyone on the team needs to believe that it’s faster to build a small, decoupled piece of the system today, and trust themselves to fix it tomorrow if it isn’t quite right. Energized work means establishing an environment where every team member is given enough time and freedom to do the job. This keeps them in the mental space where they can develop and use good habits that lead to better, more naturally changeable code. This, in turn, lets them produce much more code, and deliver more valuable features (and features that are more valuable) to the users and customers, in a shorter period of time. Whole Team is about helping the individuals on the team come together as a whole. They encounter obstacles, they work together to overcome them. When there’s an important decision that affects the direction of the project, that decision is made together. Everyone on the team learns to trust the rest of the team members to figure out which decisions can be made individually, and which decisions need to be brought to the rest of the team. The XP Corollary Practices In addition to the 13 primary practices, XP also has 11 corollary practices. Stellman and Greene (2015) describe them as follows (p. 214-215): Real customer involvement: Bring customers into the quarterly and weekly planning sessions-and actually listening to them.
  • 19. UDERSTANDING AGILE METHODOLOGIES 19 Incremental deployment: Deploy small pieces of the system individually, rather than one “big shot” deployment (also, believing that a system can really be deployed this way). Team continuity: Keeping effective teams together. Shrinking teams: As a team improves, they can get more work done more quickly; instead of adding work each week, remove a team member (and use that person to bring the XP culture to another team). Root-cause analysis: When something goes wrong, figure out what the problem was, and then figure out why that problem occurred, and what caused that occurrence, and eliminate the problem further upstream. Shared code: Every person on the team feels comfortable working on any piece of it, and everyone owns it collectively. Code and test: Only the code and tests are maintained by the team; the documentation is generated automatically from the codebase, and history is kept alive as word-of- mouth culture (because people rarely crack open dusty binders of old project plans, anyway). Single codebase: Don’t manage multiple version of the code. Daily deployment: Push a new version of the software into production every day. Negotiated scope contract: For a consulting company, instead of fixing the scope and negotiating time (and, often, sacrificing quality to meet the deadline), fix the time and have an ongoing negotiation of the scope. Pay-per-use: This another consulting-related practice-instead of charging for development work, charge the customer when they use the system; this gives real-time, constant feedback about which features are being used, and which aren’t.
  • 20. UDERSTANDING AGILE METHODOLOGIES 20 Refactoring Practice One practice XP teams adopt and use constantly is refactoring code, “changing the structure of the code without changing its behavior” (Stellman and Greene, 2015, p. 237). According to Stellman and Greene, each iteration as XP teams learn more about the system functions, they try to refactor existing code to create simple code units that do unique functions that can be reused in different areas of the system. This practice helps XP team practice incremental design and make design and code decisions in the last responsible moment. In addition, refactoring code help “build a codebase that is much easier to change” (p. 240) that enables XP teams to embrace changes during the software development.
  • 21. UDERSTANDING AGILE METHODOLOGIES 21 Lean Lean, also known as lean thinking, is an Agile mindset that aims to provide a new way to think about organizing activities to deliver more value while eliminating waste. It was coined by James P. Womack and Daniel T. Jones based on their study about Toyota Production System that centers on Value, Value streams, Flow, Pull, and Perfection. Lean Values As any other mindsets, Lean comes with a set of values that provide guidance for lean thinking. According to Stellman and Greene (2015), The Lean values are as follows (p. 270-271): Eliminate waste: Find the work that you’re doing that doesn’t directly help to create valuable software and remove it from the project Amplify learning: Use feedback from your project to improve how you build software Decide as late as possible: Make every important decision for your project when you have the most information about it-at the last responsible moment. Deliver as fast as possible: Understand the cost of delay, and minimize it using pull system and queues. Empower the team: Establish a focused and effective work environment, and build a whole team of energized people. Build integrity in: Build software that intuitively makes sense to the users, and which forms a coherent whole. See the whole: Understand the work that happens on your project-and take the right kind of measurements to make sure you’re actually seeing everything clearly, warts and all. Lean Principles Besides the Lean values, lean thinking have five fundamental principles for guiding the implementation of lean techniques. Womack and Jones (2003) describe the five principle of lean thinking as follows:
  • 22. UDERSTANDING AGILE METHODOLOGIES 22 1. Specify Value: from the end users standpoint on specific products or services with specific capabilities. 2. Identify the Value Stream: including all the activities necessary to create products or services. These activities can be (1) activities that unambiguously create value, (2) activities that create no value but seem to be unavoidable with current technologies or production assets, and (3) activities that create no value and are immediately avoidable. Eliminate activities that do not create value if possible. 3. Flow: Make the value-creating steps occur in tight sequence so the product will flow smoothly toward the customer. 4. Pull: let customers pull value from the next upstream activity as flow is introduced. 5. Perfection: begin the process again [(from principle #1)] and continue it until a state of perfection is reached in which perfect value is created with no waste. Lean Thinking Tools Lean comes with a set of ways to think that support Lean values. Stellman and Greene (2015) call them Lean thinking tools (p. 272-273, 284, 288-289, 292-299, 304): Last responsible moment: Support decide as late as possible value. Similar to Scrum and SX, it is about making decisions at the last responsible moment. Feedback: Support amplify learning. Similar to Scrum and XP. Iterations: Support amplify learning. Similar to Scrum and XP. Synchronization: Support amplify learning. Similar to continuous integration and collective ownership in XP. Set-based development: Support amplify learning. Running a project in a way that gives you more options by having the team follow several paths simultaneously to build alternatives that they can compare. Self-determination: Support empower the team. Similar to ideas behind the XP practices of whole team and energized work.
  • 23. UDERSTANDING AGILE METHODOLOGIES 23 Motivation: Support empower the team. Similar to ideas behind the XP practices of whole team and energized work. Leadership: Support empower the team. Similar to ideas behind the XP practices of whole team and energized work. Expertise: Support empower the team. Similar to ideas behind the XP practices of whole team and energized work. Options thinking: Support commitment (part of Lean thinking). Seeing the difference between something that you’re committed to and something that you have the right (but not the obligation) to do. Seeing waste: Support eliminating waste Refactoring: Support build integrity in (internal integrity). Similar to refactoring of XP. Testing: Support build integrity in (internal integrity). Similar to test-driven development of XP. Perceived integrity: Support build integrity in (external). How well the product meets the needs of the person using it-and how well the person immediately see that his or her needs are met. Conceptual integrity: Support build integrity in (external). How well the features of the software work together to form a single, unified product. Measurements: Support see the whole. Everyone can see the project the same way. Choosing the right measurement helps the team get a better picture of the project. They will take different measurement depending on what problem they want to solve. Taking objective measurement helps get everyone to see the project on the same term. Root cause: Support see the whole. Understanding the actual reason that the problem is happening. XP teams and Lean teams both utilize a technique called Five Why to figure out the root cause of a problem. The team members ask why a problem
  • 24. UDERSTANDING AGILE METHODOLOGIES 24 happened, and when they answer the question they continue to ask why (usually around five times) until they discover a root cause. Pull system: Support Deliver As Fast As Possible. A way of running a project or a process that uses queues or buffers to eliminate constraints. Queuing theory: Support Deliver As Fast As Possible. Make sure that people are not overloaded with work; so that they have time to do things the right way. Queue is a list of tasks, features, or to-do items for a team or for an individual developer. Queue has an order, and are typically first-in, first-out. Lean tells us that making a team’s queue of work public, and making it central to the decision-making process, helps teams to deliver more quickly. Cost of delay: Support Deliver As Fast As Possible. If a part was in short supply, a delay in getting that part to the assembly line was very expensive; if the part was abundant, the cost of delay was low. Value stream map: Support See the Whole. A visual tool to help team see the reality of how their project works by showing the entire lifespan of a minimal marketable feature (MMF), including the work and waiting time at every state. MMF is the smallest “chunk” of value or functionality that the team can deliver, such as a story or a user request- something that might end up on a Product Owner’s backlog. Work In Progress (WIP) area chart: Support Deliver As Fast As Possible. A visual tool that shows how MMFs flow through your project’s value stream.
  • 25. UDERSTANDING AGILE METHODOLOGIES 25 Kanban According to Stellman and Greene (2015), Kanban is a method for process improvement used by Agile teams. It is an application of Lean mindset to the way Agile teams work that create a solid foundation for continuously improving their process. “When teams use Kanban to improve, they focus on eliminating the waste from their process” (p. 315). Kanban Principles and Practice: According to Kanban Yahoo! Group Using the Kanban Method, David J. Anderson describes Kanban defined Kanban method as follows: First follow the foundational principles:  Start with what you do now  Agree to pursue incremental, evolutionary change  Initially, respect current roles, responsibilities and job titles Then adopt the core practices:  Visualize.  Limit WIP  Manage Flow  Make Process Policies Explicit  Implement Feedback Loops  Improve Collaboratively, Evolve Experimentally (using models/scientific method) It is not expected that implementations adopt all six practices initially. Partial implementation are referred to as “shallow” with the expectation that they gradually increase in depth as more practices are adopted and implemented with greater capability. Stellman and Greene (2015) interpret the Kanban principles as Kanban teams should start with understanding the current system for running their project, setting a goal of making
  • 26. UDERSTANDING AGILE METHODOLOGIES 26 small improvements to that system, recognizing that the current roles, responsibilities and job titles are important part of the system. Visualize the Workflow Stellman and Greene (2015) describes Kanban “visualizing means writing down exactly what the team does, warts and all, without embellishing it” (p. 327). A Kanban team visualize their system workflow using a Kanban board, consisting of columns represent each stage in the workflow of a work item. Each work item in the system flows across the board as it advances through the system. Each column has sticky notes to represent work items, usually stories not task, in the associated stage. “It is important to understand that a kanban board visualizes the underlying workflow and process in use” (p. 328), not what is on a process documentation. During a “walking the board” meeting, which is often held daily, the team discusses the state of each work item listed on the board. Items that are completed in the current stage should be moved to the next stage in the workflow by moving the associated sticky notes to the next column on the board. Limit Work in Progress According to Stellman and Greene (2015), “limiting work in progress (WIP) means setting a limit on the number of work items that can be in a particular stage in the project’s workflow” (p. 333). The WIP of a column limits the stories or features that can flow into the associated stage of the workflow. It means to prevent the overburden because of work items piling up at a bottleneck stage. Kanban teams initially choose a WIP limit that makes sense for everyone in the team, then measure the workflow to adjust the WIP limit experimentally to optimize the system performance. After a column WIP limit is reached, the teams avoid performing work that will advance work items into that column, and focus their effort on the work items on other columns whose WIP limits have not been reached or columns that have no WIP limits. In other words, a column with WIP limit becomes a queue where work items are managed smoothly and orderly. This will keep the work items flowing through the system as efficiently as they can be.
  • 27. UDERSTANDING AGILE METHODOLOGIES 27 To set a WIP limit for a column on a Kanban board, Kanban teams add a number to the column that represent the maximum number of work items allowed in that stage in the workflow. “Kanban teams work with their users, managers, and other stakeholders to make sure that everyone agrees that when a column is at its WIP limit, they will focus their work elsewhere in the project and not advance any more work items into that workflow stage” (p. 339). Measure and Manage Flow Stellman and Greene (2015) explain the rate at which work items advance through the system is called the system flow. The system flow reaches maximum level when a team deliveries work items at their optimal space with a comfortable amount of feedback. The less unevenness and overburdening, the better chance for maximizing the system flow. As the team is able to finish their work without dealing with bottleneck in the system, the system flow will increase. If the team experience unevenness in the system because of work piling in a stage of the workflow, the system flow will decrease. A Kanban team practices managing flow by measuring the system flow and making necessary process improvements. They work collaboratively to increase the system flow so that the unevenness and lead times can be decreased. Cumulative flow diagram (CFD) is an effective tool for visualizing the system flow using area chart where each area on the chart represents accumulated work items in a stage of the system workflow. In other words, the areas are corresponded to the columns on a Kanban board (Stellman and Greene, 2015). In addition to the areas, CFD also shows the arrival rate (the number of work items added to the workflow every day), the inventory (the total number of work items in the workflow), and the lead time (the amount of time each work item flows through the entire system). The CFD helps Kanban teams see the performance patterns of their process over time, so they can identify the bottlenecks and eliminate the root causes in the long run. As we know Kanban teams use WIP limits to control the workflow in the day-by-day basis, and find the optimal WIP limits by experimentation. When they get the WIP limits right, the arrival rate of
  • 28. UDERSTANDING AGILE METHODOLOGIES 28 work items will eventually match the rate that the team can complete the work items. As a result, the inventory trend and arrival rates will be flat, and the system becomes stable. Little’s Law, a theorem that’s part of queueing theory, states (Stellman and Greene, 2015) that when the system is stable, the following is true: L (average inventory) = W (average lead time) * λ (average arrival rate) W = L / λ When the system is stable (average inventory L is constant), Kanban teams can cut down the work items’ lead time by increasing the arrival rate such as extending the starting time between work items or features. Stellman and Greene conclude that (2015, p. 357): Controlling the flow across the entire project helps everyone on the team relax and focus on the work that they’re doing now, without having to worry that tasks are piling up behind them. They can trust the WIP limits to keep the chaos out. And they know that if chaos starts to leak in, it will show up when they measure the workflow, and they can adjust the WIP limits and cadence to keep work focused and flowing. Make Process Policies Explicit So Everyone Is on the Same Page Stellman and Greene (2015) elaborate that Kanban teams can make policies explicit to everyone by simply writing WIP limits at the tops of the columns in a Kanban board, and adding “definitions of done” or “exit criteria” to the bottom of each column to guide the team on when work items can be advanced through the stages of their workflow. “This is especially effective when these policies were established collaboratively and evolved experimentally by the whole team, because it means that everyone understands why they’re there” (p. 358).
  • 29. UDERSTANDING AGILE METHODOLOGIES 29 Conclusion Agile Manifesto for Software Development provides four simple values for all Agile methodologies and mindsets: individuals and interaction over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. Scrum, XP, Lean, and Kanban are built on these values with specific practices, values and principles that are applicable for different purposes. Scrum is an Agile methodology for project management that relies on self- organization and collective comment. XP is an Agile methodology for software development that embraces changes. Lean is an Agile mindset that promotes eliminating waste and seeing the whole. Kanban is an Agile method for process improvement that focuses on flow and constantly improving. All of these Agile methodologies and mindsets are based on the concept of incremental and iterative evolvement. Although teams may achieve better results by implementing Agile practices, Agile mindsets help them to achieve the best results of applying Agile methodologies within their projects and organizations.
  • 30. UDERSTANDING AGILE METHODOLOGIES 30 References Stellman, A., & Greene, J. (2015). Learning Agile: Understanding Scrum, XP, Lean, and Kanban. Sebastopol, CA: O’Reilly Media. Beck, K., Beedle, M., Bennekum, V. A., Cockburn, A., Cunningham, W., Fowler, M., . . . Thomas, D. (2001). Manifesto for Agile Software Development. Retried from http://www.agilemanifesto.org. Schwaber, K., Sutherland, J. (2013). The Scrum GuideTM. Retried from http://www.scrumguides.org. Wells, D. (2009). The Values of Extreme Programming. Retried from http://www.extremeprogramming.org/values.html. Womack, P. J. and Jones, T. D. (2003). Lean Thinking: Banish Waste and Create Wealth in Your Corporation. New York, NY: FREE PRESS. (Retried from http://www.amazon.com/) Westfall, L. (2009). The Certified Software Quality Engineer Handbook. Milwaukee, Wisconsin: American Society for Quality Press. (Retried from http://www.amazon.com/) Yahoo! Group Using the Kanban Method. Group Description. Retried from https://groups.yahoo.com/neo/groups/kanbandev/info.