0
SimpleisHard
Jim Siegienski        Architect
Simple: easilyunderstood; presenting no        difficulty.
Complex: hard tounderstand or deal with.
Easy: requiring no great    labor or effort.
Hard: difficult to do oraccomplish; fatiguing;    troublesome.
Postulate: logic - as a setof instructions - is easy for         developers.
Postulate: structure - as adisparate organization of logic   - is hard for developers.
Creation -> HardComprehension & Use -> Easy
"Our goal is to try to bring a calm     and simplicity to what areincredibly complex problems so that    youre not aware r...
E = mc^2 quod erat demonstrandum                           E Pluribus Unuma^2 + b^2 = c^2                  circumference /...
Whatever is predicated universally for a given class is predicated for     anything within that class.
Syllogism
If all A are Band C is in Athen C is B
A   B    C   BC    A
If all Getters only get recordsand GetPerson is a getterGetPerson only gets a record!
"Systems breakdown whenassumptions areinvalidated."           -Jimski
Why Structure?           • One big file?           • What is a Helper?           • What is a Utils?
Structure is abyproduct of naming andclassification.
• Logical      • Random• Analytical   • Synthesizing• Parts        • Holistic
ReadabilityReusabilityRefactorability
Readability         • Clarity         • Purpose         • Code Wants to be Stoopid
Naming     • Cohesion     • One Job     • Consistency
Naming Tips       • The more local the smaller the         variable name       • Consistent idioms       • Magic numbers a...
Reusability         • Abstract         • Useful         • Named Appropriately
"I dont like bad Abstractions!"                    -anonymous
"I dont like bad Abstractions!"                    -anonymous
Refactorability           • Insulate change           • "if its ugly put it in a box."           • Name, Name, Name
E.g.       • CMS       • Rules Engine       • Database
E.g.       • Differentiator       • High Reuse       • Critical
LogicalHardWork   +   Naming &    =           Structure Simple Elegance
"We choose to go to the moon. We choose to go to the moon in this decade and do  the other things, not because they are   ...
Resources:http://www.infoq.com/presentations/Simple-Made-EasyRich Hickey - Author of Clojure http://www.carlopescio.com/20...
Comments for CodeFaire 2012:https://joind.in/6720Jim Siegienski:jim.siegienski@gmail.com@JimSiegienskihttp://www.linkedin....
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Simple is hard
Upcoming SlideShare
Loading in...5
×

Simple is hard

731

Published on

Writing good software is not easy. Clear methods, solid classes, well designed services, and successful applications have something in common: they were hard to write. The opposite is also true – complex software is easy to write. This is known as spaghetti code. In this talk we’ll uncover some tips and techniques to improve your software quality and help you identify and articulate when it’s worth investing time into simplicity so that you can grow your applications into something incredible!

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

No Downloads
Views
Total Views
731
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • \n\n
  • Transcript of "Simple is hard"

    1. 1. SimpleisHard
    2. 2. Jim Siegienski Architect
    3. 3. Simple: easilyunderstood; presenting no difficulty.
    4. 4. Complex: hard tounderstand or deal with.
    5. 5. Easy: requiring no great labor or effort.
    6. 6. Hard: difficult to do oraccomplish; fatiguing; troublesome.
    7. 7. Postulate: logic - as a setof instructions - is easy for developers.
    8. 8. Postulate: structure - as adisparate organization of logic - is hard for developers.
    9. 9. Creation -> HardComprehension & Use -> Easy
    10. 10. "Our goal is to try to bring a calm and simplicity to what areincredibly complex problems so that youre not aware really of the solution, youre not aware of how hard the problem was that was eventually solved." -Jonathan Ive
    11. 11. E = mc^2 quod erat demonstrandum E Pluribus Unuma^2 + b^2 = c^2 circumference / diameter = pi
    12. 12. Whatever is predicated universally for a given class is predicated for anything within that class.
    13. 13. Syllogism
    14. 14. If all A are Band C is in Athen C is B
    15. 15. A B C BC A
    16. 16. If all Getters only get recordsand GetPerson is a getterGetPerson only gets a record!
    17. 17. "Systems breakdown whenassumptions areinvalidated." -Jimski
    18. 18. Why Structure? • One big file? • What is a Helper? • What is a Utils?
    19. 19. Structure is abyproduct of naming andclassification.
    20. 20. • Logical • Random• Analytical • Synthesizing• Parts • Holistic
    21. 21. ReadabilityReusabilityRefactorability
    22. 22. Readability • Clarity • Purpose • Code Wants to be Stoopid
    23. 23. Naming • Cohesion • One Job • Consistency
    24. 24. Naming Tips • The more local the smaller the variable name • Consistent idioms • Magic numbers are not logical - proprietary knowledge thats not transferrable
    25. 25. Reusability • Abstract • Useful • Named Appropriately
    26. 26. "I dont like bad Abstractions!" -anonymous
    27. 27. "I dont like bad Abstractions!" -anonymous
    28. 28. Refactorability • Insulate change • "if its ugly put it in a box." • Name, Name, Name
    29. 29. E.g. • CMS • Rules Engine • Database
    30. 30. E.g. • Differentiator • High Reuse • Critical
    31. 31. LogicalHardWork + Naming & = Structure Simple Elegance
    32. 32. "We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard" -John F. Kennedy, September 12, 1962
    33. 33. Resources:http://www.infoq.com/presentations/Simple-Made-EasyRich Hickey - Author of Clojure http://www.carlopescio.com/2010/11/notes-on-software-design-chapter-12.htmlCarlo Pescio - Entanglementhttp://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.htmlCarlos Pescio - Naminghttp://www.telegraph.co.uk/technology/apple/9283706/Jonathan-Ive-interview-simplicity-isnt-simple.htmlJonathan Ive - Simplicity isnt SimpleBooks:Elements of Logic - Richard Whately (1826)The Practice of Programming - Brian Kernighan, Rob PikeRefactoring - Martin Fowler
    34. 34. Comments for CodeFaire 2012:https://joind.in/6720Jim Siegienski:jim.siegienski@gmail.com@JimSiegienskihttp://www.linkedin.com/in/jimsiegienskihttp://www.slideshare.net/jimsiegienski
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×