Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual...
Transcript of Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual...
![Page 1: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/1.jpg)
Reduce cognitiveload with yoursoftware architechture
David Sundelius
@davidsundelius
![Page 2: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/2.jpg)
Bad systems
Neglected UI, security, stability, performance andaccessability
Why?
![Page 3: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/3.jpg)
Definition: Cognitive load
”Cognitive load refers to the total amount of mental effortbeing used in the working memory”
• Intrinsic
• Extraneous
• Germane
![Page 4: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/4.jpg)
Cognitive overload
• Resignation
• Stereotypifying
• Psychological issues
• Individual differences
![Page 5: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/5.jpg)
Architecture
• ”…fundamental structures of a software system…”
• Decisions made to optimize certain parts of the software
• Examples on impacts of cognitive load
![Page 6: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/6.jpg)
Too low/high test coverage
• NOT a great way of measuring quality
• Too low: worry about braking vital fuctionality
• Too high: maintaining tests becomes an issue
![Page 7: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/7.jpg)
Overdocumentation
• Is it updated?
• Traceability
• Remembering what’s important
![Page 8: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/8.jpg)
Manual repetative work
• Deployability
• Testability
• Handovers
![Page 9: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/9.jpg)
Environment overload
• In what state is the AT-environment at the moment?
• Is it going to work together with feature X?
• Will this run in production?
AT
ST
Regression
Sandbox
Develop
QA
Production
Pre-prod
Dev Dev
CI
Prod
![Page 10: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/10.jpg)
DRY – Shared code
• What impact will my change have?
• Is it worth the work making a change?
• Overengineering
![Page 11: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/11.jpg)
”Build for the future” - platforms
• Unused code
• Generalization
• Focusing on the future features
![Page 12: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/12.jpg)
Keep good things for later
• Is this used?
• Increases complexity
• Is it safe to change or remove?
![Page 13: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/13.jpg)
Too few/large releases
• Tracking all changes
• Maintenence after release
• Synchronization/communication
![Page 14: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/14.jpg)
Vague or implicit agreements
• Quality standards
• Interfaces
• Decision making
![Page 15: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/15.jpg)
Abstraction overload
• Verbose code
• The metaunderstanding of the abstraction
• Harder to get an overview
![Page 16: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/16.jpg)
What does this have to do withagility?
• ”Simplicity--the art of maximizing the amountof work not done--is essential.”
• ”The best architectures, requirements, and designsemerge from self-organizing teams.”
• ”Continuous attention to technical excellenceand good design enhances agility.”
![Page 17: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/17.jpg)
• Monoliths or microservices
• Cloud based or on-premises servers
• Machine learning or blockchain
Buzzwords
![Page 18: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/18.jpg)
How can we improve?
• Optimize architecture on reducing cognitive load at a team level
• Find the flow of value and organize teams and architecture
• Discuss cognitive load within the team and try experiments to reduce it
• Spread knowledge within the team (business, technical and tools)
• Simplify for the humans, not the machines
• Developers with less cognitive load -> Better quality, more technical agility
![Page 19: Reduce cognitive load with your software architechture · • Remembering what’simportant. Manual repetative work • Deployability • Testability • Handovers. Environment overload](https://reader035.fdocuments.in/reader035/viewer/2022081408/605af91c0e23b312e92a1017/html5/thumbnails/19.jpg)
Reduce cognitiveload with yoursoftware architechture
David Sundelius
@davidsundelius