An Introduction To Software Development - The Next Iteration, Part 2
-
Upload
blue-elephant-consulting -
Category
Documents
-
view
80 -
download
1
Transcript of An Introduction To Software Development - The Next Iteration, Part 2
An Introduction To Software
Development Using Python
Spring Semester, 2014
Class #20:
The Next Iteration,
Part 2
Prioritize Example
Title: Show Current Deals
Estimate:
Title: Book Packages
Estimate: 15 , Priority: ?
Title: Arrange Travel
Estimate: 5 , Priority: ?
Title: Book A Room
Estimate: 10 , Priority: ?
Title: Book a Boat Tour
Estimate: 5 , Priority: ?
Title: Pay with Visa/MC/Paypal
Estimate: 10, Priority: ?
Title: Order Trip DVD
Estimate: 5
Title: Review Stay
Estimate: 10
Title: Order Room Service
Estimate: 20 , Priority: ?
Title: Choose View
Estimate: 15 , Priority: ?
Title: Support 3,000 concurrent users
Estimate: 20 , Priority: ?
Image Credit: Sebastien Wiertz
Which ones would you implement to meet
the customer’s schedule?
Iteration ExampleIteration #1
Total Days: Divided by 3 developers:
Iteration #2
Total Days: Divided by 3 developers:
Iteration #3
Total Days: Divided by 3 developers:
Title: Pay with Visa/MC/Paypal
Estimate: 10
Title: Book A Room
Estimate: 10
Title: Support 3,000 concurrent users
Estimate: 20
Title: Book Packages
Estimate: 15
Title: Choose View
Estimate: 15
Title: Review Stay
Estimate: 10
Example: Let’s Plan Our Next Iteration
• Drop any stories that are either a lower priority or simply don’t fit within the time available for this iteration.
• Schedule stories with the highest priority
• Include bug fixes that the customer has requested
Title: Book A Room
Estimate: 10
Title: Book Packages
Estimate: 15
User Stories
Title: Visa Payment Bug Fix
Estimate: 2
Image Credit: www.fotosearch.com
The Importance Of Velocity!
• Velocity is a key part of planning your next iteration.
• You need to know how fast your team actually works. This will be based on how fast they have worked in the past.
• When calculating velocity, only factor in work that was actually completed in the last iteration
– Work that was put off does not matter
– You want to know what was actually done
– You want to know how long it took to do
• Velocity tells you what your team can expect to get done in the next iteration
• By calculating your velocity, you take into account the reality of how your team develops software so you can plan a successful next iteration.
Image Credit: www.clker.com
Beware Of The Customer!
• Once you have everything planned for your next iteration: you need to get your customer’s approval!
• You customer can change everything!
• A big change will result in throwing away:
– Your estimates from planning poker
– Your user stories
– Your software development dashboard
– Etc.
Image Credit: toonclips.com
Change Sucks!
• Software is all about change
• Lots of things can change on you:– Your customer changes their mind in a big way
– One of your programmers leaves
– Your company lays off an entire department
– Etc.
• Good news:– What you are planning has now changed
– How you plan it has not
– You know: new velocity, # days of development you have
– You now need to: build new user stories, reprioritize, and then replan
Image Credit: www.fotosearch.com
Iteration ExampleIteration #1
Total Days: Divided by 3 developers:
Iteration #2
Total Days: Divided by 3 developers:
Iteration #3
Total Days: Divided by 3 developers:
Title: Pay with Visa/MC/Paypal
Estimate: 10
Title: Book A Room
Estimate: 10
Title: Support 3,000 concurrent users
Estimate: 20
Title: Book Packages
Estimate: 15
Title: Choose View
Estimate: 15
Title: Review Stay
Estimate: 10
Change Causes 3 Things To Have To Be Updated
• User Stories– Every change to the code has to be documented by a user story
– In this case, the customer’s ability to post a review of their stay needs to have a user story created for it
• Estimates– Every user story needs an estimate
– How much time will it take to code that function?
– How much time will it take to integrate that function with other code?
• Priorities– The customer has to assign a priority to each user story
– You then need to plan out the work for the next iteration
Image Credit: www.fotosearch.com
Example: Let’s Plan Our Next Iteration
• Drop any stories that are either a lower priority or simply don’t fit within the time available for this iteration.
• Schedule stories with the highest priority
• Include bug fixes that the customer has requested
Title: Book A Room
Estimate: 10
Title: Book Packages
Estimate: 15
User Stories
Title: Visa Payment Bug Fix
Estimate: 2
Image Credit: www.fotosearch.com
Title: Review Stay
Estimate: 10
XTitle: 3,000 user feature refactor
Estimate: 7
29
Days
Code From Other People
• There will be times when you inherit code from other people or when your code has to interface to other people’s code.
• Trust no one when it comes to code!
• Assumptions:
– Unless you’ve seen their code running…
– Or you’ve run your own set of tests against it…– You’ve got to assume that it really does not work!
• Your software is your responsibility. This means that you are responsible for bugs in the code that you didn’t write.
• Never assume that other people are following your processes
• It doesn’t matter who wrote your code, If it’s your software, it’s your responsibility.
Image Credit: sport-kid.net
Wrap-Up
• When planning the next iteration, always check with the customer to make sure that this the work that they want.
• Recalculate the velocity at the end of every iteration.
• Let your customer reprioritize your user stories.
• Using your code or someone else's, remember that it’s all just software – your process remains the same.
• You need to have at least one user story for each piece of your code.
• When you are reusing code, never make any assumptions about it.
• Trust no one's code until you’ve seen it work.
• All of your code needs to readable, reliable, and easy for others to understand.
Image Credit: sport-kid.net
What We Covered Today
1. Planning for the next iteration
2. Recalculating velocity
3. Dealing with changes from the customer
4. How to use other people’s code
Image Credit: http://www.tswdj.com/blog/2011/05/17/the-grooms-checklist/