Simplicity

454 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
454
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×