4. Part 1 - Art of Design
about
why Design
self assessment
5. art
/ärt/
Noun
1. The expression or application of human creative skill and
imagination, typically in a visual form such as painting or
sculpture,...: "the art of the Renaissance"
2. Works produced by such skill and imagination.
Synonyms
craft - skill - artifice - science - workmanship - knack
6. de·sign
/dəәˈzīn/
Noun
A plan or drawing produced to show the look and function
or workings of a building, garment, or other object before
it is built or made.
8. Self Assessment (1-10)
Design Patterns Abstractions
Object Oriented Areas of Responsibility
Programming
Separation of Concerns
Single Responsibility
Principal Security
YAGNI Scalability
DRY Fault Tolerance
9. Design Patterns
A general rule to a common occurring
problem
A pattern or template to solve a
particular constraint
10. OOP
A style of programming segregating
Data and Behavior into distinct and
isolated units
12. YAGNI
You Ain’t Gonna Need It
Do not build or design for something that
you do not have an explicit need for*
*Yes, I can end in a preposition - I don’t honor obscure latin linguistic
rules.
23. Einstein repeatedly argued that
there must be simplified
explanations of nature, because
God is not capricious or arbitrary.
No such faith comforts the
software engineer. Much of the
complexity he must master is
arbitrary complexity … because
they were designed by different
people, rather than by God.
- Fred P. Brooks, Engineer/Author
24. Form follows function -
that has been
misunderstood. Form
and function should be
one, joined in a spiritual
union.
- Frank Lloyd Wright,
Architect
25. Where I used to strive for
movement and
restlessness I now
attempt to sense and
express the complete total
calm of objects and the
surrounding air.
- Lyonel Feininger,
Master Artist, Bauhaus
26. Making the solution
seem so completely
inevitable and obvious,
so uncontrived and
natural - it's so hard!
- Jonathan Ive, Apple
27. Good design is making
something intelligible and
memorable. Great design
is making something
memorable and
meaningful.
- Dieter Rams, Designer
28. Dieter Rams’ Principles of Design
Good Design...
1. Is Innovative 6. Is Honest
2. Makes a Product Useful 7. Is Long-lasting
3. Is Aesthetic 8. Is Thorough Down to the Last Detail
4. Makes A Product Understandable 9. Is Environmentally Friendly
5. Is Unobtrusive 10. Is as Little Design as Possible
29. Good Design Is Innovative : The
possibilities for innovation are not, by
any means, exhausted. Technological
development is always offering new
opportunities for innovative design.
But innovative design always
develops in tandem with innovative
technology, and can never be an end
in itself.
30. Good Design Makes a Product
Useful : A product is bought to be
used. It has to satisfy certain criteria,
not only functional but also
psychological and aesthetic. Good
design emphasizes the usefulness of
a product while disregarding anything
that could possibly detract from it.
31. Good Design Is Aesthetic : The
aesthetic quality of a product is
integral to its usefulness because
products are used every day and
have an effect on people and their
well-being. Only well-executed
objects can be beautiful.
32. Good Design Makes A Product
Understandable : It clarifies the
product’s structure. Better still, it can
make the product clearly express its
function by making use of the user’s
intuition. At best, it is self-explanatory.
33. Good Design Is Unobtrusive : Products fulfilling a
purpose are like tools. They are neither decorative
objects nor works of art. Their design should therefore
be both neutral and restrained, to leave room for the
user’s self-expression.
34. Good Design Is Honest : It does not
make a product more innovative,
powerful or valuable than it really is. It
does not attempt to manipulate the
consumer with promises that cannot
be kept
35. Good Design Is Long-lasting : It
avoids being fashionable and
therefore never appears antiquated.
Unlike fashionable design, it lasts
many years – even in today’s
throwaway society.
36. Good Design Is Thorough Down to the
Last Detail : Nothing must be arbitrary or
left to chance. Care and accuracy in the
design process show respect towards the
consumer.
37. Good Design Is Environmentally
Friendly : Design makes an important
contribution to the preservation of the
environment. It conserves resources
and minimizes physical and visual
pollution throughout the lifecycle of
the product.
38. Good Design Is as
Little Design as
Possible : Less, but
better – because it
concentrates on the
essential aspects, and
the products are not
burdened with non-
essentials. Back to purity,
back to simplicity.
54. Model
prototype code
experiment with new methodologies,
patterns, practices
55. Production
Write some code
Yes, your prototype can become ‘real’
if it’s solid - just don’t lock yourself
into one way of thinking about it
(always throw-away or always use it)
56. Sounds like waterfall!? What about
agile, XP, Kanban, etc.!?
I don’t care about your build process -
design it first.
If you don’t have a design before hand
you’re going to create it while coding!
Disagree? Show me an example where
this has worked out well for everybody
58. Part 4 - Art of Design
Art vs. Science
Essence and Accidents
Design Patterns
59. CS Course...
physical attributes, concepts,
limitations
coding syntax, structure, concepts
History of the masters - and what they
accomplished
High emphasis on the medium and
technique
60. CS Course...
T
physical attributes, concepts, E
limitations
R E
C
coding syntax, structure, concepts
N
CO
History of the masters - and what they
accomplished
High emphasis on the medium and
technique
61. Art/Design Course...
how to see
how to express thought
History of the masters - and what made
them great
low emphasis on the medium and
techniques
62. Art/Design Course...
C T
A
how to see
R
how to express thought
T
B S
History of the masters - and what made
A
them great
low emphasis on the medium and
techniques
72. Essence (Creme) Accident (Non-Essential)
Object Model Persistence
Business Logic Formatting and Serialization
Orchestration and Interaction Security, Speed, Stability
Platform, Language
Batch, Real-time (sync or async)
Libraries
Size, Resource consumption
83. Decorator (Structural)
Add or Override behavior
Decorator implements same interface as
decorated object (they are the same to the
consumer)
Can compound behaviors (decorate a
decorated object)