An Agile Primer
ThoughtWorks
Vineet Shukla, Avinash Chugh, Chandan Jog
Our Agenda

Agile Methods

Software
Engineering

Agile
Values & Principles

Our Experience

Agile
Practices
Our Agenda

Agile Methods

Software
Engineering

Agile
Values & Principles

Our Experience

Agile
Practices
History of software development
NASA’s Defect Density

Pretty good, right?
NASA’s Defect Density (another data point)
Other Heavy Weight Methodologies

Waterfall

SEI/IEEE Project
Standards and Definitions

Requirements
Engineering

Project Management
Body of Knowledge
(PMBOK)

Sometimes, heavy weight methodologies work, but
there are extensive costs, and the risk in using them
in dynamic environments is high.
Our Agenda

Agile Methods

Software
Engineering

Agile
Values & Principles

Our Experience

Agile
Practices
Agile

Lean Software
Development

XP

Velocity
Tracking

Scrum
DSDM

Agile Modeling
eXtreme Programming
It takes common sense practises to extreme levels - “turning the
dials to 11!”
•  If code reviews are good, review code all the time (Pair
Programming)
•  If testing is good, everybody will test all the time (Unit Testing)
•  If design is good, make it part of everyone’s daily business
(Refactoring)
•  If simplicity is good, always leave the system with the simplest
design that supports it’s current functionality.
Our Approach

value?

faster.
value?

Sequential Delivery

Agile Delivery

Continuous Delivery
Our Agenda

Agile
Values & Principles

Agile Methods

Software
Engineering

Our Experience

© ThoughtWorks 2008

Agile
Practices
Agile Manifesto
We are uncovering better ways of developing software by doing it and
helping others do it. Through this work we have come to value:
Individuals and
Interactions

OVER

Processes and Tools

Working Software

OVER

Comprehensive
Documentation

Customer
Collaboration

OVER

Contract Negotiation

Responding to
Change

OVER

Following a Plan

That is, while there is value on the right, we value the items on the left more.
Our highest priority is to satisfy the customer
through early and continuous delivery of
valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for

customer's competitive advantage.

Working software is the primary
measure of progress.
the

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

Business people and developers

must work

Build projects around motivated individuals.
Give them the environment and support they
need, and trust them to get the job done.
The most efficient and effective method of
conveying information to and within a development

face-to-face conversation.

technical excellence
and good design enhances agility.

Continuous attention to

12 Principles

together daily throughout the project.

team is

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

Simplicity--the art of maximizing the amount
of work not done--is essential.

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

team reflects on how
to become more effective, then tunes and adjusts
At regular intervals, the

its behavior accordingly.
Waterfall Methodology

Effort

Time
Agile Methodology
Our Agenda

Agile Methods

Software
Engineering

Agile
Values & Principles

Our Experience

Agile
Practices
Practices
Automated
Build/Deploy

Pair
Programming
Story Wall

Coding
Standards

Continuous
Integration

Continuous
Feedback
User
Stories

IPM
Refactoring
Simple Design
Test Driven
Development

INDIVIDUAL
TEAM
ORGANIZATIONAL

Retrospectives
Daily
Stand-ups
Iterations
Showcases
Continuous
Testing

Short
Releases
Collective
Ownership
Co-location
Automated
Testing
Scope Break Up
Release

Iterations

User
Stories

User
Stories

Iterations

User
Stories

User
Stories

Iterations

User
Stories

User
Stories

User
Stories

User
Stories
Many time boxed iterations
Working software showcased to
business, tested with customers
Analysis
Design
Code
Test
Deploy

The basics
still apply
User Story
Story = Light weight piece of requirement
As an Online Banking User
I want to link my Loan Account with my existing Saving Account
So that I can view all my Accounts at one place

UI Prototype
Saving Account
Loan Account

2 story points

Acceptance Criteria

<Actor> <action><by |to |for |of > <a(n) object> <the result>
123456789
123456789

Link

•  Display Customer’s Account
•  Allow Customer to select and link the Account
•  Validation on Customer Account data
•  Display all Linked Accounts under “My Accounts” page
Our Agenda

Agile Methods

Software
Engineering

Agile
Values & Principles

Our Experience

Agile
Practices
Questions?
Vineet Shukla, Avinash Chugh, Chandan Jog

Agile 101