SlideShare a Scribd company logo
1 of 30
Download to read offline
Problem Solving Techniques
For Evolutionary Design
Distilling Down Any Problem to Its Crux
Naresh Jain
naresh@agilefaqs.com
@nashjain
http://nareshjain.com
Rounding Up to the
Closest 5 Cents
• In my billing application
• Given the price of an item comes up to $20.23
after tax
• I want to round up 23 cents to the closest 5
cents denomination .i.e. 25 cents
• So I can charge $20.25
• https://github.com/nashjain/rounding_logic
• https://help.github.com/categories/54/articles
Hotel Room Charge
• Calculate the bill amount based on the number of hotel nights
the guest has stayed in the hotel.
• Per hotel night is charged at 4999 INR for single occupancy and
5499 INR for double occupancy.
• Hotels have a standard 12:00 noon checkin and checkout.
• Early Checkin: Guest can request to checkin early (before
12:00 noon.) If they checkin between 9 and 12, they are
charged 50% extra. If they checkin before 9 AM, then they are
charged full night charge.
• Late Checkout: Guest can request a late checkout. If they
checkout after 12 noon and before 3, they are charged 50%
extra and if they checkout after 3:00 PM, they have to pay one
whole night's extra charge.
High-level Approach
Eliminate Noise Divide & Conquer
Test Data
Constraints Simple Design
Manual Debug
Refactor Throw Away
Create
Add
Come
up with
Simplify the Problem
Prioritise
Problem-Solving Strategies
• Sandboxing: solving the problem in a model of the system before
applying it to the real system
• Metaphor: using a solution that solves an analogous problem
• Brainstorming: exploring a large number of solutions or ideas and
combining and developing them until an optimum solution is found
• Divide and conquer: breaking down a large, complex problem into
smaller, solvable problems
• Hypothesis testing: assuming a possible explanation to the problem
and trying to prove (or disprove) the assumption
• Reduction: transforming the problem into another problem for
which solutions exist
• Trial-and-error: testing possible solutions until the right one’s found
Adapted from: http://en.wikipedia.org/wiki/Problem_solving#Problem-solving_strategies
Commercial Break!
http://agilefaqs.com | Copyright © 2014, AgileFAQs. All Rights Reserved.
Mumbai
Tech Talks!
IP Address Range
• Each country has blocks of IPv4 address
range assigned to it
• Given I have an IP address I want to figure
out which country it belong to
Start End Total IPs Country
1.6.0.0 1.7.255.255 131072 India
1.22.0.0 1.23.255.255 131072 India
1.186.0.0 1.186.255.255 65536 India
1.0.32.0 1.0.63.255 8192 China
1.1.16.0 1.1.31.255 4096 China
1.4.16.0 1.4.31.255 4096 Japan
• https://github.com/nashjain/ip2country
• 196 countries with 100s of such blocks
Snakes and Ladders
• One or more players can play the game
• Typical board size is 10 x10, but user can specify
different board size
• User can decide the game mode (Easy = 5 snakes and
ladders, Medium = 10 snakes and ladders, Hard = 20
snakes and ladders.) Default to easy mode.
• After each move, snakes and ladders could move, but
at least after each game, they should move.
• Game takes the names of all the players and reports
the name of the winner.
• Random player gets to start
Medical Age Printer
https://github.com/nashjain/map
Medical Age Printer
Age Reported in
Greater than 1Year <Patient Name> is #Years old
> 1 Month & < 1Year <Patient Name> is # Months old
> 1 Day & < 1 Month <Patient Name> is # Days old
> 1 Hr & < 1 Day <Patient Name> is # Hours old
https://github.com/nashjain/map
Medical Age Printer
Age Reported in
Greater than 1Year <Patient Name> is #Years old
> 1 Month & < 1Year <Patient Name> is # Months old
> 1 Day & < 1 Month <Patient Name> is # Days old
> 1 Hr & < 1 Day <Patient Name> is # Hours old
Doctors and Nurses might like to add and remove new Durations.
For Ex: If they add Decade, and Patient’s age is greater than 10 years,
then age should be reported as <Patient Name> is # Decades old.
Similarly: If they add Week, and Patient’s age is greater than 7 Day, but less than
a month, then age should be reported as <Patient Name> is # Weeks old.
https://github.com/nashjain/map
Recap
Eliminate Noise Divide & Conquer
Test Data
Constraints Simple Design
Manual Debug
Refactor Throw Away
Create
Add
Come
up with
Simplify the Problem
Prioritise
Important Advice
Pick a Solution after Trying
at least 3 Approaches
"Perfection (in design) is achieved not when there is nothing more to add,
but rather when there is nothing more to take away." – Eric S Raymond
Quit Multitasking
Deliberate Practice
Next Steps?
Practice An Hour Each Day
Participate
ThankYou!
Questions?
Naresh Jain
@nashjain
http://nareshjain.com

More Related Content

Viewers also liked

Insight & Solving Design Problem with Design Sprint Method
Insight & Solving Design Problem with Design Sprint MethodInsight & Solving Design Problem with Design Sprint Method
Insight & Solving Design Problem with Design Sprint MethodNgurah Devara Udayana
 
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)TEXTILE DESIGN AS PROBLEM SOLVING(presentation)
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)Ebenezer Kofi Howard
 
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...Design Thinking & Lean Product Development •How to Identify a Real Problem Th...
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...PHX Startup Week
 
Problem solving & decision making at the workplace
Problem solving & decision making at the workplaceProblem solving & decision making at the workplace
Problem solving & decision making at the workplaceFaakor Agyekum
 
No Projects - Beyond Projects (Refreshed version)
No Projects - Beyond Projects (Refreshed version)No Projects - Beyond Projects (Refreshed version)
No Projects - Beyond Projects (Refreshed version)allan kelly
 
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...Rod King, Ph.D.
 
Design Thinking and Innovation
Design Thinking and InnovationDesign Thinking and Innovation
Design Thinking and InnovationTing-Shuo Yo
 
Program design and problem solving techniques
Program design and problem solving techniquesProgram design and problem solving techniques
Program design and problem solving techniquesDokka Srinivasu
 
Problem solving and_critical_thinking_eltecs
Problem solving and_critical_thinking_eltecsProblem solving and_critical_thinking_eltecs
Problem solving and_critical_thinking_eltecsJamie Hoang
 
System Traps and Opportunities
System Traps and OpportunitiesSystem Traps and Opportunities
System Traps and OpportunitiesJason Yip
 
Communication skills Basic
Communication skills BasicCommunication skills Basic
Communication skills BasicSachinKabra
 
Critical Thinking, Problem Solving, Decision Making
Critical Thinking, Problem Solving, Decision MakingCritical Thinking, Problem Solving, Decision Making
Critical Thinking, Problem Solving, Decision Makingguestd388be
 
textile design
textile designtextile design
textile designshiveyb
 
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Claudio Perrone
 

Viewers also liked (16)

Insight & Solving Design Problem with Design Sprint Method
Insight & Solving Design Problem with Design Sprint MethodInsight & Solving Design Problem with Design Sprint Method
Insight & Solving Design Problem with Design Sprint Method
 
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)TEXTILE DESIGN AS PROBLEM SOLVING(presentation)
TEXTILE DESIGN AS PROBLEM SOLVING(presentation)
 
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...Design Thinking & Lean Product Development •How to Identify a Real Problem Th...
Design Thinking & Lean Product Development •How to Identify a Real Problem Th...
 
Problem solving & decision making at the workplace
Problem solving & decision making at the workplaceProblem solving & decision making at the workplace
Problem solving & decision making at the workplace
 
No Projects - Beyond Projects (Refreshed version)
No Projects - Beyond Projects (Refreshed version)No Projects - Beyond Projects (Refreshed version)
No Projects - Beyond Projects (Refreshed version)
 
Problem solving and design
Problem solving and designProblem solving and design
Problem solving and design
 
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...
Experiment (XP) Gameboard: How Great Organizations Rapidly Solve Problems, Le...
 
Design Thinking and Innovation
Design Thinking and InnovationDesign Thinking and Innovation
Design Thinking and Innovation
 
Program design and problem solving techniques
Program design and problem solving techniquesProgram design and problem solving techniques
Program design and problem solving techniques
 
Problem solving and_critical_thinking_eltecs
Problem solving and_critical_thinking_eltecsProblem solving and_critical_thinking_eltecs
Problem solving and_critical_thinking_eltecs
 
System Traps and Opportunities
System Traps and OpportunitiesSystem Traps and Opportunities
System Traps and Opportunities
 
Communication skills Basic
Communication skills BasicCommunication skills Basic
Communication skills Basic
 
Critical Thinking, Problem Solving, Decision Making
Critical Thinking, Problem Solving, Decision MakingCritical Thinking, Problem Solving, Decision Making
Critical Thinking, Problem Solving, Decision Making
 
Thinking Tools for Creative Kids An Introduction
Thinking Tools for Creative Kids An IntroductionThinking Tools for Creative Kids An Introduction
Thinking Tools for Creative Kids An Introduction
 
textile design
textile designtextile design
textile design
 
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
Evolve or Die: A3 Thinking and Popcorn Flow in Action (#LKCE14)
 

Similar to Problem Solving Techniques For Evolutionary Design

Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019Jakub Kurcek
 
The tao-of-transformation-workshop
The tao-of-transformation-workshopThe tao-of-transformation-workshop
The tao-of-transformation-workshopDhaval Dalal
 
Acceptance, accessible, actionable and auditable
Acceptance, accessible, actionable and auditableAcceptance, accessible, actionable and auditable
Acceptance, accessible, actionable and auditableAlban Gérôme
 
Optimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studiesOptimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studiesAlkis Vazacopoulos
 
Test case design techniques
Test case design techniquesTest case design techniques
Test case design techniquesAshutosh Garg
 
Test case design techniques
Test case design techniquesTest case design techniques
Test case design techniques2PiRTechnologies
 
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...Sandy Justice
 
Planning, Directing, and Editing Successful Video Projects (part 2)
Planning, Directing, and Editing Successful Video Projects (part 2)Planning, Directing, and Editing Successful Video Projects (part 2)
Planning, Directing, and Editing Successful Video Projects (part 2)Richard Harrington
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 
Test estimation session
Test estimation sessionTest estimation session
Test estimation sessionVipul Agarwal
 
#8 agile governance questions you can and should be asking
#8 agile governance questions you can and should be asking#8 agile governance questions you can and should be asking
#8 agile governance questions you can and should be askingaboobier
 
Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Innovator SG
 
Agile projetcs (sizing and estimation)
Agile projetcs (sizing and estimation)Agile projetcs (sizing and estimation)
Agile projetcs (sizing and estimation)XPDays
 
Business Hackathons: How to Accelerate Organization Innovation, Collaboratio...
Business Hackathons:  How to Accelerate Organization Innovation, Collaboratio...Business Hackathons:  How to Accelerate Organization Innovation, Collaboratio...
Business Hackathons: How to Accelerate Organization Innovation, Collaboratio...Richardson Consulting Group, Inc.
 
Building innovative products
Building innovative productsBuilding innovative products
Building innovative productsShishir Choudhary
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyJohn Giaconia
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyKara Hansen
 
Outpost24 webinar - The economics of penetration testing in the new threat la...
Outpost24 webinar - The economics of penetration testing in the new threat la...Outpost24 webinar - The economics of penetration testing in the new threat la...
Outpost24 webinar - The economics of penetration testing in the new threat la...Outpost24
 
South Africa Tour: Introduction to value-led pricing
South Africa Tour: Introduction to value-led pricingSouth Africa Tour: Introduction to value-led pricing
South Africa Tour: Introduction to value-led pricingEd Kless
 

Similar to Problem Solving Techniques For Evolutionary Design (20)

Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019Pragmatic guide to AB testing - Agile and Automation days 2019
Pragmatic guide to AB testing - Agile and Automation days 2019
 
The tao-of-transformation-workshop
The tao-of-transformation-workshopThe tao-of-transformation-workshop
The tao-of-transformation-workshop
 
Acceptance, accessible, actionable and auditable
Acceptance, accessible, actionable and auditableAcceptance, accessible, actionable and auditable
Acceptance, accessible, actionable and auditable
 
Optimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studiesOptimization Direct: Introduction and recent case studies
Optimization Direct: Introduction and recent case studies
 
Test case design techniques
Test case design techniquesTest case design techniques
Test case design techniques
 
Test case design techniques
Test case design techniquesTest case design techniques
Test case design techniques
 
The art of execution
The art of executionThe art of execution
The art of execution
 
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...
Expediting the Application Workshop Presentation -- 2015 SRA -- Dianne Donnel...
 
Planning, Directing, and Editing Successful Video Projects (part 2)
Planning, Directing, and Editing Successful Video Projects (part 2)Planning, Directing, and Editing Successful Video Projects (part 2)
Planning, Directing, and Editing Successful Video Projects (part 2)
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
Test estimation session
Test estimation sessionTest estimation session
Test estimation session
 
#8 agile governance questions you can and should be asking
#8 agile governance questions you can and should be asking#8 agile governance questions you can and should be asking
#8 agile governance questions you can and should be asking
 
Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Pitch your idea like a rockstar!
Pitch your idea like a rockstar!
 
Agile projetcs (sizing and estimation)
Agile projetcs (sizing and estimation)Agile projetcs (sizing and estimation)
Agile projetcs (sizing and estimation)
 
Business Hackathons: How to Accelerate Organization Innovation, Collaboratio...
Business Hackathons:  How to Accelerate Organization Innovation, Collaboratio...Business Hackathons:  How to Accelerate Organization Innovation, Collaboratio...
Business Hackathons: How to Accelerate Organization Innovation, Collaboratio...
 
Building innovative products
Building innovative productsBuilding innovative products
Building innovative products
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Scoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an AgencyScoping and Estimating WordPress Projects as an Agency
Scoping and Estimating WordPress Projects as an Agency
 
Outpost24 webinar - The economics of penetration testing in the new threat la...
Outpost24 webinar - The economics of penetration testing in the new threat la...Outpost24 webinar - The economics of penetration testing in the new threat la...
Outpost24 webinar - The economics of penetration testing in the new threat la...
 
South Africa Tour: Introduction to value-led pricing
South Africa Tour: Introduction to value-led pricingSouth Africa Tour: Introduction to value-led pricing
South Africa Tour: Introduction to value-led pricing
 

More from Naresh Jain

Problem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignNaresh Jain
 
Agile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteNaresh Jain
 
Organizational Resilience
Organizational ResilienceOrganizational Resilience
Organizational ResilienceNaresh Jain
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming CodeNaresh Jain
 
Agile India 2018 Conference Summary
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference SummaryNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingNaresh Jain
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniNaresh Jain
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniNaresh Jain
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarNaresh Jain
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppNaresh Jain
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdNaresh Jain
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Naresh Jain
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNaresh Jain
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016Naresh Jain
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 ConferenceNaresh Jain
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTNaresh Jain
 

More from Naresh Jain (20)

Problem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary Design
 
Agile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome Note
 
Organizational Resilience
Organizational ResilienceOrganizational Resilience
Organizational Resilience
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
 
Agile India 2018 Conference Summary
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference Summary
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco Cesarini
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
 
The Eclipse Way
The Eclipse WayThe Eclipse Way
The Eclipse Way
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
 

Recently uploaded

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Problem Solving Techniques For Evolutionary Design

  • 1. Problem Solving Techniques For Evolutionary Design Distilling Down Any Problem to Its Crux Naresh Jain naresh@agilefaqs.com @nashjain http://nareshjain.com
  • 2. Rounding Up to the Closest 5 Cents • In my billing application • Given the price of an item comes up to $20.23 after tax • I want to round up 23 cents to the closest 5 cents denomination .i.e. 25 cents • So I can charge $20.25 • https://github.com/nashjain/rounding_logic • https://help.github.com/categories/54/articles
  • 3. Hotel Room Charge • Calculate the bill amount based on the number of hotel nights the guest has stayed in the hotel. • Per hotel night is charged at 4999 INR for single occupancy and 5499 INR for double occupancy. • Hotels have a standard 12:00 noon checkin and checkout. • Early Checkin: Guest can request to checkin early (before 12:00 noon.) If they checkin between 9 and 12, they are charged 50% extra. If they checkin before 9 AM, then they are charged full night charge. • Late Checkout: Guest can request a late checkout. If they checkout after 12 noon and before 3, they are charged 50% extra and if they checkout after 3:00 PM, they have to pay one whole night's extra charge.
  • 4. High-level Approach Eliminate Noise Divide & Conquer Test Data Constraints Simple Design Manual Debug Refactor Throw Away Create Add Come up with Simplify the Problem Prioritise
  • 5. Problem-Solving Strategies • Sandboxing: solving the problem in a model of the system before applying it to the real system • Metaphor: using a solution that solves an analogous problem • Brainstorming: exploring a large number of solutions or ideas and combining and developing them until an optimum solution is found • Divide and conquer: breaking down a large, complex problem into smaller, solvable problems • Hypothesis testing: assuming a possible explanation to the problem and trying to prove (or disprove) the assumption • Reduction: transforming the problem into another problem for which solutions exist • Trial-and-error: testing possible solutions until the right one’s found Adapted from: http://en.wikipedia.org/wiki/Problem_solving#Problem-solving_strategies
  • 7. http://agilefaqs.com | Copyright © 2014, AgileFAQs. All Rights Reserved.
  • 9.
  • 10.
  • 11.
  • 13.
  • 14. IP Address Range • Each country has blocks of IPv4 address range assigned to it • Given I have an IP address I want to figure out which country it belong to
  • 15. Start End Total IPs Country 1.6.0.0 1.7.255.255 131072 India 1.22.0.0 1.23.255.255 131072 India 1.186.0.0 1.186.255.255 65536 India 1.0.32.0 1.0.63.255 8192 China 1.1.16.0 1.1.31.255 4096 China 1.4.16.0 1.4.31.255 4096 Japan • https://github.com/nashjain/ip2country • 196 countries with 100s of such blocks
  • 16.
  • 17. Snakes and Ladders • One or more players can play the game • Typical board size is 10 x10, but user can specify different board size • User can decide the game mode (Easy = 5 snakes and ladders, Medium = 10 snakes and ladders, Hard = 20 snakes and ladders.) Default to easy mode. • After each move, snakes and ladders could move, but at least after each game, they should move. • Game takes the names of all the players and reports the name of the winner. • Random player gets to start
  • 19. Medical Age Printer Age Reported in Greater than 1Year <Patient Name> is #Years old > 1 Month & < 1Year <Patient Name> is # Months old > 1 Day & < 1 Month <Patient Name> is # Days old > 1 Hr & < 1 Day <Patient Name> is # Hours old https://github.com/nashjain/map
  • 20. Medical Age Printer Age Reported in Greater than 1Year <Patient Name> is #Years old > 1 Month & < 1Year <Patient Name> is # Months old > 1 Day & < 1 Month <Patient Name> is # Days old > 1 Hr & < 1 Day <Patient Name> is # Hours old Doctors and Nurses might like to add and remove new Durations. For Ex: If they add Decade, and Patient’s age is greater than 10 years, then age should be reported as <Patient Name> is # Decades old. Similarly: If they add Week, and Patient’s age is greater than 7 Day, but less than a month, then age should be reported as <Patient Name> is # Weeks old. https://github.com/nashjain/map
  • 21. Recap Eliminate Noise Divide & Conquer Test Data Constraints Simple Design Manual Debug Refactor Throw Away Create Add Come up with Simplify the Problem Prioritise
  • 23. Pick a Solution after Trying at least 3 Approaches
  • 24. "Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away." – Eric S Raymond
  • 28. Practice An Hour Each Day