The software industry has an overloaded expectation for reuse. And different people have different expectation from software reuse. When reuse happens before actual use, the reality is often quite different than everybody's expectation.
This talk promotes working software that has customer value, once-and-only-once over reusability, simplicity before generality, use before reuse.
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
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
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.
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