SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
No Reuse Before Use
terry@odd-e.com
Who Am I
2
• I am Terry Yin
• Work for Odd-e
• Experienced in software development
• Focus on technical coaching
• Love programming
• A father
Me
Let’s Visit A City
On The Opposite Side of the Globe
5
6
Planned City
Oscar Niemeyer
8
9
10,000 pedestrian lives are
lost on Brazilian road in
2012, whom in theory do
not existing in Brasilia.
(270, 000 around the world)
"Organic planning does not begin with a
preconceived goal; it moves from need to
need, from opportunity to opportunity, in a
series of adaptations that themselves
become increasingly coherent and
purposeful, so that they generate a complex
final design, hardly less unified than a pre-
formed geometric pattern.”
— Lewis Mumford explained further what he
admired in medieval cities
11
12
Now
13
14
Why the graphic designer doesn’t
understand reuse?
16
Speculative Generality
Customer Value
17
People do not on the whole pay for
(or need) generality: They tend to
have a specific situation, and it is a
solution to that specific situation
that has value.
Simplicity before generality, use before reuse,
by Kevlin Henney
18
19
Design from the perspective of use
rather than implementation
20
CostofChange
0 1 2 3 4 5 6 7 8 9
21
— Kent Beck, inventor of XP
22
Duplication may be the
root of all evil in software.
Clean Code, Robert C. Martin
Refactoring
• Small steps
• Look for code smells
• Following design principles
- SOLID
- High cohesion, low coupling
- Once And Only Once
• Design emerges from working code
23
"Refactoring is the process of changing a
software system in such a way that it
does not alter the external behavior of
the code yet improves its internal
structure."
Refactoring: Improving the Design of Existing Code by Martin Fowler
The Second-System Effect
24
Mythical Man Month (1974), Fred Brooks
What has been
done
What was originated
but not done
In the first
system
Real experience
What the architect himself
think his experience is,
and will apply to the 2nd system.
Emergent Design
25
Code, listen you shall.
Let the design be the
way it wants to be!
26
Will Reuse Save Money?
Reuse Is Not Free
27
All non-trivial abstractions, to some degree, are leaky.
The Law of Leaky Abstractions
by Joel Spolsky
Devise
28
29
Who Want To Be Reused?
Business Logic?
OS functionality?
Mathematics library?
Design Patterns?
Framework?
Domain Models?
Middleware?
Open source?
No Reuse?
Project Or Product
• When you make a product like a project
• you get Brasilia
30
Working software is our primary goal
Simplicity before generality, use before reuse
Do emergent design
Reuse isn’t always a good thing
31

Más contenido relacionado

Similar a No Reuse Before Use

RWE2007-Practical Design for Developers
RWE2007-Practical Design for DevelopersRWE2007-Practical Design for Developers
RWE2007-Practical Design for Developers
verbad
 

Similar a No Reuse Before Use (20)

Design Collaboration
Design CollaborationDesign Collaboration
Design Collaboration
 
Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"Online TechTalk  "Patterns in Embedded SW Design"
Online TechTalk  "Patterns in Embedded SW Design"
 
Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012Whittle Modeling Wizards 2012
Whittle Modeling Wizards 2012
 
Code Beauty
Code BeautyCode Beauty
Code Beauty
 
EST 200, Design Thinking
EST 200, Design ThinkingEST 200, Design Thinking
EST 200, Design Thinking
 
The Birth of the HUGE UX School
The Birth of the HUGE UX SchoolThe Birth of the HUGE UX School
The Birth of the HUGE UX School
 
Design Patterns in Swift ch0 Introduction
Design Patterns in Swift ch0 IntroductionDesign Patterns in Swift ch0 Introduction
Design Patterns in Swift ch0 Introduction
 
GHAMAS Design Principles
GHAMAS Design PrinciplesGHAMAS Design Principles
GHAMAS Design Principles
 
Kits to Find the Bits that Fits
Kits to Find  the Bits that Fits Kits to Find  the Bits that Fits
Kits to Find the Bits that Fits
 
Cormas: Modelling for Citizens with Citizens. Building accessible and reliabl...
Cormas: Modelling for Citizens with Citizens. Building accessible and reliabl...Cormas: Modelling for Citizens with Citizens. Building accessible and reliabl...
Cormas: Modelling for Citizens with Citizens. Building accessible and reliabl...
 
Systemic Design Principles & Methods (Royal College of Art)
Systemic Design Principles & Methods (Royal College of Art)Systemic Design Principles & Methods (Royal College of Art)
Systemic Design Principles & Methods (Royal College of Art)
 
BOP Product Design
BOP Product DesignBOP Product Design
BOP Product Design
 
Moser disruptive practice-arch3.0-2012
Moser disruptive practice-arch3.0-2012Moser disruptive practice-arch3.0-2012
Moser disruptive practice-arch3.0-2012
 
The psychopathology of everyday things!
The psychopathology of everyday things!The psychopathology of everyday things!
The psychopathology of everyday things!
 
Serious play (ENG version)
Serious play (ENG version)Serious play (ENG version)
Serious play (ENG version)
 
Collaborative Evolution of 3D Models
Collaborative Evolution of 3D ModelsCollaborative Evolution of 3D Models
Collaborative Evolution of 3D Models
 
META for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motionMETA for Microservices: Getting your enterprise migration in motion
META for Microservices: Getting your enterprise migration in motion
 
Rapid Product Design in the Wild
Rapid Product Design in the WildRapid Product Design in the Wild
Rapid Product Design in the Wild
 
RWE2007-Practical Design for Developers
RWE2007-Practical Design for DevelopersRWE2007-Practical Design for Developers
RWE2007-Practical Design for Developers
 
It's Better To Have a Permanent Income Than to Be Fascinating: Killer Feature...
It's Better To Have a Permanent Income Than to Be Fascinating: Killer Feature...It's Better To Have a Permanent Income Than to Be Fascinating: Killer Feature...
It's Better To Have a Permanent Income Than to Be Fascinating: Killer Feature...
 

Más de Terry Yin

Más de Terry Yin (6)

Test Driven Development of A Static Code Analyzer
Test Driven Development of A Static Code AnalyzerTest Driven Development of A Static Code Analyzer
Test Driven Development of A Static Code Analyzer
 
Six Years of Teaching Certified Scrum Developers
Six Years of Teaching Certified Scrum DevelopersSix Years of Teaching Certified Scrum Developers
Six Years of Teaching Certified Scrum Developers
 
Abstraction is a communication tool
Abstraction is a communication toolAbstraction is a communication tool
Abstraction is a communication tool
 
Programming exercises
Programming exercisesProgramming exercises
Programming exercises
 
Misconceptions Of Unit Testing
Misconceptions Of Unit TestingMisconceptions Of Unit Testing
Misconceptions Of Unit Testing
 
Adding Unit Test To Legacy Code
Adding Unit Test To Legacy CodeAdding Unit Test To Legacy Code
Adding Unit Test To Legacy Code
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

No Reuse Before Use

  • 1. No Reuse Before Use terry@odd-e.com
  • 2. Who Am I 2 • I am Terry Yin • Work for Odd-e • Experienced in software development • Focus on technical coaching • Love programming • A father Me
  • 3.
  • 4. Let’s Visit A City On The Opposite Side of the Globe
  • 5. 5
  • 6. 6
  • 8. 8
  • 9. 9 10,000 pedestrian lives are lost on Brazilian road in 2012, whom in theory do not existing in Brasilia. (270, 000 around the world)
  • 10. "Organic planning does not begin with a preconceived goal; it moves from need to need, from opportunity to opportunity, in a series of adaptations that themselves become increasingly coherent and purposeful, so that they generate a complex final design, hardly less unified than a pre- formed geometric pattern.” — Lewis Mumford explained further what he admired in medieval cities
  • 11. 11
  • 13. 13
  • 14. 14 Why the graphic designer doesn’t understand reuse?
  • 15.
  • 17. Customer Value 17 People do not on the whole pay for (or need) generality: They tend to have a specific situation, and it is a solution to that specific situation that has value. Simplicity before generality, use before reuse, by Kevlin Henney
  • 18. 18
  • 19. 19 Design from the perspective of use rather than implementation
  • 20. 20 CostofChange 0 1 2 3 4 5 6 7 8 9
  • 21. 21 — Kent Beck, inventor of XP
  • 22. 22 Duplication may be the root of all evil in software. Clean Code, Robert C. Martin
  • 23. Refactoring • Small steps • Look for code smells • Following design principles - SOLID - High cohesion, low coupling - Once And Only Once • Design emerges from working code 23 "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." Refactoring: Improving the Design of Existing Code by Martin Fowler
  • 24. The Second-System Effect 24 Mythical Man Month (1974), Fred Brooks What has been done What was originated but not done In the first system Real experience What the architect himself think his experience is, and will apply to the 2nd system.
  • 25. Emergent Design 25 Code, listen you shall. Let the design be the way it wants to be!
  • 27. Reuse Is Not Free 27 All non-trivial abstractions, to some degree, are leaky. The Law of Leaky Abstractions by Joel Spolsky
  • 29. 29 Who Want To Be Reused? Business Logic? OS functionality? Mathematics library? Design Patterns? Framework? Domain Models? Middleware? Open source? No Reuse?
  • 30. Project Or Product • When you make a product like a project • you get Brasilia 30
  • 31. Working software is our primary goal Simplicity before generality, use before reuse Do emergent design Reuse isn’t always a good thing 31