What is agile
-
Upload
orange-and-bronze-software-labs -
Category
Technology
-
view
557 -
download
0
description
Transcript of What is agile
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