What is agile

Preview:

DESCRIPTION

Family of methodologies that advocate “lightweight” and “human” software development processes

Citation preview

Introduction to Agile Software DevelopmentWhat is Agile?

How Projects Really Work

How the customer explained it

How the project leader understood it

How the analyst designed it

How the programmer wrote it

How the business consultant described it

How the project was documented

How much the project cost

What the customer really needed

Agenda

What is Agile?Agile ManifestoBenefits

ValuesSelected PracticesAgile at Orange & Bronze

What is Agile?

Family of methodologies that advocate “lightweight” and “human” software development processes

Extreme Programming (XP), Scrum, Kanban, Lean, Crystal, Agile Unified Process...

Coined in 2001 by the creators of similar methodologies reacting to “heavyweight” methodologies

“heavyweight”: too much work that does not contribute to successful software project

What is Agile?

Emphasis on...Customer satisfactionJob satisfactionRemove things that do not contribute to above

CultureValues and attitude of people involved are just as important as processes

The 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 toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a plan

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

Benefits

Studies show...Improved customer satisfaction

Higher qualityBetter predictability

Improved employee retentionHigher job satisfaction

Mainstream acceptanceYour clients are probably adopting agile

Values

CommunicationSimplicityFeedbackCourageRespect

Communication

Goal is shared viewDocumentation should have a purposeFace-to-face is preferredCommon work area

Cubicles discouraged

Simplicity

YAGNI – You Ain't Gonna Need ItDon't overcomplicate with what might be needed in the future. Things may will change.

Use simplest possible solutionDesign, code, documentation, tools, etcImproves communication

Feedback

From SystemAutomated tests and continuous integration

From CustomerAcceptance tests and frequent interactions

From TeamTeam communicates estimates and issues with customer and among themselves

Feedback becomes input to project leading to continuous improvement

Courage

Find and discuss problems earlyEspecially with client

Say when you need helpChange and experiment to continuously improve

New requirementsRefactoringNew processes and practicesNew technologies and tools

Respect

Don't commit broken codeKeep automated tests runningDon't delay the work of othersMaintain quality and communicationKeep teammates motivated

Selected Practices

To be discussed:Whole TeamCustomer/Developer RolesShort IterationsTest-Driven DevelopmentPlanningTrackingSustainable Pace

Others:Continuous IntegrationStand-Up MeetingsSelf-Managed TeamsPair ProgrammingRefactoringUser StoriesPlanning BoardsBurn-Down ChartsRetrospectivesCollective Code OwnershipCoding StandardsMany more...

Whole Team

Everyone involved should feel part of one team, including customer

Often requires educating customerEveryone should be easily accessible for questions and other impromptu communicationCommon work area where possible, frequent meetings where notShared access to resources

Common repository, issue tracker, etcFocus

People ideally should have only one project at a time

Customer/Developer Roles

Customer

Customer

DeveloperDeveloper

Short Iterations

What's the problem with “Waterfall”?

Mistakes are hard to find in early stages

Difficult to validateChange becomes more expensive in later stages

Short Iterations

Reality...Customers don't know what they want until they see itDevelopers don't know how hard a problem is until they startBusiness needs change

Short Iterations

Evolutionary approachEach iteration is complete development cycle

Analysis, Design, Implementation, Testing, and sometimes incremental Deployment

Output is working, usable software!Demo session held with customer at end of iteration

gain feedback adjust plans for succeeding iterations

1 – 3 weeks

Test-Driven Development

Tests are central to development processTypes

Unit Tests: method and class levelIntegration Tests: between classes, components and other systemsAcceptance Tests: customer requirements defined as tests

Tests are automated where possibleUnit, Integration – always

Test-Driven Development

Tests are unambiguous requirements specificationsAvoid misunderstandings by defining requirements as acceptance tests!

Unit tests cut the time spent finding bugsFixing a bug is usually easy, finding it is a nightmare!

Unit tests shape designComponents are decoupled, interfaces well-thought

Tests are written before and during implementation

Planning

1. Customers define and prioritize requirementsOften as “user stories” - lightweight use cases

2. Dev team collectively estimates cost of each requirement

Assign “points” to each3. Customers review requirements against cost and

may re-prioritize4. Dev team distributes requirements across iterations,

according to estimated team “velocity” Higher priority requirements go to earlier iterations

Tracking

Dev team tracks progress each day, usually via “burn down chart”

Tracking

If dev team sees that iteration schedule will not be met, they inform customer immediately

Too much work – inform customer which requirements will not be delivered at iteration indToo little work – request more work from customer or pull from “backlog”

Iteration end date does not move. Only workload changes.

Sustainable Pace

Studies show that productivity drops when developers work long hours for extended periodsOvertime should be controlled and avoided where possibleCommunication and courage with customer is important

Track velocity and inform customer early if expected schedules will not be metUse experience as input for future schedules, ask customer to review and re-prioritize requirements

Agile at Orange & Bronze

Been doing Agile since its foundation in 2005Before it became mainstream

We've tried different methodologies and practicesXP, Scrum, KanbanNot all practices work in all conditions

The first to offer training in Agile methodologies and practices

Scrum, TDD, Agile Business Analysis, Agile QA, etcTrainers are seasoned practictioners

Open Workspaces

Planning Board

Online Charts

Domain Design

Agile Training (internal)

For our Agile and Java training courses, go to:http://orangeandbronze.com/course-offerings