Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
simplicity
.demystified
osvaldas grigas
@ogrigas | ogrigas@gmail.com
inspired by

Dan
North

Rich
Hickey
Computing's central challenge,
"How not to make a mess of it",
has not been met.

Edsger Dijkstra
(1980)
what "simple" ain’t ...
familiar / convenient
small / concise
beautiful / elegant
"nothing is more simple than a single giant button"
from the agile principles

“Simplicity -- the art of maximizing the
amount of work not done -- is essential.”
from the agile principles

“Simplicity -- the art of maximizing the
amount of work not done -- is essential.”

YAGNI
from the agile principles

“Simplicity -- the art of maximizing the
amount of work not done -- is essential.”

YAGNI
from the agile principles
“Harness change for the
customer's competitive advantage.”
Complexity is the silent killer of
delivering the right software,
or change, at the right time.

Russ Miles
from the agile principles
“Technical excellence and
good design enhances agility.”
Design is there to enable you to
keep changing the software easily.

Martin Fowler
from the agile principles
“Developers should maintain a
constant pace indefinitely.”
Once your software is of a
certain size, complexity is gonna
dominate what you can do.

Rich Hickey
ultimate definition of simplicity
ultimate definition of simplicity

simple == not(complex)
complexity
.demystified
osvaldas grigas
@ogrigas | ogrigas@gmail.com
mixed responsibilities
dependencies
& coupling
state
& side effects
mental strain
essential
complexit
y
tal
den
nci
i
xity
ple
com
essential
complexit
y
y

code
our
essential
complexit
y
rie
s
lib

ra

& frameworks
y

code
our
essential
complexit
y
lib

ra

rie
s

& runtime
ge
ua
ng
& frameworks
la
y

code
our
essential
complexit
y
complexity brought by

your code
supported by:

oring
fact
re
ools
t

autoimport

code
generators
complexity brought by

libraries
supported by:

gem

nuget

maven
complexity brought by

frameworks
ORM
WEB

IoC
the law of leaky abstractions
complexity brought by

the programming language
inheritance-based design
unconstrained mutability
lack of expressivity
making things
simple
TDD, BDD
& refactoring
modularity
use values
and pure functions
minimize direct dependencies

introduce indirection
follow the law of demeter
single responsibility principle
& composition

wget -qO- http://c2.com/ | tr -cs '[:alpha:]' 'n' | sort | uniq
be ignorant and oblivious
choose libraries wisely
“We choose Camel over Spring-Integration
because the fluent API is really nice.”

accepted answer
prefer libraries over frameworks
step out of your comfort zone
Simplicity
Nächste SlideShare
Wird geladen in …5
×

Simplicity

577 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Simplicity

  1. 1. simplicity .demystified osvaldas grigas @ogrigas | ogrigas@gmail.com
  2. 2. inspired by Dan North Rich Hickey
  3. 3. Computing's central challenge, "How not to make a mess of it", has not been met. Edsger Dijkstra (1980)
  4. 4. what "simple" ain’t ... familiar / convenient small / concise beautiful / elegant
  5. 5. "nothing is more simple than a single giant button"
  6. 6. from the agile principles “Simplicity -- the art of maximizing the amount of work not done -- is essential.”
  7. 7. from the agile principles “Simplicity -- the art of maximizing the amount of work not done -- is essential.” YAGNI
  8. 8. from the agile principles “Simplicity -- the art of maximizing the amount of work not done -- is essential.” YAGNI
  9. 9. from the agile principles “Harness change for the customer's competitive advantage.”
  10. 10. Complexity is the silent killer of delivering the right software, or change, at the right time. Russ Miles
  11. 11. from the agile principles “Technical excellence and good design enhances agility.”
  12. 12. Design is there to enable you to keep changing the software easily. Martin Fowler
  13. 13. from the agile principles “Developers should maintain a constant pace indefinitely.”
  14. 14. Once your software is of a certain size, complexity is gonna dominate what you can do. Rich Hickey
  15. 15. ultimate definition of simplicity
  16. 16. ultimate definition of simplicity simple == not(complex)
  17. 17. complexity .demystified osvaldas grigas @ogrigas | ogrigas@gmail.com
  18. 18. mixed responsibilities
  19. 19. dependencies & coupling
  20. 20. state & side effects
  21. 21. mental strain
  22. 22. essential complexit y
  23. 23. tal den nci i xity ple com essential complexit y
  24. 24. y code our essential complexit y
  25. 25. rie s lib ra & frameworks y code our essential complexit y
  26. 26. lib ra rie s & runtime ge ua ng & frameworks la y code our essential complexit y
  27. 27. complexity brought by your code supported by: oring fact re ools t autoimport code generators
  28. 28. complexity brought by libraries supported by: gem nuget maven
  29. 29. complexity brought by frameworks ORM WEB IoC
  30. 30. the law of leaky abstractions
  31. 31. complexity brought by the programming language inheritance-based design unconstrained mutability lack of expressivity
  32. 32. making things simple
  33. 33. TDD, BDD & refactoring
  34. 34. modularity
  35. 35. use values and pure functions
  36. 36. minimize direct dependencies introduce indirection follow the law of demeter
  37. 37. single responsibility principle & composition wget -qO- http://c2.com/ | tr -cs '[:alpha:]' 'n' | sort | uniq
  38. 38. be ignorant and oblivious
  39. 39. choose libraries wisely “We choose Camel over Spring-Integration because the fluent API is really nice.” accepted answer
  40. 40. prefer libraries over frameworks
  41. 41. step out of your comfort zone

×