SlideShare a Scribd company logo
Filling in the gap
between realities
A guide to problem solving
for software engineers
Grokking -Thanh Dinh 26/02/2022
Agenda
What is a problem
Problem definition
Causal analysis
Trade-off
2 types of trade-off
Separation principles
Conclusion
What is a problem?
A tale of two realities
The elevator
problem
Lengthy elevator wait
People in an office building started to
complain to building management
about the long wait time for elevators.
As part of office building staff, you are
tasked with solving this problem. How
do you solve it?
Elevator problem - Quick solutions
Who has the problem? - The stakeholders
Stakeholders - Clients vs Users
What is a problem?
Perceived vs Expected Realities
Move perceived reality to expected reality
Move expected reality to perceived reality
Pull 2 realities to a middle point
Fill in the gap of residents' realities
Fill in the gap of Holistics customers' realities
Problem definition
Choosing the right problem statement to solve
A problem well-stated is a
problem half-solved.


John Dewey
Startup is about finding the
right problem to solve.


Anonymous
Problem definition
What is the problem?
What is perceived reality?
What is expected reality? Is it clear?
Who are involved in the problem?
How important is the problem?
When does the problem needs to be solved?
Is there really a problem?
Highest
abstraction
level
Problem definition should be at the highest abstraction
level that appropriately describes the situation.
Principle
The primary thing when you take a sword in
your hands is your intention to cut the enemy,
whatever the means. If you think only of
hitting, springing, striking or touching the
enemy, you will not be able actually to cut
him.


Miyamoto Musashi
Example: Holistics Analytics as Code
Lower level:
product features
Version control
Logic as code
Automated workflow
Data unit testing
Higher level: pain
points
Can't track who changed what
Unreliable dashboards
Manual, repetitive work
Vendor lock-in
Why
How
Lowest level:
technology choice
Analytics Modeling
Language (AML)
TypeScript
Redis
Postgres
Terraform/Ansible
Why
How
Ladder of abstraction: Product Design
Causal analysis
Knowing what causes the problem
The elevator
problem
Lengthy elevator wait
People in an office building started to
complain to building management
about the long wait time for elevators.
As part of office building staff, you are
tasked with solving this problem. How
do you solve it?
Causal diagram
Non-linear
causal
relationship
In many cases, the causal chain is not linear that can be
described as a tree. Changing one variable can affect itself
through cycles.
Cycles mean there's no definite root cause of the problem.
Pitfall
Causal loop diagram
Non-holistic
thinking
Company growth problem is not just a sales, marketing,
engineering, product problem, but the whole company
problem.
Usually, a problem is caused by interactions between
components or the compound effect of multiple
dimensions, not the individual parts/dimensions. There's no
single root cause to find.
Pitfall
Ishikawa (fishbone) diagram
Forget that problem is
inherently a human thing
Definition of a problem requires a person to even
be called a problem but many engineers forget
this.
Forget to choose the right
problem to solve
Engineers tend to think that "requirements" are
set in stone. In reality, most requirements may
not even make sense in the first place.
Common mistakes
Trade-off
Which one will you choose?
You face a trade-off when it
is hard to choose a solution
Thus you must have already found solutions
in order to have trade-offs
Solution
Ideality
Causal Analysis and Trade-offs
Dimensions
In SE, dimensions come from business requirements
Dimensional priorities
Talk to stakeholders to identify the most important dimensions
There are 2 types
of trade-off
Dimensional trade-off
A solution increases benefit in one dimension but
also increases harmful effect in another
dimension
Alternative trade-off
Solution 1 gives you benefit 1, solution 2 gives
you benefit 2, you can only choose either, but
you want both
Dimensional trade-off examples
More security checks will improve security but
reduce performance
🔐Security vs 🐎Performance
More tests will improve code reliability
but it will take longer to ship new
features
⛑Reliability vs 🔀Agility
Migrate to Kubernetes improves scalability
but increases infrastructure cost
🚀Scalability vs 💸Cost
It is hard to design a software that is both
powerful and user-friendly
💖User- friendliness vs ⚡Power
Alternative trade-off examples
SQL allows for complex joins but
require upfront schema design
SQL vs NoSQL
Monolithic architecture is simpler but less
scalable
Monolithic vs Microservices
Fundamental trade-off between functional
programming and OOP
Expression problem
Choose a compromise point
Find a sweet spot on the line of compromise
Resolve the trade-off
Use creative problem solving techniques to
overcome the trade-off
2 ways to deal with trade-offs
Only see one side of the trade-off
Only seeing one side of the trade-off means not seeing
the trade-off at all!
Common mistake 1
Programmers know the benefits of everything
and the trade-offs of nothing.


Architects need to understand both.
Rich Hickey
Everything in software architecture is a trade-
off.


If an architect thinks they have discovered
something that isn’t a trade-off, more likely
they just haven’t identified the trade-off yet.
Neal Ford
Opinion: Use boring technology
New
New benefits
Unknown harms
New/fancy tech
Old
Old benefits
Known harms
Boring tech
http://boringtechnology.club/
The nice thing about boringness (so
constrained) is that the capabilities of these
things are well understood. But more
importantly, their failure modes are well
understood
Dan McKinley
Not realize that trade-offs are
not set in stone
Trade-offs are hard to overcome but in many
cases, they are not set in stone. You can resolve
them through separation techniques.
Common mistake 2
The root of many trade-offs are due to couplings.
Resolve the coupling, you can resolve the trade-off
Why separation?
TRIZ separation principles
applied to Software Engineering
Break down different
requirements into separate
time group
Separation in Time
Break down different
requirements into separate
modules
Separation in Space
Break down different
requirements at the submodule
and system level
Separation between
Parts and Whole
Separation in Time
Agility/Cost vs Reliability/Security/Scalability
Separation in Space
Agility: Separate service can be
developed independently
Scalability: New service can be
connected to the common sidecar
Security/Reliability: Handled by
sidecar
Performance: Communication
overhead
Cost: Only makes sense for more
complex systems
Security/Reliability vs Agility/Scalability
Sidecar pattern
Separation between Parts and Whole
Agility/Scalability vs Reliability
Agility: Fast many unit tests without
mocks
Scalability: Functional logic can be
easily parallelized
Reliability: Only need a few reliable
integration tests, most logic covered
by unit tests
Performance:
Communication/serialization
overhead
Cost/Learnability: More time
decoupling stateless from stateful
logic
Functional core Imperative shell
Conclusion
What is a problem
A problem is a gap between perceived and expected reality of
some stakeholder
Look at a problem at its highest level of abstraction: its ultimate
goal
Causal analysis
Trade-off
Solution ideality and relationship with causal analysis
2 types of trade-off: dimensional/alternative
3 separation techniques to resolve trade-offs
Further readings
Bringing software's best practices to
analytics development
Old World New World
Software
Development
Analytics
Configure servers manually
using GUI. Deploy via FTP
upload.
Problems: Hard to maintain;
Prone to error
Configure servers using code
(Infrastructure As-Code).
Continuous Integration / Continuous
Delivery (CI/CD)
Benefits: Reliable, Scalable and
Maintainable.
Build visualizations using drag-
and-drop. Hard to reuse
business logic.
Analytics built with
software principles
Holistics
1- Define analytics
logic as code
2- Code review,
deploy with CI/CD
3- Reliable, trusted
analytics
Work with Holistics
t
Our Culture
Problem-Solving Centric: (as seen from today's talk) We
think from first principles, question assumptions, and
deliberate tradeoffs carefully.
Personal Development: We invest so that as the company
grows, the people grow.
Technical Coaching & Mentorship
Pair Programming
Learning by Teaching...
Building a language for
analytics modeling
Example
Technical
Problem
Powerful type system to enable rich
IDE functionalities
A query language that is
composable/reusable alternative to
SQL
Goal: Making analytics reusable
Solution: A type-based DSL layer that
allows mapping between business logic
to database layer.
Technical challenges:
Grokking Techtalk: Problem solving for sw engineers

More Related Content

What's hot

Grokking Techtalk #42: Engineering challenges on building data platform for M...
Grokking Techtalk #42: Engineering challenges on building data platform for M...Grokking Techtalk #42: Engineering challenges on building data platform for M...
Grokking Techtalk #42: Engineering challenges on building data platform for M...
Grokking VN
 
Sapo Microservices Architecture
Sapo Microservices ArchitectureSapo Microservices Architecture
Sapo Microservices Architecture
Khôi Nguyễn Minh
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 
Distributed Transaction in Microservice
Distributed Transaction in MicroserviceDistributed Transaction in Microservice
Distributed Transaction in Microservice
Nghia Minh
 
Introducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring StatemachineIntroducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring Statemachine
VMware Tanzu
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
Bilgin Ibryam
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking VN
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
Khôi Nguyễn Minh
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture
IT Expert Club
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
Nghia Minh
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
Radosław Maziarka
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
Divante
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리
KwangSeob Jeong
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Andriy Buday
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
Changyol BAEK
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
Bozhidar Bozhanov
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
Kashif Ali Siddiqui
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
Alberto Brandolini
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
 

What's hot (20)

Grokking Techtalk #42: Engineering challenges on building data platform for M...
Grokking Techtalk #42: Engineering challenges on building data platform for M...Grokking Techtalk #42: Engineering challenges on building data platform for M...
Grokking Techtalk #42: Engineering challenges on building data platform for M...
 
Sapo Microservices Architecture
Sapo Microservices ArchitectureSapo Microservices Architecture
Sapo Microservices Architecture
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Distributed Transaction in Microservice
Distributed Transaction in MicroserviceDistributed Transaction in Microservice
Distributed Transaction in Microservice
 
Introducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring StatemachineIntroducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring Statemachine
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture Domain Driven Design và Event Driven Architecture
Domain Driven Design và Event Driven Architecture
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 

Similar to Grokking Techtalk: Problem solving for sw engineers

Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
Ben Stopford
 
Chapter1 introduction-to-design
Chapter1 introduction-to-designChapter1 introduction-to-design
Chapter1 introduction-to-designVin Voro
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
André Agostinho
 
Managing Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software DesignManaging Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software Design
lbergmans
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
Òscar Vilaplana
 
Thoughtful Software Design
Thoughtful Software DesignThoughtful Software Design
Thoughtful Software Design
Giovanni Scerra ☃
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
lokori
 
Tech challenges in a large scale agile project
Tech challenges in a large scale agile projectTech challenges in a large scale agile project
Tech challenges in a large scale agile projectHarald Soevik
 
Software process model
Software process modelSoftware process model
Software process model
Muhammad Yousuf Abdul Qadir
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.ppt
RayonJ1
 
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
Turja Narayan Chaudhuri
 
Chapter2 framework-for-design
Chapter2 framework-for-designChapter2 framework-for-design
Chapter2 framework-for-designVin Voro
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
MuhammadTalha436
 
Lecture 1 uml with java implementation
Lecture 1 uml with java implementationLecture 1 uml with java implementation
Lecture 1 uml with java implementationthe_wumberlog
 
01lifecycles
01lifecycles01lifecycles
01lifecycles
Abdihakim Dalmar
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
Yun Zhi Lin
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
Jim Brisson
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles
sathish sak
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
Sam Nasr, MCSA, MVP
 

Similar to Grokking Techtalk: Problem solving for sw engineers (20)

Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
Chapter1 introduction-to-design
Chapter1 introduction-to-designChapter1 introduction-to-design
Chapter1 introduction-to-design
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
 
Managing Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software DesignManaging Complexity and Change with Scalable Software Design
Managing Complexity and Change with Scalable Software Design
 
Software Architecture: How Much Design?
Software Architecture: How Much Design?Software Architecture: How Much Design?
Software Architecture: How Much Design?
 
Thoughtful Software Design
Thoughtful Software DesignThoughtful Software Design
Thoughtful Software Design
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
 
Tech challenges in a large scale agile project
Tech challenges in a large scale agile projectTech challenges in a large scale agile project
Tech challenges in a large scale agile project
 
Software process model
Software process modelSoftware process model
Software process model
 
Chapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.pptChapter 3 Software Process Model.ppt
Chapter 3 Software Process Model.ppt
 
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptxDevSecOps in the Cloud from the Lens of a  Well-Architected Framework.pptx
DevSecOps in the Cloud from the Lens of a Well-Architected Framework.pptx
 
Chapter2 framework-for-design
Chapter2 framework-for-designChapter2 framework-for-design
Chapter2 framework-for-design
 
Software Process Model in software engineering
Software Process Model in software engineeringSoftware Process Model in software engineering
Software Process Model in software engineering
 
Lecture 1 uml with java implementation
Lecture 1 uml with java implementationLecture 1 uml with java implementation
Lecture 1 uml with java implementation
 
01lifecycles
01lifecycles01lifecycles
01lifecycles
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
Architecture
ArchitectureArchitecture
Architecture
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 

Recently uploaded

CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
Amil Baba Dawood bangali
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
Robbie Edward Sayers
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
addressing modes in computer architecture
addressing modes  in computer architectureaddressing modes  in computer architecture
addressing modes in computer architecture
ShahidSultan24
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
Jayaprasanna4
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Sreedhar Chowdam
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
Kamal Acharya
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
ViniHema
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
karthi keyan
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
Kamal Acharya
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 

Recently uploaded (20)

CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
addressing modes in computer architecture
addressing modes  in computer architectureaddressing modes  in computer architecture
addressing modes in computer architecture
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
 
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang,  ICLR 2024, MLILAB, KAIST AI.pdfJ.Yang,  ICLR 2024, MLILAB, KAIST AI.pdf
J.Yang, ICLR 2024, MLILAB, KAIST AI.pdf
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 

Grokking Techtalk: Problem solving for sw engineers

  • 1. Filling in the gap between realities A guide to problem solving for software engineers Grokking -Thanh Dinh 26/02/2022
  • 2. Agenda What is a problem Problem definition Causal analysis Trade-off 2 types of trade-off Separation principles Conclusion
  • 3. What is a problem? A tale of two realities
  • 4. The elevator problem Lengthy elevator wait People in an office building started to complain to building management about the long wait time for elevators. As part of office building staff, you are tasked with solving this problem. How do you solve it?
  • 5. Elevator problem - Quick solutions
  • 6. Who has the problem? - The stakeholders
  • 8. What is a problem?
  • 10. Move perceived reality to expected reality
  • 11. Move expected reality to perceived reality
  • 12. Pull 2 realities to a middle point
  • 13. Fill in the gap of residents' realities
  • 14. Fill in the gap of Holistics customers' realities
  • 15. Problem definition Choosing the right problem statement to solve
  • 16. A problem well-stated is a problem half-solved. John Dewey
  • 17. Startup is about finding the right problem to solve. Anonymous
  • 18. Problem definition What is the problem? What is perceived reality? What is expected reality? Is it clear? Who are involved in the problem? How important is the problem? When does the problem needs to be solved? Is there really a problem?
  • 19.
  • 20. Highest abstraction level Problem definition should be at the highest abstraction level that appropriately describes the situation. Principle
  • 21. The primary thing when you take a sword in your hands is your intention to cut the enemy, whatever the means. If you think only of hitting, springing, striking or touching the enemy, you will not be able actually to cut him. Miyamoto Musashi
  • 22. Example: Holistics Analytics as Code Lower level: product features Version control Logic as code Automated workflow Data unit testing Higher level: pain points Can't track who changed what Unreliable dashboards Manual, repetitive work Vendor lock-in Why How Lowest level: technology choice Analytics Modeling Language (AML) TypeScript Redis Postgres Terraform/Ansible Why How
  • 23. Ladder of abstraction: Product Design
  • 24. Causal analysis Knowing what causes the problem
  • 25. The elevator problem Lengthy elevator wait People in an office building started to complain to building management about the long wait time for elevators. As part of office building staff, you are tasked with solving this problem. How do you solve it?
  • 27. Non-linear causal relationship In many cases, the causal chain is not linear that can be described as a tree. Changing one variable can affect itself through cycles. Cycles mean there's no definite root cause of the problem. Pitfall
  • 29. Non-holistic thinking Company growth problem is not just a sales, marketing, engineering, product problem, but the whole company problem. Usually, a problem is caused by interactions between components or the compound effect of multiple dimensions, not the individual parts/dimensions. There's no single root cause to find. Pitfall
  • 31. Forget that problem is inherently a human thing Definition of a problem requires a person to even be called a problem but many engineers forget this. Forget to choose the right problem to solve Engineers tend to think that "requirements" are set in stone. In reality, most requirements may not even make sense in the first place. Common mistakes
  • 33. You face a trade-off when it is hard to choose a solution Thus you must have already found solutions in order to have trade-offs
  • 35. Causal Analysis and Trade-offs
  • 37. In SE, dimensions come from business requirements
  • 38. Dimensional priorities Talk to stakeholders to identify the most important dimensions
  • 39. There are 2 types of trade-off
  • 40. Dimensional trade-off A solution increases benefit in one dimension but also increases harmful effect in another dimension Alternative trade-off Solution 1 gives you benefit 1, solution 2 gives you benefit 2, you can only choose either, but you want both
  • 41. Dimensional trade-off examples More security checks will improve security but reduce performance 🔐Security vs 🐎Performance More tests will improve code reliability but it will take longer to ship new features ⛑Reliability vs 🔀Agility Migrate to Kubernetes improves scalability but increases infrastructure cost 🚀Scalability vs 💸Cost It is hard to design a software that is both powerful and user-friendly 💖User- friendliness vs ⚡Power
  • 42. Alternative trade-off examples SQL allows for complex joins but require upfront schema design SQL vs NoSQL Monolithic architecture is simpler but less scalable Monolithic vs Microservices Fundamental trade-off between functional programming and OOP Expression problem
  • 43.
  • 44. Choose a compromise point Find a sweet spot on the line of compromise Resolve the trade-off Use creative problem solving techniques to overcome the trade-off 2 ways to deal with trade-offs
  • 45. Only see one side of the trade-off Only seeing one side of the trade-off means not seeing the trade-off at all! Common mistake 1
  • 46. Programmers know the benefits of everything and the trade-offs of nothing. Architects need to understand both. Rich Hickey
  • 47. Everything in software architecture is a trade- off. If an architect thinks they have discovered something that isn’t a trade-off, more likely they just haven’t identified the trade-off yet. Neal Ford
  • 48. Opinion: Use boring technology New New benefits Unknown harms New/fancy tech Old Old benefits Known harms Boring tech http://boringtechnology.club/
  • 49. The nice thing about boringness (so constrained) is that the capabilities of these things are well understood. But more importantly, their failure modes are well understood Dan McKinley
  • 50. Not realize that trade-offs are not set in stone Trade-offs are hard to overcome but in many cases, they are not set in stone. You can resolve them through separation techniques. Common mistake 2
  • 51. The root of many trade-offs are due to couplings. Resolve the coupling, you can resolve the trade-off Why separation?
  • 52. TRIZ separation principles applied to Software Engineering Break down different requirements into separate time group Separation in Time Break down different requirements into separate modules Separation in Space Break down different requirements at the submodule and system level Separation between Parts and Whole
  • 53. Separation in Time Agility/Cost vs Reliability/Security/Scalability
  • 54. Separation in Space Agility: Separate service can be developed independently Scalability: New service can be connected to the common sidecar Security/Reliability: Handled by sidecar Performance: Communication overhead Cost: Only makes sense for more complex systems Security/Reliability vs Agility/Scalability Sidecar pattern
  • 55. Separation between Parts and Whole Agility/Scalability vs Reliability Agility: Fast many unit tests without mocks Scalability: Functional logic can be easily parallelized Reliability: Only need a few reliable integration tests, most logic covered by unit tests Performance: Communication/serialization overhead Cost/Learnability: More time decoupling stateless from stateful logic Functional core Imperative shell
  • 56. Conclusion What is a problem A problem is a gap between perceived and expected reality of some stakeholder Look at a problem at its highest level of abstraction: its ultimate goal Causal analysis Trade-off Solution ideality and relationship with causal analysis 2 types of trade-off: dimensional/alternative 3 separation techniques to resolve trade-offs
  • 58. Bringing software's best practices to analytics development Old World New World Software Development Analytics Configure servers manually using GUI. Deploy via FTP upload. Problems: Hard to maintain; Prone to error Configure servers using code (Infrastructure As-Code). Continuous Integration / Continuous Delivery (CI/CD) Benefits: Reliable, Scalable and Maintainable. Build visualizations using drag- and-drop. Hard to reuse business logic. Analytics built with software principles Holistics
  • 59. 1- Define analytics logic as code 2- Code review, deploy with CI/CD 3- Reliable, trusted analytics
  • 61. Our Culture Problem-Solving Centric: (as seen from today's talk) We think from first principles, question assumptions, and deliberate tradeoffs carefully. Personal Development: We invest so that as the company grows, the people grow. Technical Coaching & Mentorship Pair Programming Learning by Teaching...
  • 62. Building a language for analytics modeling Example Technical Problem Powerful type system to enable rich IDE functionalities A query language that is composable/reusable alternative to SQL Goal: Making analytics reusable Solution: A type-based DSL layer that allows mapping between business logic to database layer. Technical challenges: