An Introduction To Software Development - The Next Iteration, Part 2

14
An Introduction To Software Development Using Python Spring Semester, 2014 Class #20: The Next Iteration, Part 2

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/

What We’ll Be Covering Next Time

1. Bugs!

Image Credit: http://merchantblog.thefind.com/2011/01/merchant-newsletter/resolve-to-take-advantage-of-these-5-e-commerce-trends/attachment/crystal-ball-fullsize/