Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build to Last

blowmage
October 10, 2015

Build to Last

How to design rails apps to avoid a rewrite in 5 years.

blowmage

October 10, 2015
Tweet

More Decks by blowmage

Other Decks in Programming

Transcript

  1. Build to last
    Build to last
    How to design rails apps to
    avoid a rewrite in 5 years

    View full-size slide

  2. Super excited!

    View full-size slide

  3. first post!

    View full-size slide

  4. larubyconf noobs?

    View full-size slide

  5. rubyconf noobs?

    View full-size slide

  6. ruby/rails noobs?

    View full-size slide

  7. programming noobs?

    View full-size slide

  8. “the problem”

    View full-size slide

  9. “the pain”

    View full-size slide

  10. “the rewrite”

    View full-size slide

  11. “the question”

    View full-size slide

  12. “the answer”

    View full-size slide

  13. You’re doing it wrong

    View full-size slide

  14. You’re thinking about it wrong

    View full-size slide

  15. What is software?

    View full-size slide

  16. “instructions for
    a computer to follow”

    View full-size slide

  17. https://mitpress.mit.edu/sicp/

    View full-size slide

  18. “Our design of this introductory
    computer-science subject reflects two
    major concerns…”

    View full-size slide

  19. “First, we want to establish the idea that a computer
    language is not just a way of getting a computer to
    perform operations but rather that it is a novel formal
    medium for expressing ideas about methodology…”

    View full-size slide

  20. “Thus, programs must be written for
    people to read, and only incidentally for
    machines to execute…”

    View full-size slide

  21. “Second, we believe that the essential material to be
    addressed by a subject at this level is not the syntax
    of particular programming-language constructs, nor
    clever algorithms for computing particular functions
    efficiently, nor even the mathematical analysis of
    algorithms and the foundations of computing…”

    View full-size slide

  22. “…but rather the techniques used to
    control the intellectual complexity of
    large software systems.”

    View full-size slide

  23. intellectual complexity

    View full-size slide

  24. “Underlying our approach to this subject
    is our conviction that “computer science”
    is not a science and that its significance
    has little to do with computers…”

    View full-size slide

  25. “The computer revolution is a revolution
    in the way we think and in the way we
    express what we think.”

    View full-size slide

  26. we think about software wrong

    View full-size slide

  27. we express what we think
    about software wrong

    View full-size slide

  28. Big Ball of Mud

    View full-size slide

  29. “A big ball of mud is a casually,
    even haphazardly, structured
    system…”

    View full-size slide

  30. Its organization, if one can call it
    that, is dictated more by
    expediency than design.”

    View full-size slide

  31. http://www.laputan.org/mud/

    View full-size slide

  32. The Big Ball of Mud says:
    “You are not smart.”

    View full-size slide

  33. But you are smart!

    View full-size slide

  34. Techical Debt

    View full-size slide

  35. https://youtu.be/pqeJFYwnkjE

    View full-size slide

  36. Communicate ideas
    (intellectual complexity)
    in a better way

    View full-size slide

  37. (sekrit sauce)

    View full-size slide

  38. Anthropomorphization

    View full-size slide

  39. Counterintuitive

    View full-size slide

  40. Code neighborhoods

    View full-size slide

  41. Testing is fun!

    View full-size slide

  42. Testing is easy!

    View full-size slide

  43. (Once you get the hang of it.)

    View full-size slide

  44. Testing is how you avoid a rewrite

    View full-size slide

  45. “Often people, especially computer engineers,
    focus on the machines. They think, "By doing
    this, the machine will run faster. By doing this,
    the machine will run more effectively. By doing
    this, the machine will something something
    something." They are focusing on machines…”

    View full-size slide

  46. “But in fact we need to focus on humans, on
    how humans care about doing programming
    or operating the application of the machines.
    We are the masters. They are the slaves.”
    Yukihiro Matsumoto

    View full-size slide

  47. Be a wise master

    View full-size slide

  48. Mike Moore
    blowmage

    View full-size slide

  49. Mike Moore
    blowmage
    Stickers!

    View full-size slide