Simple is hard

  • 652 views
Uploaded 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 – …

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!

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
652
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
3
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    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

  • 1. SimpleisHard
  • 2. Jim Siegienski Architect
  • 3. Simple: easilyunderstood; presenting no difficulty.
  • 4. Complex: hard tounderstand or deal with.
  • 5. Easy: requiring no great labor or effort.
  • 6. Hard: difficult to do oraccomplish; fatiguing; troublesome.
  • 7. Postulate: logic - as a setof instructions - is easy for developers.
  • 8. Postulate: structure - as adisparate organization of logic - is hard for developers.
  • 9. Creation -> HardComprehension & Use -> Easy
  • 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. E = mc^2 quod erat demonstrandum E Pluribus Unuma^2 + b^2 = c^2 circumference / diameter = pi
  • 12. Whatever is predicated universally for a given class is predicated for anything within that class.
  • 13. Syllogism
  • 14. If all A are Band C is in Athen C is B
  • 15. A B C BC A
  • 16. If all Getters only get recordsand GetPerson is a getterGetPerson only gets a record!
  • 17. "Systems breakdown whenassumptions areinvalidated." -Jimski
  • 18. Why Structure? • One big file? • What is a Helper? • What is a Utils?
  • 19. Structure is abyproduct of naming andclassification.
  • 20. • Logical • Random• Analytical • Synthesizing• Parts • Holistic
  • 21. ReadabilityReusabilityRefactorability
  • 22. Readability • Clarity • Purpose • Code Wants to be Stoopid
  • 23. Naming • Cohesion • One Job • Consistency
  • 24. Naming Tips • The more local the smaller the variable name • Consistent idioms • Magic numbers are not logical - proprietary knowledge thats not transferrable
  • 25. Reusability • Abstract • Useful • Named Appropriately
  • 26. "I dont like bad Abstractions!" -anonymous
  • 27. "I dont like bad Abstractions!" -anonymous
  • 28. Refactorability • Insulate change • "if its ugly put it in a box." • Name, Name, Name
  • 29. E.g. • CMS • Rules Engine • Database
  • 30. E.g. • Differentiator • High Reuse • Critical
  • 31. LogicalHardWork + Naming & = Structure Simple Elegance
  • 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. 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. Comments for CodeFaire 2012:https://joind.in/6720Jim Siegienski:jim.siegienski@gmail.com@JimSiegienskihttp://www.linkedin.com/in/jimsiegienskihttp://www.slideshare.net/jimsiegienski