+ All Categories
Home > Software > How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich...

How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich...

Date post: 16-Apr-2017
Category:
Upload: skelton-thatcher-consulting-ltd
View: 3,934 times
Download: 0 times
Share this document with a friend
87
Matthew Skelton | Skelton Thatcher Consulting How and why to design your teams for modern software systems 06 Dec 2016, Munich, DE - #DevOpsCon
Transcript
Page 1: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Matthew Skelton | Skelton Thatcher Consulting

How and why to design your teams for modern software systems06 Dec 2016, Munich, DE - #DevOpsCon

Page 2: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

About meMatthew Skelton

@matthewpskelton

Co-founder at Skelton Thatcher Consulting

skeltonthatcher.com

Page 4: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Books

Page 5: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team-first digital transformation30+ organisations

UK, US, DE, India, Chinaskeltonthatcher.com

Page 6: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016
Page 7: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

How and why to design your teams for modern software systems

Page 8: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Safer, more rapid changes to

software systems(Business Agility)

Page 9: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

TEAM

Page 10: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016
Page 11: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

TEAMcapabilities

appetite & aptitudeunderstanding

responsibilities

Page 12: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

(assumption)the team is stable, slowly changing, and long-lived

#NoProjects

Page 13: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Conway’s Law(or Conway’s Heuristic)

Page 14: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

“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 15: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

“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 16: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

“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 17: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

homomorphic force

(#Conway #Yawnoc)HT @allankellynet

(same) (shape)

Page 18: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Front-end developers Back-end

developers

Page 19: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

‘Reverse Conway’Tobbe Gyllebring (@drunkcod)

Page 20: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

AB

A B

Page 21: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016
Page 22: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Design the organisation architecture

to produce the right software architecture

Page 23: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Cognitive Load for teams

Page 24: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Cognitive loadthe total amount of

mental effort being used in the working memory

(see Sweller, 1988)

Page 25: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Cognitive loadIntrinsic

Extraneous (Irrelevant )Germane (Relevant)

Page 26: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

‘Hacking Your Head’: Jo Pearce

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

@jdpearce

Page 27: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

We have SCIENCE!

Page 28: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 29: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

“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 30: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

(not just ‘pop’ science!)

Page 31: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

High-performing teams are hugely effective

Optimise for the team

Page 32: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Match the team responsibility to the

cognitive load that the team can handle

Page 33: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Real-world Team Topologies

Page 34: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

DevOpsTopologies.com

Page 35: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Development & Testing

IT Operations / Web Operations

Anti-Type

Database / DBA

DevOps activity

SRE

Component

Supporting (Tooling / Platform / Build)

Page 36: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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

Page 37: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Types

Page 38: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Type A – Separate Silos

devo

psto

polog

ies.c

om

Dev Ops

Page 39: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Type B –Separate DevOps Silo

Dev OpsDevOpsdevo

psto

polog

ies.c

om

Page 40: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 41: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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

devo

psto

polog

ies.c

om

Dev Ops

DevOps

Page 42: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Type E –DevOps as new SysAdmin team

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 43: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Type F –Ops embedded in a Dev Team

HT: Matt Franz (@seclectech)

devo

psto

polog

ies.c

om

Dev

Ops

DevOps

Page 44: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Anti-Type G – Dev-DBA gap!

devo

psto

polog

ies.c

om

Dev OpsDBA

Page 45: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Types

Page 46: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 1 – Smooth Collaboration

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 47: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 2 – Fully Embedded

devo

psto

polog

ies.c

om

Dev Ops

Page 48: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 3 –Infrastructure-as-a-Service

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 49: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 4 – DevOps-as-a-Service

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 50: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 5 –Temporary DevOps Team

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 51: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 6 –‘Facilitating’ DevOps Team

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 52: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 7 – SRE Team (Google)

SRE

HT: @kwdhinde

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 53: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 8 –‘Just run my Containers’

HT: @jascbu

devo

psto

polog

ies.c

om

Dev OpsDevOps

Page 54: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 9 – DB capability in Dev

DBADB Devdevo

psto

polog

ies.c

om

Dev OpsDevOps

Page 55: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Type 10 – DB as a Service

DBaaSDB Devdevo

psto

polog

ies.c

om

Dev OpsDevOps

Page 56: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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

‘bad’ topologies for any one organisation

Page 57: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Guidelines for team design

Page 58: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Collaboration vs X-as-a-Service

Collaboration X-as-a-Service

devo

psto

polog

ies.c

om

Page 59: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Collaboration vs X-as-a-Service

Collaboration X-as-a-Service

devo

psto

polog

ies.c

om

Rapid discoveryNo hand-offsComms overheads?

Ownership clarityLess context neededSlower innovation?

Page 60: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Supporting & Business Domain

Supporting Business Domain

devo

psto

polog

ies.c

om

Page 61: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Inner Topologies

Collaboration XaaS

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

devo

psto

polog

ies.c

om

Page 62: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team types

Component team

Platform / ’substrate’ team

Supporting / ‘productivity’ team

Product/Feature team

devo

psto

polog

ies.c

om

Page 63: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team configurationde

vops

topo

logies

.com

Platform / ’substrate’ team

Product/Feature team

Page 64: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature team

devo

psto

polog

ies.c

om

Page 65: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature team

Supporting / ‘productivity’ team

devo

psto

polog

ies.c

om

Page 66: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016
Page 67: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

https://twitter.com/EricMinick/status/517335119330172930

Page 68: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Discovery vs. Predictability

Team 1

Team 2

Team N

Discovery, rapid learning

Predictable delivery

devo

psto

polog

ies.c

om

Page 69: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Established platform (PaaS)

Predictable delivery

devo

psto

polog

ies.c

om

Page 70: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Evolution of team topologies

devo

psto

polog

ies.c

om

DISCOVER ESTABLISH

Page 71: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Evolution of team topologies

Team 2

Discover Discover

Team N

Team 3

Use

Usedevo

psto

polog

ies.c

om

Team 1

Establish

Establish

Page 72: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

Summary

Page 74: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Front-end developers

Back-end developers

A

B

A B

Page 75: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Design the organisation architecture

to produce the right software architecture

Page 76: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

“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 - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

DevOpsTopologies.com

Page 79: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

Team configuration

Component team

Platform / ’substrate’ team

Product/Feature team

Supporting / ‘productivity’ team

devo

psto

polog

ies.c

om

Page 81: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Evolution of team topologies

Team 2

Discover Discover

Team N

Team 3

Use

Usedevo

psto

polog

ies.c

om

Team 1

Establish

Establish

Page 82: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

Caution

Page 84: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

Team topologies alone will not produce effective

software systems

Page 85: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

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 - Matthew Skelton- DevOpsCon Munich 2016

teamtopologies.com

Upcoming book:

Team Topologies for effective software systems

by Matthew Skelton & Manuel Pais

Page 87: How and why to design your Teams for modern Software Systems - Matthew Skelton- DevOpsCon Munich 2016

thank you

Matthew Skelton@matthewpskelton

skeltonthatcher.com


Recommended