Slide 1

Slide 1 text

What is software development productivity, anyway? Gail C. Murphy University of British Columbia Tasktop Technologies Incorporated @gail_murphy Slides with non-shareable images are marked Presented at MSR 2013 at ICSE 2013

Slide 2

Slide 2 text

why care? “software is eating the world” Marc Andreesen Image may not be reused

Slide 3

Slide 3 text

explore the idea of software development productivity

Slide 4

Slide 4 text

gather your ideas you have index card + pencil on 3 separate lines write a word or phrase that captures software development productivity to you pass to a volunteer

Slide 5

Slide 5 text

this talk is going to be a journey not going to produce an answer but hopefully will generate ideas

Slide 6

Slide 6 text

productivity manufacturing software Image may not be reused

Slide 7

Slide 7 text

productivity output input

Slide 8

Slide 8 text

workers as cogs

Slide 9

Slide 9 text

workers begin to be empowered Henry Ford 1863-1947

Slide 10

Slide 10 text

unlimited potential in workers “Why is it that productivity increases as quality improves? Less rework. There is no better answer”

Slide 11

Slide 11 text

further worker empowerment Toyota Production System: lean manufacturing

Slide 12

Slide 12 text

productivity in manufacturing workers as cogs worker empowerment workers key to productivity improvement

Slide 13

Slide 13 text

what about productivity in software development?

Slide 14

Slide 14 text

prediction of year most problems could be “programmed” in < 1 hour with one day of training 1970s: output measured in handwritten code Boehm, “Software and Is Impact: A Quantitative Assessment”

Slide 15

Slide 15 text

1980s: output measured in functionality

Slide 16

Slide 16 text

essence over accidental Brooks, “No Silver Bullet: Essence and Accident in Software Engineering” Image may not be reused

Slide 17

Slide 17 text

focus on quality and productivity will follow Capers Jones Image may not be reused

Slide 18

Slide 18 text

productivity in software development ?? ?? output = lines of code? functionality? does productivity follow quality?

Slide 19

Slide 19 text

software productivity today lean software development lean start-up Image may not be reused

Slide 20

Slide 20 text

economy.com: -0.9% growth for software from 1998 to 2003 no consensus on what software productivity is consensus software is more complex

Slide 21

Slide 21 text

lean software development • eliminate waste • amplify learning • decide as late as possible • deliver as late as possible • empower the team • build integrity in • see the whole M. and T. Poppendieck, Lean Software Development

Slide 22

Slide 22 text

lean start-up • validated learning • build-measure-learn • minimum viable product • continuous deployment • split testing E. Ries, The Lean Startup

Slide 23

Slide 23 text

reflecting on individual productivity Image may not be reused

Slide 24

Slide 24 text

manufacturing software development/ start-ups individual empowerment amplify/validated learning how can we enable the individual to reflect upon: validated learning activities performed

Slide 25

Slide 25 text

validated learning activities performed individual software development productivity ≈

Slide 26

Slide 26 text

how many stories did I work on (last week, last month) that are in release? maybe extract from issue system? maybe trace code in release to commits adding that code up issue chain extract/summarize story for consumption validated learning

Slide 27

Slide 27 text

mock-up released user stories: As a CONNECT adopter sending Direct messages, I want to receive failure messages ... completed, not released: As a CONNECT adopter sending Direct messages, I need the ability to provide a positive delivery notification ... 29% 71% Released Completed

Slide 28

Slide 28 text

over the last six months, how many user stories I worked on survived A/B testing? extract last six months of stories from issue repository correlate to A/B testing results validated learning

Slide 29

Slide 29 text

mock-up e.g., tested user stories: As a CONNECT adopter, I find it annoying that CONNECT urls are inconsistent e.g., A/B survivors: As a CONNECT adopter I want intallation instructions... 0 5 10 15 20 6 mo. ago 5 mo. ago 4 mo. ago 3 mo. ago 2 mo. ago 1 mo. ago Tested Survived

Slide 30

Slide 30 text

validated learning activities performed individual software development productivity ≈

Slide 31

Slide 31 text

activities performed over the period of validated learning... how many commits did I make? how many defects were filed for my code? how many times was the story rewritten? what was my ratio of edits to selection events?

Slide 32

Slide 32 text

mock-up 0 25 50 75 100 6 mo. ago 4 mo. ago 2 mo. ago Commits Defects 0 5 10 15 20 6 mo. ago 5 mo. ago 4 mo. ago 3 mo. ago 2 mo. ago 1 mo. ago Tested Survived

Slide 33

Slide 33 text

what if it was simple... to gather integrated application lifecycle data to summarize and analyze trends in that data to reflect upon when I as an individual am learning... creating value...

Slide 34

Slide 34 text

validated learning activities performed individual software development productivity ≈ just one comparative approach with flaws

Slide 35

Slide 35 text

what did you think software development productivity is, anyway?

Slide 36

Slide 36 text

crowd-sourced at MSR 2013

Slide 37

Slide 37 text

software is eating the world empower individuals to increase productivity reflect on lifecycle and activity data to improve individual productivity @gail_murphy Images may not be reused