improving software development at scale - promise and pitfalls #llkd14

22
Improving Software Development at Scale: Promise and Pitfalls Dr Andy Carmichael Head of Agile Services, Clearvision-CM.com @andycarmich - #LLKD14

Upload: andy-carmichael

Post on 08-May-2015

978 views

Category:

Software


0 download

DESCRIPTION

Software (as frequently observed) is hard. And software development at scale is particularly hard. Evidence suggests a strong inverse relationship between the likelihood of a software project delivering its planned benefits (within budgeted costs) and the project's size. While this is nothing new, we should ask why has there been so little improvement over the years. Agile methods undoubtedly contributed much over their first two decades to the effectiveness of software teams - particularly "coffee-pot-sized" teams developing new products. Agile methods were primarily designed with this sized team in mind, and agile process frameworks are still defined almost entirely with reference to this scale. In their third decade however, the question of how these methods scale can no longer be avoided. This presentation, rather than focusing on the new frameworks that are now emerging, reviews anecdotal evidence as well as theoretical ideas on what improves (or degrades) performance of large initiatives… in particular the management behaviours that have proved helpful or counter-productive in real projects. Large scale does not invalidate strategies that work at small scale, however it does introduce management problems that are new - problems that are not overcome by simply "keeping the geeks away from the suits" (or keeping the "chickens" silent while the "pigs" speak)!

TRANSCRIPT

Page 1: Improving software development at scale - promise and pitfalls #llkd14

Improving Software Development at Scale: Promise and Pitfalls

Dr Andy CarmichaelHead of Agile Services, Clearvision-CM.com

@andycarmich - #LLKD14

Page 2: Improving software development at scale - promise and pitfalls #llkd14

Software development at scale is particularly hard

Scale changes the problem

Software is hard

Page 3: Improving software development at scale - promise and pitfalls #llkd14

Outline of this session…

Improving Software Development at Scale: Promise and Pitfalls

Page 4: Improving software development at scale - promise and pitfalls #llkd14

Improvement

• Improvements suffer the J-Curve syndrome

• Small step improvements (Kaizen) may alleviate deep dips in performance

• Radical change might also be needed (Kaikaku) but may not “stick”

• Kanban is an IMPROVEMENT method based on the Lean flow paradigm

Page 5: Improving software development at scale - promise and pitfalls #llkd14

Improving Software Development at Scale: Promise and Pitfalls

Page 6: Improving software development at scale - promise and pitfalls #llkd14

What is Kanban?

An approach for managing and improving the

flow of value from knowledge work?

Process

Page 7: Improving software development at scale - promise and pitfalls #llkd14

WORKFLOWS(not all work does flow – but concentrate on the “work that flows”)

Page 8: Improving software development at scale - promise and pitfalls #llkd14

A short definition of Kanban needed in order to be scale-free

1. See work as flow2. Start from here and evolve3. Make work and policies

visible; Make validated improvements

See also: “The Shortest Possible Definition of Kanban and why it matters for scaling”#KLRAT13 and #LKUK13 – Slideshare: http://slidesha.re/1mbvNsb

Lean Flow Paradigm

Foundational Principles

Core Practices

Page 9: Improving software development at scale - promise and pitfalls #llkd14

The Twitter Version

Essence of Kanban

see flow start here with visible work & policies validate improvements

Also see: "How to Adopt Kanban" @andycarmich

Page 10: Improving software development at scale - promise and pitfalls #llkd14

Improving Software Development at Scale: Promise and Pitfalls

Page 11: Improving software development at scale - promise and pitfalls #llkd14

2 scaling mechanisms

• Scaling by “not scaling”o use service-orientation concept to build a network of

independently operating but interdependent serviceso balance work flowing between different kanban systems

• Scale through “scale-free” understandingo same approach applied to different units of flow at

different time scales

Page 12: Improving software development at scale - promise and pitfalls #llkd14

3 (or 4) Scales of Kanban

• Personal / small team • unit of flow: Task

• time scale: hours

• Service delivery / workflow • unit of flow: Work item e.g. User Story

• time scale: days

• Product• unit of flow: Project, Epic, MVP or MMF

• time scale: months

• Portfolio • unit of flow: “Product Holding”

• time scale: months/year(s)

Decisio

n m

akin

g a

t diff

ere

nt le

vels h

ave

diff

erin

g sco

pe a

nd

purp

ose

Page 13: Improving software development at scale - promise and pitfalls #llkd14

Decision Flows between Scales

• Personal / small team

• Service delivery / workflow

• Product

• Portfolio

Decisio

n m

akin

g a

t diff

ere

nt le

vels h

ave

diff

erin

g sco

pe a

nd

purp

ose

Personal forecasts and blockages – Daily Stand-up Team goals and priorities

Cost-Schedule forecasts and blockages – Operations Meeting Product goals and priorities

Cost-Benefit-Schedule forecasts (“P/E ratios”) Investment goals and priorities

Implementation options

Product options

Investment options

Page 14: Improving software development at scale - promise and pitfalls #llkd14

Outline of this session…

Improving Software Development at Scale: Promise and Pitfalls

Page 15: Improving software development at scale - promise and pitfalls #llkd14

Pitfalls: Mild insults & non-communication

• keep the ‘chickens’ silent while the ‘pigs’ speak Subtext: management is not committed

• keep the ‘geeks’ away from the ‘suits’

Subtext: the technical concerns are for lower-level discussions

Page 16: Improving software development at scale - promise and pitfalls #llkd14

Pitfall 1: Adopting Agile Frameworks without the

Values or Enabling Practices • Frequent integration and/or delivery without

automated testing• “Agile planning”… fixed scope and schedule• Water-scrum-fall• Hierarchical management/communication

Page 17: Improving software development at scale - promise and pitfalls #llkd14

Pitfall 2: Ignoring dis-economies of scale

• Inside every large project there are small ones trying to get out

• Inside impossibly-massive projects (just say no!) there may be feasibly-large ones

Page 18: Improving software development at scale - promise and pitfalls #llkd14

@MartinBurnsSV

Architecture• Components and acyclic

dependency graph• Policies to facilitate non-

functional requirements compliance

• Processes to improve time to quality

• Architecture is not “arm-waving”

• It’s not “non-technical”• It’s not disconnected from

organisation structures (Conway’s Law)

Pitfall 3: Thinking architecture is primarily about function…

or that it’s optional

Page 19: Improving software development at scale - promise and pitfalls #llkd14

Pitfall 4: Thinking dependencies in plans are

there to be managed

Most must be eliminated!

Page 20: Improving software development at scale - promise and pitfalls #llkd14

Pitfall 5: Thinking agility is a quality without a cost

Is it valued by the organisation?Is predictability valued more?

Page 21: Improving software development at scale - promise and pitfalls #llkd14

Pitfalls 6 & 7: Interventions…

• We have done those things that we ought not to have done (Instruction Giving)

• We have left undone those interventions we ought to have done (System Thinking)

RESPECTCONTINUOUS

IMPROVEMENT

Page 22: Improving software development at scale - promise and pitfalls #llkd14

Improving Software Development at Scale: Promise and Pitfalls

Dr Andy CarmichaelHead of Agile Services, Clearvision-CM.com

@andycarmich - #LLKD14http://xprocess.blogspot.co.uk/

http://www.slideshare.net/andycarmichaeluk/