What is agile

40
Introduction to Agile Software Development What is Agile?

description

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

Transcript of What is agile

Page 1: What is agile

Introduction to Agile Software DevelopmentWhat is Agile?

Page 2: What is agile

How Projects Really Work

Page 3: What is agile

How the customer explained it

Page 4: What is agile

How the project leader understood it

Page 5: What is agile

How the analyst designed it

Page 6: What is agile

How the programmer wrote it

Page 7: What is agile

How the business consultant described it

Page 8: What is agile

How the project was documented

Page 9: What is agile

How much the project cost

Page 10: What is agile

What the customer really needed

Page 11: What is agile

Agenda

What is Agile?Agile ManifestoBenefits

ValuesSelected PracticesAgile at Orange & Bronze

Page 12: What is agile

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

Page 13: What is agile

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

Page 14: What is agile

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.

Page 15: What is agile

Benefits

Studies show...Improved customer satisfaction

Higher qualityBetter predictability

Improved employee retentionHigher job satisfaction

Mainstream acceptanceYour clients are probably adopting agile

Page 16: What is agile

Values

CommunicationSimplicityFeedbackCourageRespect

Page 17: What is agile

Communication

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

Cubicles discouraged

Page 18: What is agile

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

Page 19: What is agile

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

Page 20: What is agile

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

Page 21: What is agile

Respect

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

Page 22: What is agile

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...

Page 23: What is agile

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

Page 24: What is agile

Customer/Developer Roles

Customer

Customer

DeveloperDeveloper

Page 25: What is agile

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

Page 26: What is agile

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

Page 27: What is agile

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

Page 28: What is agile

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

Page 29: What is agile

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

Page 30: What is agile

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

Page 31: What is agile

Tracking

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

Page 32: What is agile

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.

Page 33: What is agile

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

Page 34: What is agile

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

Page 35: What is agile

Open Workspaces

Page 36: What is agile

Planning Board

Page 37: What is agile

Online Charts

Page 38: What is agile

Domain Design

Page 39: What is agile

Agile Training (internal)

Page 40: What is agile

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