Developing
Effective Software
Productively



Gail C. Murphy
University of British Columbia

@gail_murphy
except for images where noted
Developing Effective Software Productively
2
Developing Effective Software Productively
3
continuous and complex
Developing Effective Software Productively
4
delivers value to people,
organizations, etc.
Developing Effective Software Productively
5
enable focus and flow on essential
complexity
6
continually
develop
software
value
streams
with focus
and flow
Goal
remove accidental complexity in
development
track value stream metrics
Some strategies
@gail_murphy
Key messages
1
3
Developing

Software
Developing Software
Productively
Effective Software
4
2
Developing Effective
Software Productively
Challenges
Strategies
{
}
1
Developing

Software
What are predominate characteristics of how
software is developed today?
predominate
software
development
lifecycle has
moved from
waterfall to
DevOps
9In less than the lifetime of a
Galápagos tortoise…
linear continuous
software has gone
from largely single
artifacts to multiple
libraries, open
source, supply
chains, etc.
10In less than the lifetime of a
Galápagos tortoise…
largely

self-contained
highly
Interconnected
GitHub project
dependencies
11
21, 448
new open source
releases each day *
11.7 sec
time between code
deploys at Amazon
(2016, web)
10B
average weekly
npm package
downloads *
Challenge: Development is continuous
and complex
*Source: State of DevOps Report 2019
1
3
Developing

Software
Developing Software
Productively
Effective Software
4
2
Developing Effective
Software Productively
Challenges
Strategies
{
}
Effective Software 2
Which software we develop is effective?
Effective
“successful in producing a desired or
intended result” (online dictionary)
14
for software, effective often ≈ value
“Lean product management
practices help teams ship
features that customers actually
want, more frequently. This faster
delivery cycle lets teams
experiment, creating a feedback
loop with customers.”



State of DevOps Report 2017
“Key Finding 1: Product features are
seen as the core of value creation…



Focus on features and launching
them as fast as possible can cause
problems from the perspective of
customer value”
Kauppinen et al, RE Conf, 2009
but
15
If the value of software is related
to features … what is a feature?
Let’s look at a few large open
source systems…
16
If the value of software is related
to features … what is a feature?
Let’s look at a few large open
source systems…
Open source system for automating
deployment, scaling and management of
containerized

applications



68k+ commits

415 releases

1760 contributors
17
If the value of software is related
to features … what is a feature?
Look at large open source
systems…
Labels in issues are used to
identify features
18
If the value of software is related
to features … what is a feature?
Look at large open source
systems…
Open source learning platform



90k+ commits

303 releases

447 contributors
19
If the value of software is related
to features … what is a feature?
Look at large open source
systems…
No clear links between
epics and features
20
Challenge…
We lack consistency
in use of “feature”
and ability to track
features which
complicates tracking
of value
1
3
Developing

Software
Developing Software
Productively
Effective Software
4
2
Developing Effective
Software Productively
Challenges
Strategies
{
}
3
Developing Software
Productively
When are software developers productive?
23
Photo courtesy of #WOCinTech
When do developers perceive
themselves to be productive
and unproductive?
Undertook series of studies
of professional developers
involving surveys,
observations, monitoring
Joint work with A. Meyer, 

T. Fritz, T. Zimmerman
24
379 developers answered the
question…
I have a productive day when I…
53% 50% 22%

20%
complete
tasks or goals
have no/few
interruptions
or distractions
have no
meetings
have clear
goals
Meyer et al, FSE 2014
25
Developers want to measure
productivity differently
activities
achievements
value
time per task ratio
27%
18%
17%
16%
Meyer et al, FSE 2014
26
Productive developers switch
tasks and activities often
Meyer et al, FSE 2014
27
Challenge: context switches are
costly and lower productivity
The tools developers are using
are compounding not lowering
accidental complexity
Developers lose focus and flow
1
3
Developing

Software
Developing Software
Productively
Effective Software
4
2
Developing Effective
Software Productively
Challenges
Strategies
{
}
4Developing Effective
Software Productively
Two strategies to build better software better
(but there are others!)
Strategy 1:





Provide software tools that match developer needs
and avoid accidental complexity
30
One example
31
Development environment’s tax a developer’s semantic
memory and cause information overload
Mylyn tool
32
Leverages a developer’s episodic memory to enable focus
on essential complexity
Active
taskJust the
code
accessed
as part of
this task
Kersten & Murphy, FSE 2006
Mylyn tool
33
Leverages a developer’s episodic memory to enable focus
on essential complexity
Switch to
another
taskCode display
is changed to
code tracked
as part of new
active task
Developer can focus and flow is
improved. Productivity improves.
Strategy 2:





Track flow through value streams of development
34
Focus on end-to-end
software value
stream flows …
to enable correlation
to business
outcomes
Value stream metrics

35
© Tasktop
Technologies, Inc.
2017-2018. All rights
reserved.
Value stream metrics

36
© Tasktop
Technologies, Inc.
2017-2018. All rights
reserved.
Value stream metrics

37
© Tasktop Technologies, Inc. 2020. All rights reserved.
Flow
velocity
Flow
Distribution
Flow
Efficiency
Flow Time
Flow Load
Thanks
to…
Thomas Fritz, Mik Kersten, Andre Meyer,
Marc Palyart, Tom Zimmermann, wonderful
graduate students, great colleagues at
Tasktop Technologies, funders, 



and the organizers of ICPE 2020
continually
develop
software
value
streams
with focus
and flow
Goal
remove accidental complexity in
development
track value stream metrics
Some strategies
@gail_murphy
Developing
Effective Software
Productively
Some pointers for more information…
Productivity and Software Developers
Meyer, Murphy, Fritz, Zimmermann. Developers’ diverging perceptions of productivity. Rethinking Productivity in Software Engineering, 2019.
Meyer, Fritz, Murphy, Zimmermann. Software developers’ perceptions of productivity. FSE 2014, pp. 19-29.
Meyer, Barton, Murphy, Zimmermann, Fritz. The work life of developers: Activities, switches and perceived productivity. TSE 2017.
Software Developer Needs and Tools
Kersten and Murphy. Using task context to improve programmer productivity. FSE 2006.
Murphy. Beyond integrated development environments: Adding context to software development, ICSE 2019.
Murphy. Getting to flow in software development. Onward, 2014.
Murphy, Kersten, Robillard, Cubranic. The emergent structure of development tasks, ECOOP, 2005.

Software and Value Streams
Kersten. Project to Product: How to Survive and Thrive in the Age of Digital Disruption with the Flow Framework. IT Revolution. 2018.
Murphy and Kersten. Towards bridging the value gap in Dev Ops. DevOps 2019.

Developing Effective Software Productively