The document discusses complexity in systems and interfaces. It notes that complexity is inherent in software but can be managed. It suggests that designers should focus on improving learnability and usability while reducing confusion for users. Complexity is perceived differently by various stakeholders, so the goal is to shift complexity away from end users and onto the system itself using tools and abstractions. The document advocates accepting inherent complexity, managing it for humans, and incorporating system complexity through features like adaptability.
25. Where Does Interface Complexity Come From?
complexity is the price we pay for utility
26. Fred Brooks
The complexity of software is an essential property
not an accidental one. Hence descriptions of a
software entity that abstract away its complexity
often abstract away its essence.
No Silver Bullet – Essence and Accident in Software
Engineering
27. Larry Tesler
Tesler’s Law of the Conservation of Complexity
Every application has an inherent
amount of irreducible complexity.
The only question is: who will have
to deal with it […]?
“
”
33. Managing Complexity: The Monolith
Monolith Application
API
Who pays the complexity price?
Code Maintainer
System
Maintainer
34. Managing Complexity: Microservices
Who pays the complexity price?
Code
Maintainer
System Maintainer
Microservices Application
μService
μService
μService
μService
API API
API API
35. Managing Complexity: Microservices
• Service becomes less confusing, but
system complexity increases
• Complexity cost is worthwhile
• Tools are introduced to hide (shift)
complexity
containerization
discovery
deployment
…
36. Managing Complexity: Microservices boundaries
μService
μService
μService
μService
μService
μService
client application
API API
API API API
API
37. Managing Complexity: Microservices
Who pays the complexity price?
Code
Maintainer
System Maintainer
Microservices Application
μService
μService
μService
μService
API API
API API
Client App
Developer
38. Managing Complexity: Client Applications
μService
μService
μService
μService
μService
μService
client application
API API
API API API
API
SDK
API
45. • complexity is managed by designers
• developers deal with application
complexity
46. Complexity in API Design: Pagination
response
data
page
page
page
page
page
47. Complexity in API Design: Pagination Strategies
no pagination offset and count fixed page size “smart” pagination
What are the complexity implications of pagination strategies?
48. • complexity is perceived
externally
• operators deal with operational
complexity
56. simple
Image Credits
"Ribosome-Nascent chain complex". Licensed under CC BY 3.0 via Wikipedia - http://en.wikipedia.org/wiki/File:Ribosome-
Nascent_chain_complex.png#/media/File:Ribosome-Nascent_chain_complex.png
"Sao Paulo Stock Exchange" by Rafael Matsunaga - Flickr. Licensed under CC BY 2.0 via Wikimedia Commons -
http://commons.wikimedia.org/wiki/File:Sao_Paulo_Stock_Exchange.jpg#/media/File:Sao_Paulo_Stock_Exchange.jpg
"Appearance of sky for weather forecast, Dhaka, Bangladesh" by Mohammed Tawsif Salam - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons -
http://commons.wikimedia.org/wiki/File:Appearance_of_sky_for_weather_forecast,_Dhaka,_Bangladesh.JPG#/media/File:Appearance_of_sky_for_weather_forecast
,_Dhaka,_Bangladesh.JPG
Snow Geese 03 by TexasEagle – Flickr. . Licensed under CC BY 2.0 -
http://www.flickr.com/photos/texaseagle/4206741477/sizes/o/
57. A Simpler Time
Ronnie Mitra
Director of API Design
CA API Academy
ronnie.mitra@ca.com
@mitraman
Editor's Notes
I want to focus on two major types of complexity: system complexity, which captures some of the properties of intracacy and many parts that we’ve mentioned. Also what I’m calling “cognitive complexity”, the type of complexity related to human understanding.
There are other types of complexity that we won’t discuss, for example I’m not going to talk about computational complexity – the study of the resources required to solve computational problems and the feasability of solving them. That is an interesting type of complexity, but not as releveant to the direction I want to take us today.
As I’ve said, I’m definitely not an expert in complexity. Most of what I learned about the science of complexity has come from these two books – aimed at laymen like myself. If this subject is new to you and you find it interesting, I can recommend both of these titles:
Complexity: A Very Short Introduction by John Holland
And
Complexity: A guided Tour by Melanie Mitchell
Focus on emergent behaviour here as this is the essence of systems complexity
Weather is an emergent system
Agents react/adapt
Rare to find equillibrium (steady state)
SHE: Shrink, Hide, Embody
SHE: Shrink, Hide, Embody
SHE: Shrink, Hide, Embody
SHE: Shrink, Hide, Embody
SHE: Shrink, Hide, Embody
Systems complexity is fascinating, but I want to talk about something that is more interesting to me.. Cognitive complexity.
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
SHE: Shrink, Hide, Embody
Brooks is talking specifically about programming in this essay.
Accidental complexity is the cruft. Complexity introduced because you are providing functions that are unneeded, or you haven’t been able to optimize the functions that are needed.
The accidental complexity is the type of complexity Maeda talks about subtracting.
Lawrence Gordon Tesler (born April 24, 1945) is a computer scientist who works in the field of human–computer interaction. Tesler has worked at Xerox PARC, Apple, Amazon, and Yahoo!.
He is the creator of the copy/paste interaction
He invented the law to sell the case for a framework and generic application layer within Apple. His argument was that it was better to push complexity down into the framework rather than making the user pay the price.
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
System complexity can be addressed, it is much harder to address the cognitive complexity of understanding code. i.e. this is an easier problem to solve.
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
How do committees invent – Mel Conway
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
Intro to microservices
Complexity in application: harder to learn, harder to develop, harder to change
Complexity in management: harder to model, harder to measue, harder to enforce policy
Embracing management complexity: Netflix model, celluar
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
A very product-centric view of the API lifeycle from the nordicapis team. This is also very macro – it is high level, if we go into details we find other lifecycles we need to worry about.
The frequency of the lifecycle is bound by how the products we create are consumed
We could achieve emergence
This would help with lifecycle frequency, less risk of changes