Upload
harold-green
View
215
Download
0
Embed Size (px)
Citation preview
Agile Methods in a Product Agile Methods in a Product Development SettingDevelopment Setting
© 2002 Reginald Braithwaite-© 2002 Reginald Braithwaite-LeeLee
http://www.braithwaite-lee.comhttp://www.braithwaite-lee.com
NOTICE
This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Most people find the Most people find the concept of programming concept of programming obvious, but the doing obvious, but the doing
impossible. impossible.
Alan PerlisAlan Perlis
Successful ProductsSuccessful Products
Working SoftwareWorking Software
Value for Company and CustomersValue for Company and Customers
Dealing with failure is easy: Work Dealing with failure is easy: Work hard to improve. Success is also hard to improve. Success is also easy to handle: You've solved the easy to handle: You've solved the
wrong problem. Work hard to wrong problem. Work hard to improve. improve.
Alan PerlisAlan Perlis
Agile DevelopmentAgile Development
High Risk ProjectsHigh Risk Projects
Extended TeamsExtended Teams
TestabilityTestability
It is easier to change the It is easier to change the specification to fit the specification to fit the
program than vice versa. program than vice versa.
Alan PerlisAlan Perlis
Product DevelopmentProduct Development
CompetitiveCompetitive
Very High Risk/Low InformationVery High Risk/Low Information
A Product is complete if it “achieves its A Product is complete if it “achieves its business objective(s) on or before the business objective(s) on or before the desired date”desired date”
In computing, turning the In computing, turning the obvious into the useful is obvious into the useful is a living definition of the a living definition of the
word “frustration”. word “frustration”.
Alan PerlisAlan Perlis
Key Agile Ideas for Product Key Agile Ideas for Product DevelopmentDevelopment
Product-Centric DeliverablesProduct-Centric Deliverables
Very Short IterationsVery Short Iterations
Eat Your Own DogfoodEat Your Own Dogfood
Is it possible that software is Is it possible that software is not like anything else, that it is not like anything else, that it is
meant to be discarded: that meant to be discarded: that the whole point is to see it as the whole point is to see it as
a soap bubble? a soap bubble?
Alan PerlisAlan Perlis
Product-Centric DeliverablesProduct-Centric Deliverables
Tracks ‘Done-ness’ in terms of Company Tracks ‘Done-ness’ in terms of Company ValueValue
The Deliverable The Deliverable DefinitionDefinition
The The Acceptance TestAcceptance Test
Programmers are not to Programmers are not to be measured by their be measured by their
ingenuity and their logic ingenuity and their logic but by the completeness but by the completeness of their case analysis. of their case analysis.
Alan PerlisAlan Perlis
Predictive Deadlock DetectionPredictive Deadlock Detection
If the running software acquires two locks If the running software acquires two locks (“x”, ”y”) two or more times such that at (“x”, ”y”) two or more times such that at least once it holds x when it attempts to least once it holds x when it attempts to acquire y and at least once it hold y when acquire y and at least once it hold y when it attempts to acquire x, a potential it attempts to acquire x, a potential deadlock shall be signaled.deadlock shall be signaled.
Predictive Deadlock Detection is Predictive Deadlock Detection is acceptable when:acceptable when:
““Nels” can run sample programs with lock Nels” can run sample programs with lock order anomaliesorder anomalies
He is informed of the problemHe is informed of the problem The exact lines of code where the second The exact lines of code where the second
lock is acquired are shownlock is acquired are shown
Very Short IterationsVery Short Iterations
Manages RiskManages Risk
Maximizes Response to InformationMaximizes Response to Information
Regular ‘Done-ness’ MetricRegular ‘Done-ness’ Metric
Iteration Iteration ThemesThemes
Around computers it is difficult to find Around computers it is difficult to find the correct unit of time to measure the correct unit of time to measure progress. Some cathedrals took a progress. Some cathedrals took a
century to complete. Can you century to complete. Can you imagine the grandeur and scope of a imagine the grandeur and scope of a
program that would take as long?program that would take as long?
Alan PerlisAlan Perlis
““Would you like Fries with that Would you like Fries with that Shake?”Shake?”
In this iteration we will display end to end In this iteration we will display end to end Cross-Sell and Up-Sell, showing how Cross-Sell and Up-Sell, showing how ‘Adele’ sets up cross-selling and up-‘Adele’ sets up cross-selling and up-selling, how ‘Michael’ learns about selling, how ‘Michael’ learns about products when browsing, and how products when browsing, and how ‘Suzette’ gathers statistics about Michael’s ‘Suzette’ gathers statistics about Michael’s interests after the fact.interests after the fact.
Eat Your Own DogfoodEat Your Own Dogfood
Define the Absurdly Minimal ProductDefine the Absurdly Minimal Product
Stub Out The ArchitectureStub Out The Architecture
Define the Define the Dogfood MilestoneDogfood Milestone
The computer is the The computer is the ultimate polluter: its ultimate polluter: its
feces are feces are indistinguishable from indistinguishable from the food it produces. the food it produces.
Alan PerlisAlan Perlis
The Absurdly Minimal ProductThe Absurdly Minimal Product
Runs on the command lineRuns on the command line Signals in text to StdoutSignals in text to Stdout Runs at least two stub analyzersRuns at least two stub analyzers At least one analyzer reports running At least one analyzer reports running
condition of subject codecondition of subject code
Miscellaneous Miscellaneous RecommendationsRecommendations
Customer Representation by Proxy: Customer Representation by Proxy: Product or Program ManagementProduct or Program ManagementA Defect is “Failure to Pass an A Defect is “Failure to Pass an Acceptance Test”; a Bug is “Anything You Acceptance Test”; a Bug is “Anything You Can Put In The Read Me File”Can Put In The Read Me File”Only Make Promises You Can Keep in the Only Make Promises You Can Keep in the Next Two IterationsNext Two IterationsUse Unit Tests to Prevent Regression and Use Unit Tests to Prevent Regression and Facilitate RefactoringFacilitate Refactoring
Documentation is like Documentation is like term insurance: It term insurance: It
satisfies because almost satisfies because almost no one who subscribes no one who subscribes
to it depends on its to it depends on its benefits. benefits.
Alan PerlisAlan Perlis
One More Time!One More Time!
Product-Centric DeliverablesProduct-Centric Deliverables– Tracks ‘Done-ness’ in terms of Company ValueTracks ‘Done-ness’ in terms of Company Value– The Deliverable The Deliverable DefinitionDefinition– The The Acceptance TestAcceptance Test
Very Short IterationsVery Short Iterations– Manages Risk/Maximizes Response to InformationManages Risk/Maximizes Response to Information– Regular ‘Done-ness’ MetricRegular ‘Done-ness’ Metric– Iteration Iteration ThemesThemes
Eat Your Own DogfoodEat Your Own Dogfood– Define the Absurdly Minimal ProductDefine the Absurdly Minimal Product– Stub Out The ArchitectureStub Out The Architecture– Define the Define the Dogfood MilestoneDogfood Milestone
If a listener nods his If a listener nods his head when you’re head when you’re
explaining your program, explaining your program, wake him up. wake him up.
Alan PerlisAlan Perlis
Thank you!Thank you!