Agile steps to improve the status quo

870 views

Published on

I used this set of slides for a talk I gave at the SCRUM Breakfast in Bern on June 30, 2010.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
870
On SlideShare
0
From Embeds
0
Number of Embeds
54
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Agile steps to improve the status quo

  1. 1. agile steps to improve the status quo www.tudorgirba.com
  2. 2. www.tudorgirba.com
  3. 3. 2002 www.tudorgirba.com
  4. 4. PhD 2002 2005 www.tudorgirba.com
  5. 5. PhD PostDoc 2002 2005 2009 www.tudorgirba.com
  6. 6. PhD PostDoc 2002 2005 2009 Consultant www.tudorgirba.com
  7. 7. agile steps to improve the status quo www.tudorgirba.com
  8. 8. agile steps challenge to improve demo the status quo listen enable www.tudorgirba.com
  9. 9. the status quo
  10. 10. the status quo the existing state of affairs
  11. 11. Picture by _FXR
  12. 12. Picture by _FXR F = m .a
  13. 13. E = m. c 2
  14. 14. pos t-it
  15. 15. the status quo the existing state of affairs
  16. 16. the status quo the sum of our assumptions
  17. 17. It’s not what you don’t know that kills you, it’s what you know that isn’t so o Tom de Marc
  18. 18. challenge
  19. 19. challenge present
  20. 20. presenting is storytelling
  21. 21. story = fairy tale
  22. 22. design your story
  23. 23. message message message message message message message message message message message message essage message message message message message message message message message message message message message message message message message message message message message message message message
  24. 24. message message message message message message message message message message message message essage message message message message message message message message message message message message message message message message message message message message message message message message
  25. 25. one message
  26. 26. Modeling History to Understand Software Evolution Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern vorgelegt von Tudor Gîrba von Rumänien Leiter der Arbeit: Prof. Dr. Stéphane Ducasse Prof. Dr. Oscar Nierstrasz Institut für Informatik und angewandte Mathematik
  27. 27. To provide a generic meta-model for expressing software evolution analyses, Modeling History we need to recognize to Understand Software Evolution evolution as an explicit phenomenon and model Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern it as a first class entity. vorgelegt von Tudor Gîrba von Rumänien Leiter der Arbeit: Prof. Dr. Stéphane Ducasse Prof. Dr. Oscar Nierstrasz Institut für Informatik und angewandte Mathematik
  28. 28. one message
  29. 29. deliver one message
  30. 30. slides
  31. 31. slides are visual aids
  32. 32. slides are visual aids
  33. 33. Important sign 1. At this sign, stop, look around and proceed if no other car is coming your way. 2. Important!!!! The cars coming from the other directions will not have to stop. 3. This sign was put here by the authorities in charge. 4. This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them. 5. This sign should not be touched or hindered in any way. Any violation is punishable according to the law.
  34. 34. STOP
  35. 35. Important sign • At this sign, stop, look around and proceed if no other car is STOP coming your way. • Important!!!! The cars coming from the other directions will not have to stop. • This sign was put here by the authorities in charge. • This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them. • This sign should not be touched or hindered in any way. Any violation is punishable according to the law.
  36. 36. tailed effective de Important sign • At this sign, stop, look around and proceed if no other car is STOP coming your way. • Important!!!! The cars coming from the other directions will not have to stop. • This sign was put here by the authorities in charge. • This sign concerns vehicles only. Pedestrians should look at the signs dedicated to them. • This sign should not be touched or hindered in any way. Any violation is punishable according to the law.
  37. 37. projector = screen
  38. 38. in bet ween th e sto r y is
  39. 39. slides are visual aids
  40. 40. slides are visual aids
  41. 41. en.com rte.com pre se ntationz blog.du a kin.com fthenap t hebacko tudorgirba.com/blog
  42. 42. www.ted.com
  43. 43. presenting is storytelling
  44. 44. challenge present
  45. 45. challenge present demo
  46. 46. content
  47. 47. content form
  48. 48. content form
  49. 49. content form
  50. 50. yesterday’s weather
  51. 51. 30%
  52. 52. 30% 90%
  53. 53. yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM andTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). yesterdayWeatherHits := 0. (2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'. previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i). previousVersionsTopHistories := OrderedCollection new. x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0. previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i).
  54. 54. valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i). last2HistoriesSortedByENM := (self classHistories selectFromReferenceVersionCollection: last2Versions) sortBy: [:a :b | a value getWENM >= b value getWENM]. x := last2HistoriesSortedByENM first value getENM. valuesCount := 0. last2HistoriesSortedByENM do: [ :each | (each value getENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getENM]. (valuesCount < topCurrentENM) ifTrue: [ last2VersionsTopHistories addLast: each] ]. previousVersionsTopHistoriesNames := previousVersionsTopHistories collect: [ :each | each value name]. over := false. last2VersionsTopHistories do: [:each | ((previousVersionsTopHistoriesNames includes: (each value name)) and: [over not]) ifTrue: [ yesterdayWeatherHits := yesterdayWeatherHits + 1. over := true]. ]. ]. ^yesterdayWeatherHits/(self size - 1) asFloat.
  55. 55. yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM andTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). yesterdayWeatherHits := 0. (2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'. previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i). previousVersionsTopHistories := OrderedCollection new. x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0. previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i).
  56. 56. yesterdayWeatherProbabilityWithTopPreviousWENM: topPreviousWENM andTopCurrentENM: topCurrentENM | currentVersions previousClassHistoriesSortedByWENM yesterdayWeatherHits last2VersionsTopHistories last2Versions last2HistoriesSortedByENM x valuesCount previousVersionsTopHistories previousVersionsTopHistoriesNames over | currentVersions := OrderedCollection new. currentVersions addLast: (self allVersionNames at: 1). yesterdayWeatherHits := 0. (2 to: self allVersionNames size) do: [: i | self smelly: 'this algorithm is too big and complex'. previousClassHistoriesSortedByWENM := (self classHistories selectFromReferenceVersionCollection: currentVersions) sortBy: [:a :b | a value getWENM >= b value getWENM]. currentVersions addLast: (self allVersionNames at: i). previousVersionsTopHistories := OrderedCollection new. x := previousClassHistoriesSortedByWENM first value getWENM. valuesCount := 0. previousClassHistoriesSortedByWENM do: [ :each | (each value getWENM ~= x) ifTrue: [ valuesCount := valuesCount + 1. x:= each value getWENM]. (valuesCount < topPreviousWENM) ifTrue: [ previousVersionsTopHistories addLast: each] ]. last2VersionsTopHistories := OrderedCollection new. last2Versions := OrderedCollection new. last2Versions addLast: (self allVersionNames at: (i-1)). last2Versions addLast: (self allVersionNames at: i).
  57. 57. present
  58. 58. past present
  59. 59. past future present
  60. 60. past future present
  61. 61. past future present
  62. 62. past future prediction hit present
  63. 63. past future YesterdayWeatherHit(present): past:=all.topChanged(beginning, present) future:=all.topChanged(present, end) past.intersect(future).notEmpty() prediction hit present
  64. 64. hit hit hit YW = 3 / 8 = 37% hit hit hit hit hit hit hit YW = 7 / 8 = 87%
  65. 65. yWFor: yesterdayCheck for: tomorrowCheck ^ ( 3 to: self versions size ) collect: [ :i | | yesterday tomorrow | yesterday := self selectByExpression: yesterdayCheck appliedFromVersionIndex: 1 toVersionIndexAndPresentInIt: i - 1. tomorrow := self selectByExpression: tomorrowCheck appliedFromVersionIndexAndPresentInIt: i - 1 toVersionIndex: self versions size. yesterday intersectWith: tomorrow ] yWFor: yesterdayCheck for: tomorrowCheck | hits | hits := (self detailedYWFor: yesterdayCheck for: tomorrowCheck) sum: [ :each | each isEmpty ifTrue: [0] ifFalse: [1]]. ^ hits / (self versions size - 2)
  66. 66. content form
  67. 67. content form
  68. 68. challenge demo
  69. 69. challenge demo listen
  70. 70. challenge demo listen enable
  71. 71. It’s not Lupus
  72. 72. logy ed techno establish
  73. 73. logy ed techno establish
  74. 74. logy ed techno establish
  75. 75. hn ive gy tec rupt olo dis logy ed techno establish
  76. 76. 1 2 3 4 5 6 7 8 9 10 15 11 13 14 12
  77. 77. 1 2 3 4 5 6 7 8 9 10 15 11 13 14 12
  78. 78. 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12
  79. 79. 1 2 3 4 5 6 7 8 9 10 11 13 14 15 12
  80. 80. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  81. 81. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  82. 82. 1 2 3 4 5 6 7 8 9 10 11 12
  83. 83. What Where When Who How
  84. 84. What Why Where When Who How
  85. 85. challenge demo listen enable
  86. 86. agile steps challenge to improve demo the status quo listen enable www.tudorgirba.com

×