1. If your team is an object,
what is its API?
(Object-Oriented Team Design)
Andrew Annett
@akannett
November 30, 2017
2. PLEASE NOTE
SLIDES ≠ PRESENTATION
• These slides are designed to be viewed in
conjunction with a human being talking and
interacting with you.
• They may not make much sense to you if you
were not at the live session.
5. The Simple idea:
Let’s talk with teams about
organizing work in terms they use
every day – object-oriented
design.
It’s a simple idea but not a small
one...
6. Why is this important to software?
…object-oriented design is
fundamentally different … it
produces
software architectures
that are largely outside the realm of
structured design culture.
- Grady Booch, 1991
7. Why is this important to teams?
…object-oriented design is
fundamentally different … it
produces
organizational architectures
that are largely outside the realm of
structured design culture.
- Me, 2017
8. Private Kitchen methods + knowledgeMessagesPublic Restaurant Interface
Diner – Kitchen Object Relationship
Relationship is the infrastructure for tasks
13. “You don’t send messages
because you have objects, you
have objects because you send
messages” – Sandi Metz
14. An object's autonomy doesn't
extend to choices
in shared
standards and
protocols.
Methods
Variables
Interface
15. An object's autonomy doesn't
extend to choices
in shared
standards and
protocols.
Methods
Variables
Interface
Team objects
coordinate via
behavioural,
technical, and
cultural standards.
16. What is an API*?
Technically, an API is a set
of rules that two sides of
an interaction agree to
follow. It’s implemented as
a public INTERFACE.
* Application Programming Interface
17. The value of an API
It separates how an object works
from the way it’s used
It makes future (internal) change
easier
! Bypassing it to depend on a
private method is a form of technical
(and organizational) debt
18. Taking advantage of an API
Create public interfaces that allow
senders to get (or do) what they
want without knowing how your
team implements its behavior.
20. Work on this initiative
Add this team memberPOST
Typical RESTful messages sent to Teams
21. Work on this initiative
Add this team member
Do this thing differently
Can you also do this thing?
POST
PUT
Typical RESTful messages sent to Teams
22. Work on this initiative
Add this team member
Do this thing differently
Can you also do this thing?
What are you working on?
When will you be done?
What skillsets are needed?
Who is dependent on you?
What skillsets does your team have?
What risks are you accepting?
What are your dependencies?
What will be delivered?
How is team morale?
POST
GET
PUT
Typical RESTful messages sent to Teams
23. Work on this initiative
Add this team member
Do this thing differently
Can you also do this thing?
What are you working on?
When will you be done?
What skillsets are needed?
Who is dependent on you?
What skillsets does your team have?
What risks are you accepting?
What are your dependencies?
What will be delivered?
How is team morale?
Stop working on current item(s)
Reduce team size
POST
GET
PUT
DELETE
Typical RESTful messages sent to Teams
24. Work on this initiative
Add this team member
Do this thing differently
Can you also do this thing?
What are you working on?
When will you be done?
What skillsets are needed?
Who is dependent on you?
What skillsets does your team have?
What risks are you accepting?
What are your dependencies?
What will be delivered?
How is team morale?
Stop working on current item(s)
Reduce team size
POST
GET
PUT
DELETE
Story map, options board
Working Agreement
Story map, options board
Release plan
Story map
Skills matrix
Release plan
Risk assessment
Defect density plot
Throughput histogram
Dependency graph
Cumulative Flow Diagram
Happiness Index
Dependency graph
Skills matrix
Useful METHODS to respond to messages
35. If you’re a reader:
David A Taylor
Business Engineering
with Object Technology
Dave Grey
The Connected
Company
David West
Object Thinking
Sandi Metz
Practical Object-
Oriented Design in
Ruby
36. Helpful OOD principles
S ingle Responsibility….
L iscov Substitution…
O pen/Closed (Extension/Modification)…
D ependency Inversion…
I nterface segregation……………
37. Unhelpful non-OOD principles
S ingleton
T ight Coupling
U ntestable
P remature Optimization
I ndescriptive naming
D uplication