Upload
truongtram
View
229
Download
1
Embed Size (px)
Citation preview
Pivotal Labs SG2011 ~ 2013
Agile Software Engineering Test Driven Development • Pair Programming • Continuous Integration
Neo Innovations2011 ~ 2013
Agile Software Engineering Test Driven Development • Pair Programming • Continuous Integration
Why Are Software Development Task Estimations Regularly Off By A Factor of 2-3
http://www.quora.com/Engineering-Management/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3
“This project will be completed by Christmas.
- Project Manager, based on Traditional Planning
Unrealistic Timeline
ManifestoIndividuals and Interactions
!
Working Software
!
Customer Collaboration !
Responding to Change
Processes and Tools !
Comprehensive Documentation !
Contract Negotiation !
Following a Plan
>
EngineersProduct OwnerCustomers
Icons: http://www.iconarchive.com/show/sleek-xp-basic-icons-by-deleket
Project Manager
Product Owner
• Represents the stakeholders
• Represents customers and subject matter experts
• Manages product backlog by ranking and prioritizing user stories
• Ensures that the Team delivers value to the business
Project Manager
• Bridge between the Product Owner and Engineers
• Could be the Lead Developer too
!
Engineers
• Write the code
• Estimate the stories effort
• Provide expertise on simplest solution first
• Pivotal to the success or failure of a project
EngineersProduct OwnerCustomers
Project Manager
Icons: http://www.iconarchive.com/show/sleek-xp-basic-icons-by-deleket
Engineering Practices
• Daily Standups
• Pair Programming
• Test Driven Development
• Continuous Integration/Deployment
Time to Ship
High Level ScopeHigh Level DesignDetailed DesignEstimateBuildUAT
AgileIn
cept
ion
Itera
tions
Agile
Iteration 1Inception Iteration 2
Retrospective (every 2-4 iterations)
Release Planning Meeting (every 12-24 iterations)
Iteration 3 ... Iteration n
Stories Generation Stories Clarification Stories Estimation Stories Prioritization
Build
Release
Iteration Planning Meeting
An Iteration
Iteration
Daily Standups Pair Programming Test Driven Development
Build
Release
Iteration Planning Meeting
An Iteration
Iteration
Continuous Integration Continuous Deployment
Build
Release
Iteration Planning Meeting
An Iteration
Iteration
Build
Release
Iteration Planning Meeting
An Iteration
Stories Generation Stories Clarification Stories Estimation Stories Prioritization
Daily Standups Pair Programming Test Driven Development
Continuous Integration Continuous Deployment
Iteration
Inception
• Alignment and Expectation Setting
• Days to Week depending on size of project
• Agenda:
• Goals (Business, Product, Non-Goals)
• Risks
• High Level Stories Estimation and Prioritization
• Release Planning
[Management Practice]
“.. is used to create a release plan, which lays out the overall project. The release plan is then used to create iteration plans for each individual iteration.
-http://www.extremeprogramming.org/rules/planninggame.html
Release Planning Meetings[Management Practice]
Release Planning Meetings
• Each release is 3 - 6 months
• Business to make decision on MVP, and its features
• Release is planned by Time or Scope
• Project can be quantified by:
• Scope, Time, Resources and Quality
[Management Practice]
Release Planning Meetings[Management Practice]
Today
MVP
1 Iteration
Estimation by Engineers !
Prioritization by Product Owner
Release Planning Meetings[Management Practice]
Today
MVP
1 Iteration
Estimation by Engineers !
Prioritization by Product Owner
“.. is called at the beginning of each iteration. User stories are chosen for this iteration by the customer in order of the most valuable to the customer first.
-http://www.extremeprogramming.org/rules/iterationplanning.html
Iteration Planning Meetings[Management Practice]
Iteration Planning Meetings
• Each iteration is short, 1 - 3 weeks
• Features are prioritized, based on:
• Business value (usually in financial sense)
• Effort required
• Amount and significance of new knowledge gained from feature
• Risk added / removed
[Management Practice]
Retrospective
“.. play a very important role in iterative and incremental development. At the end of every iteration a retrospective is held to look for ways to improve the process for the next one.
- http://en.wikipedia.org/wiki/Retrospective
[Management Practice]
Retrospective
• Reflect and Adapt methods and to help whole team learning
• Benefits of Retrospectives:
• Productivity
• Capability
• Quality
• Capacity
[Management Practice]
Daily Standups
• General project updates
• Which story did you work on yesterday?
• Which story are you going to work on today?
• Blockages?
[Engineering Practice]
Pair Programming
• Benefits of Pair Programming:
• Focus
• Knowledge Exchange
• Collective Code Ownership
• High Code Quality
• Engineering Happiness!
[Engineering Practice]
http://winstonyw.com/2012/12/02/pair_programming/
Test Driven Development
“.. when you create your tests first, before the code, you will find it much easier and faster to create your code.
- http://www.extremeprogramming.org/rules/testfirst.html
[Engineering Practice]
Test Driven Development
• Red, Green, Refactor
• Benefits of Test Driven Development:
• Quality
• Accountability
• Maintainability
• Live Documentation
[Engineering Practice]
Continuous Integration/Deployment
“.. often avoids diverging or fragmented development efforts, where developers are not communicating with each other about what can be re-used, or what could be shared.
- http://www.extremeprogramming.org/rules/integrateoften.html
[Engineering Practice]
“.. one or more sentences in the everyday or business language of the end user or user of a system that captures what a user does or needs to do as part of his or her job function.
- http://en.wikipedia.org/wiki/User_story
What is a User Story?
Acceptance Criteria: 1. <do this> 2. <do that> ... n. <expected result>
Structure of a User Story (2)
As a Facebook User, I want to sign up with my FaceBook account, so that I can start using the service instantaneously.
Example of a User Story (1)
Acceptance Criteria: 1. Go to homepage 2. Click on “Login with Facebook” 3. Wait to be redirected to Facebook Login page 4. Login with your Facebook credentials 5. You will be redirected to homepage 6. You should see “Welcome John” in header
Example of a User Story (2)
Type Size
Golf Ball
Basketball
Soccer Ball
Ping Pong Ball
Tennis Ball
Let’s Estimate
Estimate the size of these balls. Pick from S, M, L or XL.
S
XL
L
S
M
Size Points Points
S 1 1
M 2 2
L 4 3
XL 8 5
XXL 16 8
Size Chart
Incr
easin
g Or
der o
f Com
plex
ity
Velocity
• Story Points per Iteration (Throughput)
• Derived based on:
• Estimation
• Historical Data
• Depends on:
• Team Members (skills)
• Team Size