SlideShare a Scribd company logo
Models, Sketches and Everything In-Between
Simon Brown 	 Independent

Eoin Woods	 	 Endava
Welcome
• It’s hello from me
• Simon Brown, Independent
• And hello from him
• Eoin Woods, Endava
Our Agenda
• Simon Says …
• Eoin Says …
• Questions and Queries:
	 Q1. Modelling - Why Bother?
	 Q2. Models and Agility
	 Q3. How to Do It?
	 Q4. UML - Worth the Hassle?
	 Q5. Modelling in the Large vs the Small
• Summary and Conclusions
Background
• We’ve been talking about software modelling for ages
• We both think its a good idea (in moderation)
• Simon likes boxes and lines, Eoin likes UML (sort of)
• Simon has C4, Eoin has V&P (with Nick Rozanski)
• We’ve both inflicted a book on the world …
• We’d like to work out what the real answer is today
• We’ve got questions, but yours are probably better
The Point of Modelling
• Simon:
• How do you understand what you’re building?
• How do you explain it to the rest of the team?
• The trick is not getting stuck in analysis paralysis.
• Eoin:
• Main problem with not modelling is lack of intellectual control
• Main problem with modelling is believing that modelling is an
end in itself
Some Opinions
Simon Says …
How do we

communicate

software architecture?
9 out of 10 people

don’t use UML

(in my experience)
It’s usually difficult to
show the entire design on
a singlediagram
Different viewsof
the design can be used to
manage complexity and
highlight different aspects
of the solution
Models, Sketches and Everything In Between
Do the names

of those views make
sense?
Development vs Physical
Process vs Functional
Conceptual vs Logical
Development vs Implementation
Physical vs Implementation
Physical vs Deployment
Logical and
development

views are often

separated
Models, Sketches and Everything In Between
Models, Sketches and Everything In Between
In my experience,

software teams
aren’t able to

effectively
communicate

the software
architecture

of their systems
Abstraction

is about reducing detail

rather than creating a different representation
Abstractions help us
reason about

a big and/or complex

software system
A common set of
abstractions

is more important than

a common notation
Sketches are maps

that help a team navigate a complex codebase
Static

Model

(at different levels

of abstraction)
Runtime/
Behavioural
Deployment
Infrastructure
Operation

& Support
Data
Does your code reflect the

abstractions

that you think about?
My focus is primarily on the

static structure

of software, which is ultimately about
code
Software developers are
the most important
stakeholders
of software architecture
Eoin Says …
The point is that …
• Some models worth creating are worth
preserving
• Models capture things that code can’t
• Sketches the place to start … but limited
• Models communicate, so ground rules are
useful - UML is a good base to work from
What is modelling?
• A model is any simplified representation of reality
• a spreadsheet of data
• a Java domain model
• a UML model
• Modelling represents concepts to allow some
aspect of them to be understood
Why create models?
Communicate
Understand
Record
Models vs diagrams
• A diagram is a purely visual representation
• A model contains definitions (and possibly a diagram)
• In UML terms diagrams provide views of a model
Types of Model
Low Detail
High Detail
High
Precision
Low
Precision
Uses for models
• Consistency
• change once, its changed everywhere
• Reporting
• ask your model a question
• “what is connected to the Flange Modulator Service?”
• Checking and Validation
• do I have a deployment node for every piece of the system?
• how complicated is the system going to be?
• Sharing information
• generate many views of a single model
• Powerpoint, wiki, tables, ...
An Analogy
• Would you use JSON to represent your shopping list?
• I personally use a PostIt™ note
• Would you hold system configuration in free text?
• I personally would rather XML or JSON
• Long lived models are valuable … store them as data
• UML is a practical option for machine readable models
Some Questions and Answers
Q1. Modelling - Why Bother?
• Simon:
• A model makes it easy to step back and see the big picture.
• A model aids communication, inside and outside of the team.
• Modelling provides a ubiquitous language with which to
describe software.
• Eoin:
• Modelling helps you understand what you have and need
• You can’t understand all of the detail anyway
• Code is in fact a model, we just don’t think of it as such
Q2. Modelling and Agility
• Simon:
• Good communication helps you move fast.
• A model provides long-lived documentation.
• A model provides the basis for structure, vision and risks.
• Eoin:
• No fundamental conflict - “model with a purpose” (Daniels)
• Working software over comprehensive documentation
• Agility should be for the long haul, not this sprint
• Can you know all the feed dependencies from your system?
Q3. How to Do It?
• Simon:
• Start with the big picture, and work into the detail.
• Stop when you get to a “sufficient” level of detail.
• Include technology choices!
• Eoin:
• Start small, start with a definite purpose
• Start with a whiteboard or a napkin or an A4 sheet
• Skip Visio and Omnigraffle … get a tool, get a model
Q4. UML - Is It Worth the Hassle?
• Simon:
• No.
• Eoin:
• Maybe … depends what you need
• Would you write a shopping list in JSON? Would you store
configuration settings in a free text file?
• If you have long lived models and want to use the data then
yes, highly tailored UML is worth the effort
Q5. Modelling in the Large vs the Small
• Simon:
• Sketches will quickly become out of date.
• Reverse-engineering tends to lead to cluttered diagrams.
• Many small diagrams are better than one uber-diagram.
• Eoin:
• A large system means you need help from a computer to
understand it
• However large your model, the code is still “the truth”
• Modelling languages scale like programming languages
How We Do It
Simon
A software system is made up of one or more containers,
each of which contains one or more components,
which in turn are implemented by one or more classes.
Class Class Class
Component Component Component
Container
(e.g. web application, application server, standalone application,
browser, database, file system, etc)
Cont
(e.g. web application, applicatio
browser, databas
ainer
server, standalone application,
file system, etc)
Software System
The C4 model
Classes (or Code)
Component implementation details
System Context
The system plus users and system dependencies
Containers
The overall shape of the architecture and technology choices
Components
Components and their interactions within a container
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Eoin
Common Types of Models
• System Environment - context view
• Run Time Structure - functional view
• Software meets Infrastructure - deployment view
• Stored and In-Transit Data - information view
The Viewpoints and Perspectives model
Context View

(where the system lives)
Functional View

(runtime structure)
Information View

(data moving & at rest )
Development View

(code structures)
Concurrency View

(processes and threads)
Deployment View

(system meets infra)
Operational View

(keeping it running)
Context View
Component diagram witha single “component” -your system
External systemsrepresented as<<external>> components
Interactions with externalsystems using namedassociations
User groups representedby actors
Functional View
Packages (orcomponents) for runtimecontainers
Stereotyped componentsfor your software elements
Usage dependencies toshow possiblecommunication paths(again stereotype)
Classes for
connectors
Deployment View
Show the hosts you needto run your components
Execution environmentscan be used to show theruntime containers youuse for your components
Packages can showlocations or othergroupings of hosts
Artifacts are used to showwhere your systembinaries reside for
execution
Summary and Conclusions
What We Have Talked About
• Modelling is terrifically useful
• communication
• clarity
• analysis
• Many ways of doing it
• napkins to UML tools
• The key point is to get value from what you do
• don’t get stuck in “analysis paralysis”
Eoin Woods

www.eoinwoods.info

@eoinwoodz
Questions?
Simon Brown

www.codingthearchitecture.com

@simonbrown

More Related Content

What's hot (18)

PDF
Reducing inertia in organizations is the key to a successful DevOps transition
Joep Piscaer
 
PPTX
DevOps
Dawn Keenan
 
PPTX
The Path to Digital Engineering
Elizabeth Steiner
 
PPTX
Being Elastic -- Evolving Programming for the Cloud
Randy Shoup
 
PDF
Common WebApp Vulnerabilities and What to Do About Them
Eoin Woods
 
PDF
Digitization solutions - A new breed of software
Uwe Friedrichsen
 
PPTX
Software requirement specification handouts
city university of science and information technology
 
PPTX
Cultivating Your Design Heuristics
Rebecca Wirfs-Brock
 
PPT
Nimble Framework - Software architecture and design in agile era - PSQT Template
tjain
 
PDF
Se handbookv3
SvioJnior1
 
PDF
Microservices for Mortals by Bert Ertman at Codemotion Dubai
Codemotion Dubai
 
PPTX
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Sarah Dutkiewicz
 
PPTX
Embracing OSS in the enterprise
cyberzeddk
 
PPTX
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
PPTX
Evaluating Blockchain Companies
Mike Slinn
 
PPTX
The five expertise of a software architect
Lior Bar-On
 
PPTX
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Randy Shoup
 
PPTX
Tech leaders Presntation
RootGate
 
Reducing inertia in organizations is the key to a successful DevOps transition
Joep Piscaer
 
DevOps
Dawn Keenan
 
The Path to Digital Engineering
Elizabeth Steiner
 
Being Elastic -- Evolving Programming for the Cloud
Randy Shoup
 
Common WebApp Vulnerabilities and What to Do About Them
Eoin Woods
 
Digitization solutions - A new breed of software
Uwe Friedrichsen
 
Software requirement specification handouts
city university of science and information technology
 
Cultivating Your Design Heuristics
Rebecca Wirfs-Brock
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
tjain
 
Se handbookv3
SvioJnior1
 
Microservices for Mortals by Bert Ertman at Codemotion Dubai
Codemotion Dubai
 
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Sarah Dutkiewicz
 
Embracing OSS in the enterprise
cyberzeddk
 
Service Architectures At Scale - QCon London 2015
Randy Shoup
 
Evaluating Blockchain Companies
Mike Slinn
 
The five expertise of a software architect
Lior Bar-On
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Randy Shoup
 
Tech leaders Presntation
RootGate
 

Similar to Models, Sketches and Everything In Between (20)

PPT
Chapter4_interaction design process_uidppt.ppt
jaymalachavan
 
PPT
Chapter4_protyping and construction_uidppt.ppt
jaymalachavan
 
PPTX
Creating Systems from Concept Models
Jim Logan
 
PPTX
Simulating systems: Delivering digital difference
Brightwave Group
 
PPTX
The Role of the Architect
Jonathan Holloway
 
PDF
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
TheFamily
 
PPTX
CPP02 - The Structure of a Program
Michael Heron
 
PDF
Binary crosswords
Laurent Cerveau
 
PPTX
Human interface desin presentation (edited).pptx
NishimwePrince
 
PPTX
Software Design
Ahmed Misbah
 
PPTX
01_IT4557.pptx
johnmichael314688
 
DOCX
Computer Applications for Managers Lumen Learning
LynellBull52
 
PDF
Agile Software Development
Ahmet Bulut
 
PDF
CMS Crash Course!
TechSoup Canada
 
PPTX
ELMSLN @ OpenEd 14
btopro
 
PPTX
Cs690 object oriented_software_engineering_team01_ report
Khushboo Wadhwani
 
PDF
L16 Documenting Software
Ólafur Andri Ragnarsson
 
PDF
Write code and find a job
Yung-Yu Chen
 
PPTX
Design Patterns - General Introduction
Asma CHERIF
 
PPTX
What is the Future of Systems Engineering?
Elizabeth Steiner
 
Chapter4_interaction design process_uidppt.ppt
jaymalachavan
 
Chapter4_protyping and construction_uidppt.ppt
jaymalachavan
 
Creating Systems from Concept Models
Jim Logan
 
Simulating systems: Delivering digital difference
Brightwave Group
 
The Role of the Architect
Jonathan Holloway
 
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
TheFamily
 
CPP02 - The Structure of a Program
Michael Heron
 
Binary crosswords
Laurent Cerveau
 
Human interface desin presentation (edited).pptx
NishimwePrince
 
Software Design
Ahmed Misbah
 
01_IT4557.pptx
johnmichael314688
 
Computer Applications for Managers Lumen Learning
LynellBull52
 
Agile Software Development
Ahmet Bulut
 
CMS Crash Course!
TechSoup Canada
 
ELMSLN @ OpenEd 14
btopro
 
Cs690 object oriented_software_engineering_team01_ report
Khushboo Wadhwani
 
L16 Documenting Software
Ólafur Andri Ragnarsson
 
Write code and find a job
Yung-Yu Chen
 
Design Patterns - General Introduction
Asma CHERIF
 
What is the Future of Systems Engineering?
Elizabeth Steiner
 
Ad

More from Eoin Woods (9)

PDF
API Vulnerabilties and What to Do About Them
Eoin Woods
 
PDF
Secure by Design - Security Design Principles for the Working Architect
Eoin Woods
 
PDF
A Breathless Tour of Blockchain
Eoin Woods
 
PDF
Serverless Computing for the Inquiring Mind
Eoin Woods
 
PDF
Using Software Architecture Principles in Practice
Eoin Woods
 
PDF
Secure by Design - Security Design Principles for the Rest of Us
Eoin Woods
 
PDF
Software Architecture as Systems Dissolve
Eoin Woods
 
PDF
Getting Your System to Production and Keeping it There
Eoin Woods
 
PDF
Deferring the Last Responsible Moment
Eoin Woods
 
API Vulnerabilties and What to Do About Them
Eoin Woods
 
Secure by Design - Security Design Principles for the Working Architect
Eoin Woods
 
A Breathless Tour of Blockchain
Eoin Woods
 
Serverless Computing for the Inquiring Mind
Eoin Woods
 
Using Software Architecture Principles in Practice
Eoin Woods
 
Secure by Design - Security Design Principles for the Rest of Us
Eoin Woods
 
Software Architecture as Systems Dissolve
Eoin Woods
 
Getting Your System to Production and Keeping it There
Eoin Woods
 
Deferring the Last Responsible Moment
Eoin Woods
 
Ad

Recently uploaded (20)

PDF
Australian Enterprises Need Project Service Automation
Navision India
 
PPTX
SAP Public Cloud PPT , SAP PPT, Public Cloud PPT
sonawanekundan2024
 
PDF
Message Level Status (MLS): The Instant Feedback Mechanism for UAE e-Invoicin...
Prachi Desai
 
PDF
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
PDF
How AI in Healthcare Apps Can Help You Enhance Patient Care?
Lilly Gracia
 
PDF
Show Which Projects Support Your Strategy and Deliver Results with OnePlan df
OnePlan Solutions
 
PDF
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
PPT
Brief History of Python by Learning Python in three hours
adanechb21
 
PDF
Odoo Customization Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
PDF
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
PDF
Troubleshooting Virtual Threads in Java!
Tier1 app
 
PDF
Top 10 AI Use Cases Every Business Should Know.pdf
nicogonzalez1075
 
PPTX
Cutting Optimization Pro 5.18.2 Crack With Free Download
cracked shares
 
PDF
chapter 5.pdf cyber security and Internet of things
PalakSharma980227
 
PDF
Dialora AI Voice Agent for Customer Support
Dialora. Ai
 
PDF
Optimizing Tiered Storage for Low-Latency Real-Time Analytics at AI Scale
Alluxio, Inc.
 
PPTX
Transforming Lending with IntelliGrow – Advanced Loan Software Solutions
Intelli grow
 
PDF
Infrastructure planning and resilience - Keith Hastings.pptx.pdf
Safe Software
 
PPTX
Odoo Migration Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
PDF
Meet in the Middle: Solving the Low-Latency Challenge for Agentic AI
Alluxio, Inc.
 
Australian Enterprises Need Project Service Automation
Navision India
 
SAP Public Cloud PPT , SAP PPT, Public Cloud PPT
sonawanekundan2024
 
Message Level Status (MLS): The Instant Feedback Mechanism for UAE e-Invoicin...
Prachi Desai
 
AI Image Enhancer: Revolutionizing Visual Quality”
docmasoom
 
How AI in Healthcare Apps Can Help You Enhance Patient Care?
Lilly Gracia
 
Show Which Projects Support Your Strategy and Deliver Results with OnePlan df
OnePlan Solutions
 
SAP GUI Installation Guide for Windows | Step-by-Step Setup for SAP Access
SAP Vista, an A L T Z E N Company
 
Brief History of Python by Learning Python in three hours
adanechb21
 
Odoo Customization Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
How Attendance Management Software is Revolutionizing Education.pdf
Pikmykid
 
Troubleshooting Virtual Threads in Java!
Tier1 app
 
Top 10 AI Use Cases Every Business Should Know.pdf
nicogonzalez1075
 
Cutting Optimization Pro 5.18.2 Crack With Free Download
cracked shares
 
chapter 5.pdf cyber security and Internet of things
PalakSharma980227
 
Dialora AI Voice Agent for Customer Support
Dialora. Ai
 
Optimizing Tiered Storage for Low-Latency Real-Time Analytics at AI Scale
Alluxio, Inc.
 
Transforming Lending with IntelliGrow – Advanced Loan Software Solutions
Intelli grow
 
Infrastructure planning and resilience - Keith Hastings.pptx.pdf
Safe Software
 
Odoo Migration Services by CandidRoot Solutions
CandidRoot Solutions Private Limited
 
Meet in the Middle: Solving the Low-Latency Challenge for Agentic AI
Alluxio, Inc.
 

Models, Sketches and Everything In Between

  • 1. Models, Sketches and Everything In-Between Simon Brown Independent Eoin Woods Endava
  • 2. Welcome • It’s hello from me • Simon Brown, Independent • And hello from him • Eoin Woods, Endava
  • 3. Our Agenda • Simon Says … • Eoin Says … • Questions and Queries: Q1. Modelling - Why Bother? Q2. Models and Agility Q3. How to Do It? Q4. UML - Worth the Hassle? Q5. Modelling in the Large vs the Small • Summary and Conclusions
  • 4. Background • We’ve been talking about software modelling for ages • We both think its a good idea (in moderation) • Simon likes boxes and lines, Eoin likes UML (sort of) • Simon has C4, Eoin has V&P (with Nick Rozanski) • We’ve both inflicted a book on the world … • We’d like to work out what the real answer is today • We’ve got questions, but yours are probably better
  • 5. The Point of Modelling • Simon: • How do you understand what you’re building? • How do you explain it to the rest of the team? • The trick is not getting stuck in analysis paralysis. • Eoin: • Main problem with not modelling is lack of intellectual control • Main problem with modelling is believing that modelling is an end in itself
  • 9. 9 out of 10 people don’t use UML (in my experience)
  • 10. It’s usually difficult to show the entire design on a singlediagram Different viewsof the design can be used to manage complexity and highlight different aspects of the solution
  • 12. Do the names of those views make sense? Development vs Physical Process vs Functional Conceptual vs Logical Development vs Implementation Physical vs Implementation Physical vs Deployment
  • 16. In my experience, software teams aren’t able to effectively communicate the software architecture of their systems
  • 17. Abstraction is about reducing detail rather than creating a different representation
  • 18. Abstractions help us reason about a big and/or complex software system
  • 19. A common set of abstractions is more important than a common notation
  • 20. Sketches are maps that help a team navigate a complex codebase
  • 21. Static Model (at different levels of abstraction) Runtime/ Behavioural Deployment Infrastructure Operation & Support Data
  • 22. Does your code reflect the abstractions that you think about?
  • 23. My focus is primarily on the static structure of software, which is ultimately about code
  • 24. Software developers are the most important stakeholders of software architecture
  • 26. The point is that … • Some models worth creating are worth preserving • Models capture things that code can’t • Sketches the place to start … but limited • Models communicate, so ground rules are useful - UML is a good base to work from
  • 27. What is modelling? • A model is any simplified representation of reality • a spreadsheet of data • a Java domain model • a UML model • Modelling represents concepts to allow some aspect of them to be understood
  • 29. Models vs diagrams • A diagram is a purely visual representation • A model contains definitions (and possibly a diagram) • In UML terms diagrams provide views of a model
  • 30. Types of Model Low Detail High Detail High Precision Low Precision
  • 31. Uses for models • Consistency • change once, its changed everywhere • Reporting • ask your model a question • “what is connected to the Flange Modulator Service?” • Checking and Validation • do I have a deployment node for every piece of the system? • how complicated is the system going to be? • Sharing information • generate many views of a single model • Powerpoint, wiki, tables, ...
  • 32. An Analogy • Would you use JSON to represent your shopping list? • I personally use a PostIt™ note • Would you hold system configuration in free text? • I personally would rather XML or JSON • Long lived models are valuable … store them as data • UML is a practical option for machine readable models
  • 34. Q1. Modelling - Why Bother? • Simon: • A model makes it easy to step back and see the big picture. • A model aids communication, inside and outside of the team. • Modelling provides a ubiquitous language with which to describe software. • Eoin: • Modelling helps you understand what you have and need • You can’t understand all of the detail anyway • Code is in fact a model, we just don’t think of it as such
  • 35. Q2. Modelling and Agility • Simon: • Good communication helps you move fast. • A model provides long-lived documentation. • A model provides the basis for structure, vision and risks. • Eoin: • No fundamental conflict - “model with a purpose” (Daniels) • Working software over comprehensive documentation • Agility should be for the long haul, not this sprint • Can you know all the feed dependencies from your system?
  • 36. Q3. How to Do It? • Simon: • Start with the big picture, and work into the detail. • Stop when you get to a “sufficient” level of detail. • Include technology choices! • Eoin: • Start small, start with a definite purpose • Start with a whiteboard or a napkin or an A4 sheet • Skip Visio and Omnigraffle … get a tool, get a model
  • 37. Q4. UML - Is It Worth the Hassle? • Simon: • No. • Eoin: • Maybe … depends what you need • Would you write a shopping list in JSON? Would you store configuration settings in a free text file? • If you have long lived models and want to use the data then yes, highly tailored UML is worth the effort
  • 38. Q5. Modelling in the Large vs the Small • Simon: • Sketches will quickly become out of date. • Reverse-engineering tends to lead to cluttered diagrams. • Many small diagrams are better than one uber-diagram. • Eoin: • A large system means you need help from a computer to understand it • However large your model, the code is still “the truth” • Modelling languages scale like programming languages
  • 39. How We Do It
  • 40. Simon
  • 41. A software system is made up of one or more containers, each of which contains one or more components, which in turn are implemented by one or more classes. Class Class Class Component Component Component Container (e.g. web application, application server, standalone application, browser, database, file system, etc) Cont (e.g. web application, applicatio browser, databas ainer server, standalone application, file system, etc) Software System
  • 42. The C4 model Classes (or Code) Component implementation details System Context The system plus users and system dependencies Containers The overall shape of the architecture and technology choices Components Components and their interactions within a container
  • 47. Eoin
  • 48. Common Types of Models • System Environment - context view • Run Time Structure - functional view • Software meets Infrastructure - deployment view • Stored and In-Transit Data - information view
  • 49. The Viewpoints and Perspectives model Context View
 (where the system lives) Functional View
 (runtime structure) Information View
 (data moving & at rest ) Development View
 (code structures) Concurrency View
 (processes and threads) Deployment View
 (system meets infra) Operational View
 (keeping it running)
  • 50. Context View Component diagram witha single “component” -your system External systemsrepresented as<<external>> components Interactions with externalsystems using namedassociations User groups representedby actors
  • 51. Functional View Packages (orcomponents) for runtimecontainers Stereotyped componentsfor your software elements Usage dependencies toshow possiblecommunication paths(again stereotype) Classes for connectors
  • 52. Deployment View Show the hosts you needto run your components Execution environmentscan be used to show theruntime containers youuse for your components Packages can showlocations or othergroupings of hosts Artifacts are used to showwhere your systembinaries reside for execution
  • 54. What We Have Talked About • Modelling is terrifically useful • communication • clarity • analysis • Many ways of doing it • napkins to UML tools • The key point is to get value from what you do • don’t get stuck in “analysis paralysis”