thoughts on productivity in software development
TRANSCRIPT
Thoughts on Productivity in
Software Development
➢What is productivity and how to
measure it
➢Productivity on multiple levels
○ Individual
○ Team
○ Organization
➢Patterns & Anti-patterns
Michael VaxCTO, WebInterpret
Functional Point Analysis s
https://prasadiapsara.wordpress.com/2013/07/27/function-point-analysis/
Function Points = Unadjusted Function Points * Value Adjustment Factor
What about Velocity?
➢ Velocity is a planning tool rather than a
specific measurement.
➢ Velocity is simply a capacity estimate
for a given team at a given time
➢ An internal measure for a team and
cannot be used as a comparison
between teams
➢ Easy to game if used as productivity
measure with attached incentives
Measuring Productivity through Financial Results
● Very attractive approach on executive level
● Too many factors outside of development
organization control
○ Sales team performance
○ Market conditions
● Focusing on cost savings in particular leads
many managers to cut people and try “to do more
with less” instead of investing in real productivity
improvements.
● And as Martin Fowler points out there is a time
lag, especially in large organizations – it can
sometimes take months or years to see real
financial results from an IT project, or from
productivity improvements.
We’re making (or saving)
more money, so we must
be working better
Can you really measure software productivity?
There are no reliable universal ways to measure
productivity in software development.
However, there are multiple ways to either
improve or kill it
In Physical World Productivity is Linear
Management training is focused
on industries with linear
productivity - manufacturing and
construction
Pro
du
cti
vit
y
Productivity in Software is NOT Linear
Knowledge rich industries
are governed by
Complexity Theory and
linear methods are not
useful
We are not equal when it comes to productivityP
rod
uc
tivit
y
➢ Everyone knows who the top performers are.
Point them in the right direction, and keep them happy.
0
➢ Everyone knows who doesn't fit in.
Move them out.
➢ Everyone knows the people who are struggling.
Get them the help that they need to succeed.
Productivity vs. Compensation
Nonlinear relation
● Productivity x times higher
● Compensation 20-30% above
the market
● Productivity - regular
● Compensation - market
● Productivity - negative
● Compensation - market
Productivity vs. Compensation
Antipatterns
- Salary increase limits
- Paying more to new hires
than to your old timers
- Individual bonuses
Productivity vs. Seniority
Should you hire junior,
intermediate, or a senior?
Hire a smart one!
● Productivity depends on
experience
● So is the cost
● Best hire does not always mean
Senior
Copyright - Netflix culture
Make team self-sufficient
Development team should have:
all skills it needs to do its job
access to all development and test
environments it needs
all tools and services that are required
Happy Team is more productive
Feels respected
Proud of its accomplishments
People like working with each other
No brilliant jerks
.
Good Agile Process
Development team should have
right level of authority to
optimize its process and
environment
Copyright - industriallogic
Get Requirements Right
Product management
needs to be Ready-Ready
for development team to
be Done-Done
● Quality of requirements has a huge impact on
productivity
● We can be very efficient in developing a wrong
thing
● Cost of team misinterpreting or not understanding
requirements
● Missed requirements
● Not paying attention to non-functional
requirements
Outsourcing
Smart companies
outsource to be able to
do more not to save
money
Outsource to get access to talent and
expertise
Cheapest rates don’t buy productivity
Hidden cost
Timezone penalty
Good Architecture
Software architecture affects productivity
Modular design allows efficient use of
resources
Reuse of software assets for multiple
purposes
Technical Debt kills
Productivity
So does overengineering
Small Batches
You can increase performance
by splitting work into smaller
batches
Copyright © Poppendieck.LLC
Optimize the Whole
We all have a tendency to Local
Optimization
I optimized
my work
We optimized
our team’s work
We optimized our
department’s work
Idea Product
Cost Accounting
Not working very well for
software
● Cost accounting was created to accurately
manage men and machines used in assembly
lines
● Main goal is to reduce cost
● Assumes that local efficiency leads to global
efficiency
● Cost of labor is treated as a variable cost
● Assembly line workers were easily replaceable.
Theory of Constraints and Throughput Accounting
● TOC considers any business as a system
transforming inputs into outputs.
● The inputs undergo a number of work steps
and are transformed into outputs.
● The outputs are the products/services valued
and paid for by the business's customers.
● In software a unit of work is a backlog feature