SlideShare a Scribd company logo
1 of 31
Download to read offline
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

More Related Content

Similar to 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 to 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...
 

More from Terry Yin

More from 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
 

Recently uploaded

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024TopCryptoSupers 12thReport OrionX May2024
TopCryptoSupers 12thReport OrionX May2024
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 

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