how and why to design your teams for modern software systems - idinlondon meetup - oct 2017

89
How and why to design your teams for modern software systems Matthew Skelton | Skelton Thatcher Consulting @matthewpskelton | skeltonthatcher.com International Developers in London meetup 17 October 2017 | @IDinLondon #IDinLondon

Upload: skelton-thatcher-consulting-ltd

Post on 29-Jan-2018

178 views

Category:

Software


1 download

TRANSCRIPT

Page 1: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

How and why to design your teams for

modern software systemsMatthew Skelton | Skelton Thatcher Consulting

@matthewpskelton | skeltonthatcher.com

International Developers in London meetup17 October 2017 | @IDinLondon #IDinLondon

Page 2: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Today• Conway’s Law (or heuristic)• Cognitive Load for teams• Real-world Team Topologies• Guidelines for team design

Page 3: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Organisation design for effective software systemsTutorial / Workshop

Weds 25 October 2017, London

https://ti.to/skelton-thatcher-consulting

20% discounton tickets:

"FRIEND20"

Page 4: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

teamtopologies.com

Upcoming book:

Team Topologies for effective software systems

by Matthew Skelton & Manuel Pais

Page 5: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

About meMatthew Skelton

@matthewpskelton

Co-founder at Skelton Thatcher Consulting

skeltonthatcher.com

Page 6: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Books

Page 7: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team-first digital transformation30+ organisations

UK, US, DE, India, Chinaskeltonthatcher.com

Page 8: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017
Page 9: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

How and why to design your teams

for modern software systems

Page 10: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Safer, more rapid changes to

software systems

(Business Agility)

Page 11: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

TEAM

Page 12: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017
Page 13: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

TEAMcapabilities

appetite & aptitudeunderstanding

responsibilities

Page 14: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

(assumption)

the team is stable, slowly changing, and long-lived#NoProjects

Page 15: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Conway’s Law(or Conway’s Heuristic)

Page 16: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

“organizations which design systems ... are constrained to

produce designs which are copies of the communication structures of

these organizations”

– Mel Conway, 1968http://www.melconway.com/Home/Conways_Law.html

Page 17: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

“if the architecture of the system and the architecture of the organization

are at odds, the architecture of the organization wins”

– Ruth Malan, 2008http://traceinthesand.com/blog/2008/02/13/conways-law/

Page 18: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

“We find strong evidence to support the hypothesis that a product’s

architecture tends to mirror the structure of the organization in

which it is developed.”

– MacCormack et al, 2012MacCormack, Alan, Carliss Y. Baldwin, and John Rusnak. ‘Exploring the Duality Between Product and Organizational Architectures: A Test of the

“Mirroring” Hypothesis’, 1 October 2012. http://www.hbs.edu/faculty/Pages/item.aspx?num=43260.

Page 19: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

homomorphic force

(#Conway #Yawnoc)

HT @allankellynet

(same) (shape)

Page 20: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Front-end developers

Back-end developers

Page 21: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

‘Reverse Conway’Tobbe Gyllebring (@drunkcod)

Page 22: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

A

B

A B

Page 23: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017
Page 24: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Design the organisation architecture

to produce the right software architecture

Page 25: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Cognitive Load for teams

Page 26: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Cognitive load

the total amount of mental effort being used in

the working memory(see Sweller, 1988)

Page 27: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Cognitive load

Intrinsic Extraneous (Irrelevant )

Germane (Relevant)

Page 28: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

‘Hacking Your Head’: Jo Pearce

See http://www.slideshare.net/JoPearce5/hacking-your-head-managing-information-overload-45-mix

@jdpearce

Page 29: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

We have SCIENCE!

Page 30: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Science since 1988• Driskell et al, 1999 ‘Does Stress Lead to a Loss of Team Perspective?’ Group Dynamics:

Theory, Research, and Practice 3, no. 4 (1999): 291.

• Fan et al, 2010 ‘Learning HMM-Based Cognitive Load Models for Supporting Human-Agent Teamwork’. Cognitive Systems Research 11, no. 1 (2010): 108–119.

• Ilgen & Hollenbeck, 1993 ‘Effective Team Performance under Stress and Normal Conditions: An Experimental Paradigm, Theory and Data for Studying Team Decision Making in Hierarchical Teams with Distributed Expertise’. DTIC Document, 1993.

• Johnston et al, 2002 ‘Application of Cognitive Load Theory to Developing a Measure of Team Decision Efficiency’. DTIC Document, 2002.

• Sweller, John, 1994 ‘Cognitive Load Theory, Learning Difficulty, and Instructional Design’. Learning and Instruction 4 (1994): 295–312.

• Sweller, John, 1988. ‘Cognitive Load during Problem Solving: Effects on Learning’. Cognitive Science 12, no. 2 (1988): 257–285.

Page 31: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

“stress impacts teamperformance … by narrowing or

weakening the team-level perspective required foreffective team behavior.”

– Driskell et al, 1999Group Dynamics: Theory, Research, and Practice 1999, Vol. 3, No. 4,291-302

Page 32: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

(not just ‘pop’ science!)

Page 33: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

High-performing teams are hugely effective

Optimise for the team

Page 34: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Match the team responsibility to the cognitive load that

the team can handle

Page 35: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Real-world Team Topologies

Page 36: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

DevOpsTopologies.com

Page 37: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Development & Testing

IT Operations / Web Operations

Anti-Type

Database / DBA

DevOps activity

SRE

Component

Supporting (Tooling / Platform / Build)

Page 38: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

(Can you spot an important team type that is missing?)

Page 39: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Types

Page 40: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type A – Separate Silosd

evo

psto

po

logie

s.c

om

Dev Ops

Page 41: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type B – Separate DevOps Silo

Dev OpsDevOpsdevo

psto

po

logie

s.c

om

Page 42: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Anti-Type C – “We Don’t Need Ops”

Page 43: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type D – ‘DevOps’ as another Dev teamd

evo

psto

po

logie

s.c

om

Dev Ops

DevOps

Page 44: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type E – DevOps as new SysAdmin teamd

evo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 45: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type F – Ops embedded in a Dev Team

HT: Matt Franz (@seclectech)

devo

psto

po

logie

s.c

om

Dev

Ops

DevOps

Page 46: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Anti-Type G – Dev-DBA gap!d

evo

psto

po

logie

s.c

om

Dev OpsDBA

Page 47: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Types

Page 48: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 1 – Smooth Collaborationd

evo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 49: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 2 – Fully Embeddedd

evo

psto

po

logie

s.c

om

Dev Ops

Page 50: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Type 3 – Infrastructure-as-a-Service

Page 51: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 4 – DevOps-as-a-Serviced

evo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 52: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Type 5 – Temporary DevOps Team

Page 53: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Type 6 – ‘Facilitating’ DevOps Team

Page 54: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 7 – SRE Team (Google)

SRE

HT: @kwdhinde

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 55: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

HT: @jascbu

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Type 8 – ‘Just run my Containers’

Page 56: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 9 – DB capability in Dev

DBADB Dev

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 57: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Type 10 – DB as a Service

DBaaSDB Dev

devo

psto

po

logie

s.c

om

Dev OpsDevOps

Page 58: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

There is no single ‘right’ team topology, but several ‘bad’

topologies for any one organisation

Page 59: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Guidelines for team design

Page 60: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Collaboration vs X-as-a-Service

Collaboration X-as-a-Service

devo

psto

po

logie

s.c

om

Page 61: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Collaboration vs X-as-a-Service

Collaboration X-as-a-Service

devo

psto

po

logie

s.c

om

Rapid discoveryNo hand-offs

Comms overheads?

Ownership clarityLess context needed

Slower innovation?

Page 62: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Supporting & Business Domain

Supporting Business Domain

devo

psto

po

logie

s.c

om

Page 63: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Inner Topologies

Collaboration XaaS

Within any group there may be internal collaborations AND other X-as-a-Service (XaaS) relationships

devo

psto

po

logie

s.c

om

Page 64: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team types

Component team

Platform / ’substrate’ team

Supporting / ‘productivity’ team

Product/Feature team

devo

psto

po

logie

s.c

om

Page 65: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team configurationd

evo

psto

po

logie

s.c

om

Platform / ’substrate’ team

Product/Feature team

Page 66: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature teamd

evo

psto

po

logie

s.c

om

Page 67: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature team

Supporting / ‘productivity’ team

devo

psto

po

logie

s.c

om

Page 68: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Discovery vs. Predictability

Team 1

Team 2

Team N

Discovery, rapid learning

Predictable delivery

devo

psto

po

logie

s.c

om

Page 69: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Established platform (PaaS)

Predictable delivery

devo

psto

po

logie

s.c

om

Page 70: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Evolution of team topologiesd

evo

psto

po

logie

s.c

om

DISCOVER ESTABLISH

Page 71: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Evolution of team topologies

Team 2

Discover Discover

Team N

Team 3

Use

Use

devo

psto

po

logie

s.c

om

Team 1

Establish

Establish

Page 72: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Evolve different team topologies for different parts of

the organisation at different times to match the team

purpose and context

Page 73: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Summary

Page 74: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Front-end developers

Back-end developers

A

B

A B

Page 75: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Design the organisation architecture

to produce the right software architecture

Page 76: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

“stress impacts teamperformance … by narrowing or

weakening the team-level perspective required foreffective team behavior.”

– Driskell et al, 1999Group Dynamics: Theory, Research, and Practice 1999, Vol. 3, No. 4,291-302

Page 77: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Match the team responsibility to the cognitive load that the

team can handle

Page 78: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

DevOpsTopologies.com

Page 79: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

There is no single ‘right’ team topology, but several ‘bad’

topologies for any one organisation

Page 80: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature team

Supporting / ‘productivity’ team

devo

psto

po

logie

s.c

om

Page 81: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Evolution of team topologies

Team 2

Discover Discover

Team N

Team 3

Use

Use

devo

psto

po

logie

s.c

om

Team 1

Establish

Establish

Page 82: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Evolve different team topologies for different parts of

the organisation at different times to match the team

purpose and context

Page 83: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Caution

Page 84: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Team topologies alone will not

produce effective software systems

Page 85: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Also needed: culture, good engineering,

sane funding models, clarity of business vision

Page 86: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Safer, more rapid changes to

software systems

(Business Agility)

Page 87: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

teamtopologies.com

Upcoming book:

Team Topologies for effective software systems

by Matthew Skelton & Manuel Pais

Page 88: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

Organisation design for effective software systemsTutorial / Workshop

Weds 25 October 2017, London

https://ti.to/skelton-thatcher-consulting

20% discounton tickets:

"FRIEND20"

Page 89: How and why to design your teams for modern software systems - IDinLondon meetup - Oct 2017

thank you

Matthew Skelton & Manuel Pais@SkeltonThatcher

skeltonthatcher.com