際際滷

際際滷Share a Scribd company logo
Simple
is
Hard
Jim Siegienski
        Architect
Simple: easily
understood; presenting no
        dif鍖culty.
Complex: hard to
understand or deal with.
Simple is hard
Simple is hard
Simple is hard
Easy: requiring no great
    labor or effort.
Hard: dif鍖cult to do or
accomplish; fatiguing;
    troublesome.
Simple is hard
Simple is hard
Simple is hard
Postulate: logic - as a set
of instructions - is easy for
         developers.
Simple is hard
Postulate: structure - as a
disparate organization of logic
   - is hard for developers.
Simple is hard
Creation -> Hard

Comprehension & Use -> Easy
"Our goal is to try to bring a calm
     and simplicity to what are
incredibly complex problems so that
    you're not aware really of the
  solution, you're not aware of how
   hard the problem was that was
          eventually solved."
                          -Jonathan Ive
E = mc^2
 quod erat demonstrandum

                           E Pluribus Unum




a^2 + b^2 = c^2


                  circumference / diameter = pi
Whatever is predicated universally
 for a given class is predicated for
     anything within that class.
Simple is hard
Simple is hard
Syllogism
Simple is hard
If all A are B
and C is in A
then C is B
A   B
    C   B

C

    A
If all Getters only get records
and GetPerson is a getter
GetPerson only gets a record!
Simple is hard
"Systems break
down when
assumptions are
invalidated."
           -Jimski
Why Structure?

            One big 鍖le?

            What is a Helper?

            What is a Utils?
Structure is a
byproduct of
 naming and
classi鍖cation.
Simple is hard
Simple is hard
Simple is hard
Simple is hard
 Logical       Random

 Analytical    Synthesizing

 Parts         Holistic
Simple is hard
Simple is hard
Readability
Reusability
Refactorability
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 are not logical -
         proprietary knowledge that's not
         transferrable
Reusability

          Abstract

          Useful

          Named Appropriately
Simple is hard
Simple is hard
"I don't like bad Abstractions!"
                    -anonymous
"I don't like bad Abstractions!"
                    -anonymous
Refactorability

            Insulate change

            "if it's ugly put it in a box."

            Name, Name, Name
Simple is hard
Simple is hard
Simple is hard
E.g.

        CMS

        Rules Engine

        Database
Simple is hard
Simple is hard
E.g.

        Differentiator

        High Reuse

        Critical
Logical
Hard
Work   +   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
     easy, but because they are hard"
    -John F. Kennedy, September 12, 1962
Simple is hard
Resources:
http://www.infoq.com/presentations/Simple-Made-Easy
Rich Hickey - Author of Clojure

http://www.carlopescio.com/2010/11/notes-on-software-design-chapter-12.html
Carlo Pescio - Entanglement

http://www.carlopescio.com/2011/04/your-coding-conventions-are-hurting-you.html
Carlos Pescio - Naming
http://www.telegraph.co.uk/technology/apple/9283706/Jonathan-Ive-interview-simplicity-isnt-simple.html
Jonathan Ive - Simplicity isn't Simple

Books:
Elements of Logic - Richard Whately (1826)
The Practice of Programming - Brian Kernighan, Rob Pike
Refactoring - Martin Fowler
Comments for CodeFaire 2012:
https://joind.in/6720

Jim Siegienski:
jim.siegienski@gmail.com
@JimSiegienski
http://www.linkedin.com/in/jimsiegienski
http://www.slideshare.net/jimsiegienski
Simple is hard

More Related Content

Simple is hard

Editor's Notes